ls -lX
Philippe Wambeke - LoLiGrUB (20 novembre 2021)
La ligne de commande, c’est magique. Il existe des tas de sortilèges. Si vous êtes perdu, vous pouvez toujours demander votre chemin à man
(le manuel).
Démarrage en douceur:
Affichage des fichiers triés par extension:
ls -lX
Beuh, c’est moche ! Installons exa !
La commande devient:
exa -l --icons --sort=extension
Lorsqu’on appelle une commande avec des arguments, quelle est la différence entre -h
et --human-readable
?
-h
: c’est une option courte (1 lettre): permet d’ajouter d’autres options (-hla …)
--human-readable
: c’est une option longue: plus facile à lire / retenir
exa c’est bien, mais c’est long à taper: créons un alias.
Dans votre fichier ~/.bashrc
ou ~/.zshrc
, ajoutez:
alias ll="exa -l --icons --group-directories-first --sort=extension"
Notations particulières couramment utilisées:
dossiers .
et ..
: dossier courant et parent
~
: raccourci pour signifier "mon dossier personnel" (home)
/
: caractère de séparation de dossiers dans un chemin
fichiers commençant par .
: fichiers cachés
Détecter un "trou" dans une séquence de fichiers:
ls PW1_{4700..4750}.jpg > /dev/null
Chaque programme peut rediriger la sortie écran (stdout) vers un fichier via l’opérateur >
.
/dev/null
: pseudo-fichier qui ignore tout ce qu’on lui envoie
les erreurs restent visibles à l’écran: seuls sont affichés les fichiers manquants
On passe la deuxième:
Dans un log de serveur web (nginx), affichage des 100 urls les plus consultées:
awk '{print $7}' access.log | sort | uniq -c | sort -rn | head -100
Du nom de ses concepteurs: Al Aho, Peter Weinberger et Brian Kernighan. Outil de traitement et d’extraction de texte possédant son propre langage.
En gros, les mots sont séparés par un caractère blanc et sont numérotés de $1
à $x
.
La ligne {print $7}
signifie:
affiche le septième champ (l’url).
Concept clé du shell UNIX, le pipe permet de rediriger la sortie d’un programme vers l’entrée d’un autre.
Il est représenté par le caractère |
.
Dans un log de serveur web (nginx), affichage des 30 urls générant le plus de code http 404:
awk '$9 == "404" {print $7}' access.log | sort | uniq -c \ | sort -rn | head -n 30
La ligne $9 == "404" {print $7}
signifie:
Si le neuvième champ de chaque ligne est 404
, alors affiche le septième champ.
Générateur de phrase de passe composées de 2 mots:
look . | grep -E "^[a-z]{4,8}$" | shuf | head -40 | xargs -n2
Outil (apparu dans l’édition 7 de UNIX) permettant de rechercher un mot dans un fichier.
Si aucun fichier n’est spécifié, recherche dans un dictionnaire.
.
signifie "n’importe quel terme"
Get Regular Expression and Print: recherche toute chaîne répondant à l’expression régulière et l’affiche.
Chaîne de caractères, qui décrit selon une syntaxe précise, un ensemble de chaînes de caractères possibles.
^
: rien avant
[a-z]
: n’importe quelle lettre de a jusqu’à z
{4,8}
: répétée de 4 à 8 fois
$
: rien après
Parfois, il n’est pas possible que la sortie d’une commande corresponde à l’entrée d’une autre.
xargs permet de se sortir de situations parfois difficiles où il n’est pas possible d’enchainer les commandes avec des |
.
Par défaut, xargs affiche ce qu’il reçoit sur 1 ligne. L’argument -n2 lui indique de grouper 2 éléments par ligne.
cd /usr/bin ; ls -1 | shuf | xargs man
Afficher toutes les lignes qui ne sont pas des commentaires dans un fichier de configuration:
grep '^[^#]' /etc/pacman.conf
^
: rien avant
[^x]
: qui n’est pas le caractère x
.
Ça ne sert à rien, mais c’est tellement bien !
Les outils indispensables:
Mettez de la couleur dans vos terminaux: lolcat
Inspectez votre machine: neofetch
Réalisez des bannières avec style: figlet
Invitez une vache dans le terminal: cowsay
Faites parler chuck norris: fortune-mod-chucknorris
Rapide, facile et sans pub:
curl fr.wttr.in/Boussu
curl: outil d’interrogation de serveur web en ligne de commande.
neofetch catimg loligrub-asbl.png chuck | cowsay | lolcat -F 1 figlet -tc -f shadow "Merci de votre attention \!" | lolcat
La sortie de figlet peut être redirigée vers /etc/motd
(message of the day).
yes "$(seq 231 -1 16)" | while read i; do printf "\x1b[48;5;${i}m\n";\ sleep .03; done
grep -ao "[/\\]" /dev/urandom | sed -e 's,\\,╲,' -e 's,/,╱,' |\ tr -d \\n | lolcat -F 0.001
for p in {36..1..4}; do espeak-ng -v en -p $p\ "We are the Borg. Lower your shields and surrender your ships...\ Your biological and technological distinctiveness will be added to our own.\ Resistance is futile."\ & sleep 0.007; done
yes $COLUMNS $LINES|awk 'BEGIN{x=y=e=f=1}{if(x==$1||!x)\ {e*=-1};if(y==$2||!y){f*=-1};x+=e;y+=f;\ printf "\033[%s;%sH",y,x;system("sleep .02")}'
Questions ?