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 ?
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:
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 >
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.
[quote, Wikipedia] Chaîne de caractères, qui décrit selon une syntaxe précise, un ensemble de chaînes de caractères possibles.
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
Ça ne sert à rien, mais c'est tellement bien !
Les outils indispensables:
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 ?