`randoman`

Quelques commandes GNU utiles

Publié le 06.12.2019
Temps de lecture estimé : ~ 21 min.

“This is the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.” — Douglas McIlroy

J’adhĂšre plutĂŽt bien Ă  cette philosophie et dans la quĂȘte de venir un meilleur adepte et de dĂ©couvrir de nouveau outils en ligne de commande ; je me suis concoctĂ© un jour randoman, une commande pour aller chercher alĂ©atoirement une entrĂ©e du manuel.

Voici une liste de trouvailles intéressantes.

timedatectl, controle le temps et la date du systÚme

Quelques commandes intéressantes:

  • status
  • show
  • set-time
  • set-timezone

attr, attributes Ă©tendus pour les objets du systĂšme de fichiers XFS

attr permet d’attacher des paires (clef, valeur) sur ces objets pour stocker, notamment, des mĂ©ta donnĂ©es.

Les objets sont gĂ©nĂ©ralement des fichiers, dossiers, lien symboliques, appareils 


Deux espaces d’adresses existent: un root, un user.

4 opĂ©rations — auto-documentĂ©es — sont proposĂ©es par attr:

  • GET
  • LIST
  • REMOVE
  • SET/CREATE

tar(1) et cpio(1) ne stockent pas les attributs mis en place grĂące avec attr, mais xfsdump(8) peut.

fsc, compilateur hors-ligne rapide pour Scala 2

fsc fonctionne par soumission de jobs de compilation Ă  un daemon de compilation. Certains Ă©lĂ©ments sont mis en cache, ce qui permet une execution plus rapide pour les compilations suivantes. Cela vaut le coup pour des compilations multiples sur un mĂȘme classpath.

3 variables d’environnement utilisĂ©es:

  • JAVACMD : la commande java Ă  utiliser pour executer le code Scala
  • JAVA_HOME : pour localiser la commande Java
  • JAVA_OPTS : pour passer des options Ă  la commande

Écrit par Martin Badass Odersky et d’autres membres de l’équipe de dĂ©veloppement de Scala.

fold, wrap chaque ligne pour tenir dans une largeur spécifique

pwdx, donne le dossier actual d’un process

Voilà : un pwdx, c’est tout.

pmap, donne la memory map d’un ou de plusieurs processus

Rien Ă  ajouter — dĂ©cidĂ©ment !

xpath, un script pour requĂȘter des documents XML

Se base sur un module perl. L’entrĂ©e standard est utilisĂ©e par dĂ©faut.

Quelques commandes pour trouver des choses. Quelques options.

Rien de trop spécial.

clang, the compilateur C, C++ et Objective-C

Fonctionalités mises au point par clang:

  • prĂ©-traitement
  • parsing
  • optimisation
  • gĂ©nĂ©ration de code
  • assembleur
  • Ă©diteur de liens

Mode de fonctionnement:

  1. un driver controle l’execution gĂ©nĂ©rale d’autres outils comme le compilateur, l’assembleur et l’éditeur de lien. Son interaction via clang n’est pas visible ;
  2. prĂ©-traitement : les fichiers sources sont tokenizĂ©s, les macros sont Ă©tendues ainsi que les directive d’inclusion. La sortie est un fichier .i, .ii, ou .mi ;
  3. parsing et analyse sĂ©mantique : ce niveau construit un arbre syntaxique puis applique une analyse syntaxique dessus. C’est ici que son gĂ©nĂ©rĂ© la majoritĂ© des avertissements et erreurs de compilation. Est produit si succĂšs un “Abstract Syntax Tree” (AST) ;
  4. La gĂ©nĂ©ration de code converti cet arbre en un code bas niveau intermĂ©diaire (appelĂ© en anglais “LLVM IR”) et ensuite en code machine. C’est dans cette gĂ©nĂ©ration que se passe la majoritĂ© des optimisations. La sortie de cette Ă©tape, qui est encore un fichier, est appelĂ© .s ou “assembly file” ;
  5. L’assemblage traduit la sortie du compilateur dans un fichier .o ou « fichier objet » ;
  6. L’éditeur de liens lie plusieurs fichiers objets en un exĂ©cutable ou librairie dynamique. La sortie est soit: un fichier a.out, un fichier .dylib, ou un fichier .so.

Vient aussi une analyse statique qui permet de trouver éventuellement des bugs en parcourant le code source.

Au niveau des options, il y en a des masses — comme c’est gĂ©nĂ©ralement le cas pour ce genre d’outils.

Pour ce qui est des variables d’environnement, certaines peuvent ĂȘtre renseignĂ©es pour changer le chemin lors de l’exĂ©cution.

pic, compile des images pour troff ou TeX

pic compiles des description d’images qui sont compris par TeX ou par troff, et fait partie de la documentation du systùme de formattage de document groff.

Dans un tel document, tout ce qui est présent entre .PS et .PE sera changé. Il y a plusieurs options pour définir le comportement vis-à-vis de ces deux indications1.

Il y a une version GNU de pic et une autre version originale (voir /usr/share/doc/groff/pic.ms).

On peut faire vraiment beaucoup de gĂ©nĂ©ration d’images, en particulier pour ce qui est graphe.

systemd-firstboot et systemd-firstboot.service, initialise le systÚme basique avant de booter sur le systÚme

Initialise le systÚme le plus simple sur le premier boot ou de maniÚre optionelle sur une image systÚme qui a été créée.

Le service est lancĂ© si ConditionFirstBoot=yes est satisfait. GĂ©nĂ©ralement /etc est vide. Pour plus d’informations voir systemd.unit(5).

Plusieurs informations sont cherchées :

  • la langue locale avec LANG et LC_MESSAGES
  • le type de clavier
  • le fuseau horaire
  • le nom de la machine
  • l’id de la machine
  • le mot de passe de root

Ces informations — si elles ne sont pas retrouvĂ©es — sont demandĂ©es Ă  l’utilisatrice ou utilisateur.

sqlite3, l’interface en ligne de commande pour SQLite 3

SQLite est un SGBDR (SystĂšme de Gestion de Bases de DonnĂ©es Relationelles) lĂ©ger, souvent utilisĂ© pour de petites applications, peu concurrentes, ou embarquĂ©es — mais pas que.

sqlite3 est une CLI (command line interface) : cet outils est à SQLite ce que psql est à PostGRESQL.

ATTACH peut-ĂȘtre utilisĂ©e pour rassembler dans une mĂȘme sessions plusieurs bases de donnĂ©es.

On peut directement requĂȘter grĂące à:

$ sqlite3 -line <base de donnĂ©es>.db "REQUÊTE SQL"

Quelques méta-commandes intéressantes :

  • .help
  • .databases
  • .backup ?DB? FILE
  • .clone NEWDB
  • .mode MODE ?TABLE?
  • .output
  • .shell COMMANDE ARGS

Et quelques options:

  • -help
  • -csv
  • -echo
  • -[no]header
  • -html
  • -stats

Certaines valeurs de configuration — au niveau du prompt et de l’affichage — peuvent ĂȘtre indiquĂ©es dans le profile ~/.sqliterc. Elles peuvent ĂȘtre aussi donnĂ©es via la commande -init.

fips-mode-setup, vérifie et activate ou désactrive le mode FIPS du systÚme

Quand le mode FIPS du systÚme est activé, cela peut lancer son installation et changer le rÚgles de cryptographie du systÚme vers ce nouveau mode.

Le boot loader est modifiĂ© en consĂ©quence — fips=1 et boot=<boot-device> sont rajoutĂ©s. Le drapeau pour ce mode se trouve dans le fichier /proc/sys/crypto/fips_enabled.

sg, exécute une commande avec un group ID différent

sg marche comme newgrp mais accepte une commande. Cette commande sera exĂ©cutĂ©e avec /bin/sh. Pour d’autres shells, la commande doit ĂȘtre passĂ©e entre quotes.

La configuration se trouve dans /etc/login.defs et ne comporte qu’un paramùtre :

  • SYSLOG_GB_ENAB, un boolean qui active les logs du systĂšme pour sg

sum, performe le checksum et compte les blocs d’un fichier

Commande minimaliste, à la sortie qui l’est tout autant.

Prend un ou plusieurs fichiers et affiche leur checksum et leurs nombres de blocs.

Quelques options:

  • -r pour utiliser l’algorithme de BSD pour la somme (blocs de 1K bytes);
  • -s pour utiliser l’algorithme de System V poyr la somme (blocs de 512 bytes)
  • --help (🙃)
  • --version

mandb, crĂ©e et met Ă  jour les caches de l’index des pages du manuel

mandb est typiquement utilisĂ© pour rĂ©indexer les pages du manuel. Ces caches contiennent principalement des informations sur l’état actuel des pages ainsi que sur l’endroit oĂč elles sont stockĂ©es. Cela permet un affichage plus rapide des pages.

Lorsqu’utilisĂ©, mandb avertit des mauvais formattage de ROFF , des noms de pages buggy, ainsi des pages qui ne peuvent ĂȘtre parsĂ©es avec whatis.

Plusieurs structures de donnĂ©es pour le stockage existent. Supportent des mises Ă  jours asynchrones (ponctuelles ?), et des bases d’arbres binaires et de table de hachages sont proposĂ©es. Cet index peut ĂȘtre stocké dans:

  • /var/cache/man/index.(bt|db|dir|pag) pour un systĂšme FHS-complient
  • /var/catman/index.(bt|db|dir|pag) pour un systĂšme FSSTND-complient

Quelques options intéressantes:

  • --user-db (-D), crĂ©Ă©e une base de donnĂ©es pour l’utilisateur seulement ;
  • --no-purge (-p)`, ne cherche pas les pages qui ont Ă©tĂ© supprimĂ©es pour les enlever de l’index ;
  • --test (-t), rĂ©alise des tests d’exactitude sur la hierarchie des pages. Les bases de donnĂ©es existantes ne sont pas alterĂ©es par cette commande ;
  • --filenal (-f), met Ă  jour les entrĂ©es pour le fichier donnĂ©. Cette option est utilisĂ©e conjointement avec -p et dĂ©sactive -c et -s ;
  • --config-file (-C), change le fichier de configuration.

which, montre le chemin complet d’une commande

which prend simplement des arguments et retourne pour chaque le chemin complet qui serait pris si l’argument est une commande executable.

which parse la variable d’environnement PATH et utilise le mĂȘme algorithme que celui qu’utilise bash.

Elle retourne le nombre d’arguments qui n’ont pas pu ĂȘtre retrouvĂ©s.

raname, renome un ensemble de fichiers

Toi, qui t’étais amusĂ©â‹…e Ă  faire des rampes de pipes, de xargs et de mv avec des regex pour renommer tes fichiers, cette commande va te combler.

rename prend trois choses : - une expression ; - un remplacement ; - un pattern pour les fichiers.

pour changer le nom d’un ensemble de fichiers filtrĂ©s par le pattern et suivant l’expression et un nouvel ensemble de fichiers dont la partie matchant l’expression Ă  Ă©té remplacĂ©e.

Par exemple — et similairement à ce qui apparaüt dans le man :

Avec des fichiers courge1, 
, courge9, the commands

rename courge courge0 courge??

les renommera en courge01, 
, courge09.

On peut changer les extensions de fichiers facilement de la mĂȘme maniĂšre : par exemple pour passer des fichiers texte Ă  des fichiers CSV :

rename .txt .csv *.txt

Quelques option qui valent le coup :

  • -s, --symlink, pour ne pas renomer un lien symbolique mais sa cible ;
  • -n, --no-act, pour ne pas faire de changement (utile quand couplĂ© avec -v pour comprendre ce que serait le rĂ©sultat);
  • -o, --no-overwrite, pour ne pas rĂ©Ă©crire sur les fichiers dĂ©jĂ  existant ;

dotty, un editeur de graphe customisable

dotty permet de réaliser des graphes pour des applications graphiques.

Cet éditeur est construit sur :

  • dot : qui dessine des graphes orientĂ©s ;
  • lefty : qui est un Ă©diteur programmable pour des dessins techniques ;

dotty est similaire Ă  awk et au C, et reprend les interfaces de lefty.

Les rendus sont faits grĂące Ă  des processus dot qui communiquent via des pipes avec lefty.

dotty fait apparaĂźtre le graphe s’il a des attributs xdot. Deux options peuvent ĂȘtre utilisĂ©es pour changer le mode de prĂ©sentation et le niveau de messages.

mesg, affiche les messages d’autres utilisateurs

mesg est un utilitaire invoquĂ© par l’utilisatrice ou l’utilsateur pour permettre aux autres personnes d’écrire sur sa sortie d’erreur standard. Si les accĂšs sont donnĂ©es, des programmes comme talk ou write peuvent ĂȘtre utilisĂ©s pour envoyer des messages sur le

Traditionellement, les accĂšs sont donnĂ©es Ă  l’avance ; pour une bonne configuration, il est gĂ©nĂ©ralement courant de dĂ©sactiver cela.

$ mesg n # désactive
$ mesg y # active

Les options existantes sont classiques.

huspell, un correcteur d’orthographe et analyseur morphologique

hunspell vĂ©rifie et propose de corriger l’orthographe de mots de fichiers passĂ©s en arguments. Comme d’autres correcteurs, il indique les occurences de mots mal orthographiĂ©s mais laisse le choix quant au remplacement. Il dĂ©tecte les mots mal-orthographiĂ©s des mots inconnus.

hunspell contient beaucoup de fonctionnalitĂ©: il peut vĂ©rifier plus que de l’orthographe — des URL et de bons guillemets —, il s’interface avec \(\TeX\) et \(\LaTeX\) ou mĂȘme XML.

Les variables d’environnement sollicitĂ©es sont LC_ALL, LC_MESSAGES et LANG principalement et permettent de trouver le⋅s bon⋅s dictionnaire⋅s à utiliser.

Il y a deux autres pages pour expliquer les autres fonctionnalités de hunspell qui se base sur le programme Ispell.

hunspell est aussi décrit comme stemmer2.

geoiplookup, trouve le pays d’une adresse IP ou d’un nom d’hîte

C’est une commande simple qui utilise la librairie et base de donnĂ©es de GeoIP pour trouver le pays d’origine d’une machine.

On trouve facilement que le reverse proxy d’Amazon pour la France se trouve en Ireland.

$ geoiplookup amazon.fr
GeoIP Country Edition: IE, Ireland

Les données de GeoIP sont généralement installées dans /usr/share/GeoIP.

factor`, factorise des nombre

Rien de plus simple :

$ factor 1337
43: 43
1337: 7 191

xzmore affiche des fichiers textes compressés

xzmore est un filtre qui permet l’inspection de fichier compressĂ©s sous xz ou lzma.

Le pager par dĂ©faut est more mais peut ĂȘtre changĂ© pour autre chose en modifiant la valeur de la variable d’environement PAGER. lzmore est aussi proposĂ© pour retro-compatibilitĂ© avec les outils LZMA.

rnano, l’éditeur nano en mode restreint

Le mode restreint de nano ne permet que de modifier certains fichiers et ne permet pas d’accĂ©der Ă  tous les fichiers, ni mĂȘme au shell.

Plus exactement, dans ce mode nano:

  • ne lit pas le profile (typiquement ~/.nanorc) ;
  • ne permet pas de pauses ;
  • ne peut Ă©crire ou lire des fichiers autres que spĂ©cifiĂ©s lors de l’appel avec le shell;
  • ne permet pas de sauvegarder le fichier sous un autre nom ;
  • ne permet pas de rajouter du texte en dĂ©but ou en fin d’un fichier ;
  • ne procĂšde pas Ă  des sauvegardes rĂ©guliĂšres d’édition.

tty, affiche le numéro du terminal connecté à la sortie standard

VoilĂ .

write, envoie un message à quelqu’un d’autre

On avait dĂ©jĂ  vu mesg pour activer les messages; write permet d’en envoyer Ă  quelqu’un d’autre sur son terminal.

Si la personne en face est connectée à plusieurs terminal, il est alors possible de choisir lequel utiliser.

Sur un systĂšme pas configurer, write peut ĂȘtre extrĂȘmement relou si vous voulez bosser, et extremement efficace si vous voulez troller.

chage, change les informations d’expiration de mot de passe

chage est utilisĂ© pour changer la frĂ©quence de renouvellement du mot de passe d’une utilisatrice ou d’un utilisateur.

Cette frĂ©quence peut ĂȘtre changĂ©e Ă  l’aide de plusieurs options:

  • -l, --list : pour obtenir les informations actuelles sur un compte ;
  • -d, --lastday : indiquer le prochain/dernier jour avant de changer son mot de passe ;
  • -E, --expiredate : fournie la date d’expiration ;
  • -I, --inactive : indique le nombre de jour avant que le compte d’une personne soit bloquĂ© si celle-ci n’a pas changĂ© son mot de passe ;
  • -W, --warndays : indique le nombre de jours oĂč des avertissements seront envoyĂ©s avant expiration.

chage doit le plus souvent ĂȘtre executĂ© avec privilĂšges. chage utilise /etc/passwd et /etc/shadow.

locale, retourne les informations sur les paramÚtres de localité du systÚme

locale affiche les informations de localitĂ© du systĂšme : c’est Ă  dire ceux en lien avec la ou les langues utilisĂ©es sur le systĂšme, mais pas uniquement : elle expose aussi les paramĂštres d’affichage, de prĂ©sentation, d’impression, de monnaie, de mesures, et de contact propre Ă  chaque pays.

Elle s’appuie sur deux fichiers : /usr/lib/locale/locale-archive et /usr/share/i18n/locales.

dox2unix, conversion de fichiers texte de DOS/Mac vers Unix

dox2unix vient avec unix2dox du paquet Dos2unix. Ils permettent de convertir les fichier d’un de ces formats dans l’autre.

Une nouvelle ligne a un format différent entre DOS, Mac et Unix:

  • sous Windows, on parle de “CRLF” : c’est un ensemble de deux caractĂšres : le retour chariot (“Carriage Return” abrĂ©gĂ© “CR”) et d’un saut de ligne (“Line Feed” abrĂ©gĂ© “LF”).
  • sous Unix, il s’agit uniquement de “LF”
  • sous Mac, il s’agissait avant de “CR”, il s’agit maintenant de “LR”.

Ces utilitaires peuvent aussi convertir l’encodage des fichiers de l’UTF-16 (utilisĂ© par Windows) Ă  l’UTF-8 (utilisĂ© par Unix). Les fichiers binaires sont ignorĂ©s par dĂ©faut. Idem pour les liens symboliques.

Il y a plein d’options, dont une qui permet de clarifier le comportement de ces deux commandes vis-à-vis de Mac.

txtconv, change l’encodage des fichiers texte

txtcov s’appuie sur TECkit. L’usage est assez simple.

column, fait des colonnes avec des lignes

3 modes:

  • les colonnes avec les lignes
  • les lignes avant les colonnes
  • table, mode par dĂ©faut

L’entrĂ©e est prise d’un fichier, sinon de l’entrĂ©e standard.

COLUMNS est utilisĂ©e pour dĂ©terminer la largeur de l’écran.

tr, modifie ou supprime des caractÚres

Transforme ou supprime des caractĂšre de l’entrĂ©e gĂ©nĂ©rale Ă  la sortie gĂ©nĂ©rale.

Des ensembles de caractÚres sont à donner pour effectuer des opérations avec :

$ tr [OPTION] SET1 [SET2]

Plusieurs options pour plusieurs usages:

  • -C, pour utiliser le complĂ©ment de SET1
  • -d, pour supprimer les caractĂšre de SET1
  • -s, pour supprimer des occurences rĂ©pĂ©tĂ©es d’une lettre et les remplacer par cette lettre uniquement
  • -t, tronque SET1 pour arriver Ă  la taille de SET2

Les ensembles (SET1, SET2) sont constitués de range de lettres, comme utilisées pour les expressions réguliÚres.

xrefresh, rafraßchit une partie ou tout un écran X

C’est un simple programme X qui cause une partie de l’écran ou tout l’écran a ĂȘtre rafraĂźchit. IdĂ©al quand il y a un bug graphique ou un crash. L’écran clignote avant de se relancer.

Quelques arguments:

  • -white pour utiliser un fond blanc
  • -black idem pour le noir
  • -solide color idem pour une couleur spĂ©cifique
  • -root pour utiliser le gestionnaire root des fenĂȘtres
  • -none par defaut, repeint pour les fenĂȘtres
  • -geometry WxH+X+Y pour indiquer une portion de l’écran
  • -display pour selectioner l’écran en question

uuidgen, retourne un nouveau uuid.

Cette commande renvoit un identifiant unique universel (UUID) grĂące Ă  la library libuuid(3). Cet UUID peut rĂ©sonnablement ĂȘtre considĂ©rĂ© comme Ă©tant unique Ă  l’échelle de la machine locale mais aussi des autres machines.

Trois types de UUID peuvent ĂȘtre obtenus :

  • avec -t pour des UUID basĂ©s sur le temps ;
  • avec -r pour des UUID reposant sur de l’alĂ©atoire ;
  • avec -m ou -s pour des UUID reposant sur du hashage.

Par défaut uuidgen génére un de la seconde catégorie si un bon générateur de nombre aléatoire est disponible ; dans le cas contraire un de la premiÚre catégorie est généré.

Le dernier type de UUID est gĂ©nĂ©rĂ© avec une des options --md5 et --sha1 — qui dĂ©finissent le choix de l’algorithme de hashage Ă  utiliser —, avec un espace de nom qui peut ĂȘtre un UUID ou une base d’UUID — et avec un nom. La concatĂ©nation de l’espace de nom et du nom une fois hachĂ© donne l’UUID. C’est donc une valeur prĂ©visible.

w, montre est là et qui fait quoi

En quelques mots, w est la meilleure commande pour faire le flic ou stalker sur un systÚme.

w montre les informations sur les utilisateurs actuellement sur la machine et sur les processus qu’ils utilisent.

w utilise le pseudo systÚme de fichiers proc et /var/run/utmp et en agrÚge les informations.

Le header montre depuis combien de temps le systĂšme est en train de fonctionner, le nombre d’utilisateurs actuellement prĂ©sents ainsi que la charge moyenne du systĂšme pour les 1, 5 et 15 derniĂšres minutes.

Sont rapportées pour chaque utilisateur:

  • le nom de celui-ci ;
  • le nom du terminal attaché ;
  • la date de connexion ;
  • la pĂ©riode de prĂ©sence ;
  • l’hĂŽte distante s’il y a ;
  • le PCPU — temps processeur total pour le processus en cours ;
  • le JCPU — temps processeur total pour l’utilisateur depuis connexion ;
  • la ligne de commande exĂ©cutĂ©e pour le processus principal ;

DiffĂ©rentes options sont prĂ©sentes pour changer l’affichage.

chsh, change le shell de connexion

Par défaut, lorsque vous vous connectez sur une machine *nix, bash est votre shell de base.

Si vous voulez changer celui-ci, vous pouvez utiliser chsh.

chsh -l liste les shells disponibles et chsh -s fish change votre shell pour fish.

Vous pouvez aussi spĂ©cifier le nom de quelqu’un pour changer son shell : chsh -s nologin charlie empĂȘchera Ă  charlie de se connecter.

pdfinfo, affiche les informations de pdf

Les pdf contiennent des des données stockées dans un dictionnaire nommé Info.

Ce dictionnaire comprendre :

  • le titre
  • le sujet
  • les mots clefs
  • l’auteur
  • le crĂ©ateur
  • le producteur
  • la date de crĂ©ation
  • la date de modification

pdfinfo affiche cela en plus de :

  • si le document est taguĂ©
  • la forme de celui-ci
  • s’il contient du JavaScript
  • le nombre de page
  • s’il est chiffrĂ©
  • s’il est possible de l’imprimer ou d’en faire des copies (si chiffrĂ©)
  • le format des pages
  • la taille du fichier
  • la version pdf
  • d’autres mĂ©ta-donnĂ©es, si demandĂ©

Des options peuvent ĂȘtre indiquĂ©es pour n’afficher qu’une partie des donnĂ©es ou pour accĂ©der Ă  certaines donnĂ©es quand le document est chiffrĂ©.

fmt, a formateur simple de text

Formatte chaque paragraphe de fichiers en Ă©crivant sur la sortie standard. Quand aucun fichiers est soumis, lit l’entrĂ©e standard.

Les arguments obligatoires pour les options longues le sont aussi pour les courtes.

pldd, montre les objets dynamiques partagés liés à un processus

La commande pldd affiche une liste des objets dynamiques partagĂ©s d’un processus avec un ID spĂ©cifique. La liste inclue les bibliothĂšques ouvertes dynamiquement avec dlopen. Elle n’est pas spĂ©cifiĂ©e dans POSIX.1.

lsof a un comportement similaire. Idem pour gdb avec un peu d’alambication.

Mais pour le moment pldd se bloque et n’est donc pas utilisable.

pinky, un joli affichage d’information d’utilisateur

Certaines options peuvent ĂȘtre spĂ©cifiĂ©es pour inclure ou non certaines informations dans ce qui est retournĂ©.

sync, synchronize les fichiers sur un medium persistent

Synchronise le cache dans un stockage persistent. Si un ou plusieurs fichiers sont spĂ©cifiĂ©s, ne synchroniser qu’eux.

Deux options pour sélectionner quelle persistence appliquer.

env, lance un programme dans un environement modifié

env prend un ensemble de noms et de valeurs et lance ensuite une commande.

Certaines options sont intéressantes :

  • -C, --chdir=dir : pour changer de dossier pour dir ;
  • -i, --ignore-environment : pour commencer avec un environnement vide ;
  • -u, --unset=NAME : pour retirer une variable de l’environement ;

env est typiquement utilisĂ© dans les scripts bash pour ĂȘtre sur de se placer dans l’environnement convenu. On le trouve sur le shebang avant le script.

Typiquement, on retrouve :


#! /usr/bin/env /bin/bash

# 
 le script bash

jp2a, La commande pour faire de l’ASCII art.

jp2a convertit une image jpeg en caractùre ASCII. Ideal pour faire de l’ASCII art.

On peut utiliser cela directement sur une image en local, pour imprimer du texte avec ou mĂȘme avec des images en ligne, par exemple avec celle-ci de la Grande Vague de Kanagawa :

Grande Vague de Kanagawa

Avec cette commande:

jp2a --width=120 --background=light https://upload.wikimedia.org/wikipedia/commons/a/a5/Tsunami_by_hokusai_19th_century.jpg

On obtient:

000KKKKKKKKKXXXXXXKXXXXXXKXXXXXXXXXXXNNNNXXNNXXXXXXXXNNNNNNXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXX
0KKKKKKKKKXXXXXXXXXXXXXXXXXXXXNNNNNXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNWNNNNNNNNNNNNNNNNNNNNXX
0KKKKK00KKKXXXXXXXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNWNNNNNNNNNNWNNNNNNNNNNNNXXNNNNNNNNXX
0KKKKKO0dXKXXXXXXXXXXXXXXXXXNNNNNNXNNNXKKKKXXNXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNWWWWWNNNNNNNNNNNNNNNNNNNNXXNNNNNNNNXX
00KKKKOKoKKXXXXXXXXXXXXXXXXNNNNNXKKKXNWWWWWWWWXXXKKXXXNNNNNNNNNNNNNNNNWWWNNNNNNNWWWWWWWWWNNNNNNNNNNNWNNNNNNNNNNNNNNNNNNX
00KKKK0XkXKXXXNXXXXXXNNNNNNNWXXXNWWWWWWWWWWWKO0KXXXXXNXXNNNNNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWNWNNNNNNNNNNNNNNNNNNNNNNNNNXX
KKKK0KOXxX0XXXNNXXXNNNNNNXXXXNWWWWWWWWWWNKXK0KKONNW0K0KNNXKXNNNNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWWWNNNNNNNNNNNXNNNNXXXNXXX
000kOKOXkX0KXXNNNNNNNNNKKNWWWWWWNKNXNWW0O0k0OX0K0KXOOX0X0O0KNNNXNNNNNWWWWWWWWWWWWWWWWWWWWWWWWWWWNNNNNXXXXXXXXXXXXXXXXXXK
0K0dO00NKx0KKXXXXNNNXKKXWWWWWWW0KOOcdOOKOo:x.,kKOKXXOKK0K0X00XXXXNNNWWNWWWWWWWWWWWWWWWWWWWNNNNNNNNXXXXXXXXXXXXXNXXXXXXKK
000l00OOOkO0KKKKKK00KNNWWWWWN000OK0:;,':xoc...:k0XKK0K0XXK0KKKKKNNNNNNNNNNWNNWWWWWWNNNNNNNNNNNNNNXXXXXXXXXXXXXNXXXXXXXKK
00Odk0Ok0O000KKKOKNNNNNNWWN0OOodl;:l..',..;''.'.;XNOX0NXXXXNWWNXOKOKXNNNNWNNNNWWNWWWNNNNNNNNNNXXNXXXXXXXXXXXXXXXXXXXXXXK
000dO0OO00000K00XNNNNNNNNNWl.c'';'.','..','.'.;,;,olckKX000KXKKKXKKXKXNNNNNNWNWWNNNNNNNNNNNNXNNNNXXXXXXXXXXXXXXXXXXXXXXK
000xO0000000OOXNNNNNNNNWWWWx.,'',..:,,'':...,,.....cONX0KK0XK0X0KNXWK0XNNNWNWNWWWNWWNNWWWWWNNNNNNXXXXXXXXXXXXXXXXXXXXXXX
0000000000OO0XNWWWNNNNWWWWWW0l:;o;';,'.;..':','.';:l0KX000K00KW0KNK0KNKKNNNNNNWWWWWWWNNNWWNWNNNWNNNNNNNNNNNNNNNNNNNNNXXX
xkOkkxxdokKNNNNWNNNXKXNWWWWWNWWWXOOc;.,,;';,,''c;cxKKNXO0X0KKXNWK0OONNNNNNNNNNWWWWWNNNNNNNNNNNNWNNNNNWNNNNNNNNNNNNNNNNNN
,,,,:lxOXNNNNNX0KXK0OKNWWWWKOKKNX0co';l;:;;,,.';cXNNNWNN0K0KXX00NKKKO0XNNNNNNNNNNWWWNNWWNWNNWNWWNWWNWWWNNNNNNNNNNNNNNNNN
cod0XXXXXNNNN00kKKkOkKNN0KNOOK0kKXXkKKxl:,,'..;:ONNNNNNNNNXXNNNXKNK0NXXNNNNNNNNNWNWNNNNWNWNNNNWNNNNNWWWNNNNNNNNNNNNNNNXX
XXX00KKOO0NX0dOXXNXKk0d00KX0OXK0XKKKK0KOOKkd;;;;0NNNNNNNNNNNNNNKXKKKXNNNNNNNNNNWWWWWNNNNNNNNNNNNNNWNNWWWWNNNNNNNNNNNXNWW
XXKX0kOOxOOkl,;oxoOO00xOO0Kd;c0ck;lKK0OK0o:c:.,:NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNWNNNNNNNNNNNNNNNNNNWNWNNNNNNNNNNNNNXNWWWX
XK0kkkOkOOOKk';,,'cXX00OO0X0lc;c:,'l'OkKol'';.,cNNNNNNNNNNNNNNNNNNNNNNNNNNNWNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXNWWWWN0
KkxkOxdlO0kOOxkc;,;xOO0OOXXXKXX0O',;''cclc.;','ckNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXWWWWWXX0
K0Okl0x,,c;:o:,:,:lkOO0xdodK00KXdx;c',;c:',',;:;cXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXXNNNNXKNXONWWWWXXKOk
O0d:;:0Oc:;',:.,:;cKx:;l:;,lkKO;lc;.,,;,oo;;d;',olKXXXXXXXXXXNNNNNNXNNNNNNNNNNNNXXXXXXXNXNXXXXXXXKKKXKKX0OO0OWWWWWK0Kxl:
00XKK0O0kko:',',:;,:l;,;:o,'c::l:;;,;clNWWWKOdo;.':O0KKKKKKXXXXXXXXXXXXXXXXXXXXKKKKKKKKKKKKK00OOOOOOkkxc:dKNWWWWNK0KKc:'
0xOOO0OKK0Okkocl.,,,,::;',,;,'',,c:c;xWWWWWWWWWWd;':dkkOkOkOOO0O00K00O0O00O00O0OO0OOOOOkkkkxxxxxxdddlll:xXWWWWWNKKOOd:,'
O0OkOkk0XKOxx0Oddl:;;,;'',;;:;;:,ldKWWWWWWWWWWWWW0:,;oxxOxddxxdxdxdxxxxxdxddxxxdxddddddddddooooool:;dcdKWWWWWWOxdc:;,:,'
OOOdokk00oxddxxkOOxkxxo::;;:,',;cxWWWWWWWNKWWWWWWNK0l,:cooooloollooolloooodOKOoooooooollllolllloo:ddkXWNXKXkkko,,'''';lx
00l.'c:;d''ckkxxkkO00OkkkxOkkkOKWWWWWWWWX00XNWWWWWW0KWKxxxllllllcccllllldONWWWNkllllllllllloloxkkKXWWWX0KkXxc;;,,cdkKKXW
XX0,',;:;,,,,cxdxdxxxO:';oxXWWWWWWWWWNKKKKOWWWWWWWWWXKXNKXXxllllllcoddoOXOk0WNKWNOdclllooldOOO0KNWXXNXXXOdl:;lx0OdokNWNN
XXX0o;:,,;';,;:k000kkXXKXWWWWWWWWX0KWK0K000KX0KWXKNNWWONKKNNNOo::::ccclxkc;;xl,llddc;;d0Ok0KXXX0KOkxkccxkkKNXOxolkXNXXXX
XXXXXXX00O0KXNNNNNNNNNKKKXNWWWNWNKKXKO0OXKNWXKXKKxkXKWWX0OxXWkKNKOko:;,'.;;;:c:ccclddxOKNNKXXNOl:ldxOKNNKOOxdokKNXXXXKko
XXXXXXXXNNNNNWXKXNNNNNX0OKKKNX0OKOKOXKNNWX0K0NKokxll0KNNXdl;k0odOXlxXXXNXKKKKKKXXNXNKKKKk0k00NXXXKX0OOko;,;cOXNXX0kkkl:;
XXXK0OO0OKXNXNKOKXNNNK0O0KXO0WWNNWNKKXWNWWX0KNN:cxoxdkxdOWKl':d,;ok:,l0XNWNNNNWWWWWWNNNNWNNNNNNX0xolclllod0WXKdllc;;;,',
XXXXXKO0KOk0K0KXXK;c000KX00OKNWXNWNKK00K000XKNWd;:ockOdc:kOXXxl;'''cd:'ckXXNNXXKXNNXXKOxdxkOxoddl;,''';xXWNNNNKOxxxoodxd
KXXXX0O0OKodoOkKdx:,xOOO00X0KKXKONXX0O0OKKKKKKNWl',,,:xkdoddoxOKko;.':c;',lkKNKo;cox0Xxldolcc:;;;,;;x0NXXXXXKxo:,'''.',;
KKXOo;;,k:oc:,,l,',cOOk0K000KOXK0X0OOXOx0dd0K0XWNd,,,.':ooddxxdddlxkxol;,,'.',cx0Oo:'':llc,;::lodx0NWNXX0xlcccclx0Odoool
KKo'',:l;:',,;,;d00kkdK::oxXK0OKKO00XNd':,locOXK0N0;''''';lxxxkdxxddddOOOOxddooc::cod;oc;d;lcldKNNNKxdollllccc::;;,''...
Kk.,c.;d:c;'.c,,;dl;'':,;,;coX00XNXNNNW0xd,;'kkcxXNNOo''''',coxk000OOOOOOOkOOOOOOOOkdkddddOKNNX0OOkxc;'.'.'..,;cllc::;,.
Kd''';;'',c.';,..;;,'.',.,.'cKNXKK':OXXd;x0x;;:;.lX0NNNk:'''.'':lxO0K00OKXXK0OOkxxOKKKKNNdlc:,''.....';cx0KXNNNNNNXXXXXX
Xc,,,;','.:'.:...:.,''':.,',oX00olxlxO'ooOKolll,..::k00KXN0kolc;,''''..'';:codk0KNNNNNNNNKOkdddxxkkO0XXXXKKKKKXKKKKKKKKK

Pas mal d’options sont disponibles ; en particulier:

  • -b, --border pour afficher le bord d’une image autour de l’image.
  • --clear pour rafraichir l’écran entre chaque conversion.
  • --colors pour utiliser les couleurs ANSI
  • -x, --flipx et -y, --flipy pour retourner l’image dans une direction donnĂ©e
  • --height=N, --width=N ou size=WxH pour spĂ©cifier l’aspect ratio de l’image
  • --background=(dark|light), pour appliquer plus ou moins de caractĂšres pour changer le background

Il y en a d’autres pour sortir de l’HTML, à la place.

entr, lance une commande lorsque des fichiers changent

Cette commande est trĂšs pratique lorsque vous voulez rafraĂźchir le rĂ©sultat d’une compilation

Cela peut par exemple ĂȘtre utilisĂ© pour la compilation automatique et/ou d’executable de n’importe quel langage compilĂ© ou pour des documents rĂ©digĂ©s avec \(\LaTeX\).

Si vous disposez d’un Makefile adaptĂ© Ă  votre projet, crĂ©er et lancer ce script peut ĂȘtre d’une grande aide.

#! /usr/bin/env /bin/bash

## Automatic compilation on change on .tex files

while sleep 1 ; do find . -name '*.tex' | entr make; done

cat est le pager de base ; sh est le shell de base si respectivement, les variables d’environnement PAGER et SHELL ne sont pas dĂ©finies.

xclip : copier, couper et coller des fichiers

xclip-copyfile, xclip-cutfile et xclip-pastefile peuvent ĂȘtre utilisĂ©es pour respectivement copier, couper et coller des fichiers.

Cela s’utilise vraiment comme les fonctionalitĂ©s semblables des explorateurs de fichiers.

  1. Que l’on indiquera pas faute de flĂšme ce matin : j’ai plus de cafĂ© ↩
  2. En français, la traduction direct est Ă©rafloir qui est un appareil utilisĂ© dans la vinification. Si vous ne pouvez vous faire votre propre rouge avec hunspell, vous pouvez nĂ©anmoins faire de la racinisation — en anglais stemming, bien connu dans le traitement du langage naturel. ↩