Outils pour utilisateurs

Outils du site


atelier20211120-cli_is_fun-run

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
atelier20211120-cli_is_fun-run [2021/12/06 11:46] – créée wapatelier20211120-cli_is_fun-run [2021/12/06 11:58] (Version actuelle) wap
Ligne 7: Ligne 7:
 ===== Préambule ===== ===== Préambule =====
  
-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).+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).
  
 ===== Exemple 1 ===== ===== Exemple 1 =====
Ligne 15: Ligne 15:
 Affichage des fichiers triés par extension: Affichage des fichiers triés par extension:
  
----- +  ls -lX
-ls -lX +
-----+
  
 Beuh, c'est moche ! Installons exa ! Beuh, c'est moche ! Installons exa !
Ligne 23: Ligne 21:
 La commande devient: La commande devient:
  
----- +  exa -l --icons --sort=extension
-exa -l --icons --sort=extension +
-----+
  
 ==== Un petit mot concernant les arguments ==== ==== Un petit mot concernant les arguments ====
  
-Lorsqu'on appelle une commande avec des arguments, quelle est la différence entre `-het `--human-readable?+Lorsqu'on appelle une commande avec des arguments, quelle est la différence entre -h et --human-readable ?
  
-[%step] +  * -h: c'est une option courte (1 lettre): permet d'ajouter d'autres options (-hla ...) 
-`-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
-`--human-readable`: c'est une option longue: plus facile à lire / retenir+
  
 ==== Un petit alias peut-être ? ==== ==== Un petit alias peut-être ? ====
  
 exa c'est bien, mais c'est long à taper: créons un alias. exa c'est bien, mais c'est long à taper: créons un alias.
-Dans votre fichier `~/.bashrcou `~/.zshrc`, ajoutez:+Dans votre fichier ~/.bashrc ou ~/.zshrc, ajoutez:
  
----- +  alias ll="exa -l --icons --group-directories-first --sort=extension"
-alias ll="exa -l --icons --group-directories-first --sort=extension" +
-----+
  
 ==== Quelques trucs de base ==== ==== Quelques trucs de base ====
Ligne 48: Ligne 41:
 Notations particulières couramment utilisées: Notations particulières couramment utilisées:
  
-[%step] +  * dossiers . et .. : dossier courant et parent 
-* dossiers `.et `..: dossier courant et parent +  * ~ : raccourci pour signifier "mon dossier personnel" (home) 
-`~: raccourci pour signifier "mon dossier personnel" (home) +  * / : caractère de séparation de dossiers dans un chemin 
-`/: caractère de séparation de dossiers dans un chemin +  * fichiers commençant par . : fichiers cachés
-* fichiers commençant par `.: fichiers cachés+
  
 ===== Exemple 2 ===== ===== Exemple 2 =====
Ligne 58: Ligne 50:
 Détecter un "trou" dans une séquence de fichiers: Détecter un "trou" dans une séquence de fichiers:
  
----- +  ls PW1_{4700..4750}.jpg > /dev/null
-ls PW1_{4700..4750}.jpg > /dev/null +
-----+
  
 ==== Les redirections ==== ==== Les redirections ====
  
-Chaque programme peut rediriger la sortie écran (stdout) vers un fichier via l'opérateur `>`.+Chaque programme peut rediriger la sortie écran (stdout) vers un fichier via l'opérateur >
  
-[%step] +  * /dev/null : pseudo-fichier qui ignore tout ce qu'on lui envoie 
-`/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
-* les erreurs restent visibles à l'écran: seuls sont affichés les fichiers manquants+
  
 ===== Exemple 3 ===== ===== Exemple 3 =====
Ligne 76: Ligne 65:
 Dans un log de serveur web (nginx), affichage des 100 urls les plus consultées: 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
-awk '{print $7}' access.log | sort | uniq -c | sort -rn | head -100 +
-----+
  
 ==== awk ==== ==== awk ====
Ligne 85: Ligne 72:
 Outil de traitement et d'extraction de texte possédant son propre langage. Outil de traitement et d'extraction de texte possédant son propre langage.
  
-https://en.wikipedia.org/wiki/The_AWK_Programming_Language[The AWK Programming Language]+[[https://en.wikipedia.org/wiki/The_AWK_Programming_Language|The AWK Programming Language]]
  
-En gros, les mots sont séparés par un caractère blanc et sont numérotés de `$1à `$x`.+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:+La ligne {print $7} signifie:
  
 affiche le septième champ (l'url). affiche le septième champ (l'url).
Ligne 97: Ligne 84:
 Concept clé du shell UNIX, le pipe permet de rediriger la sortie d'un programme vers l'entrée d'un autre. 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 `|`.+Il est représenté par le caractère |
  
 ===== Exemple 4: encore awk ===== ===== Exemple 4: encore awk =====
Ligne 103: Ligne 90:
 Dans un log de serveur web (nginx), affichage des 30 urls générant le plus de code http 404: 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
-awk '$9 == "404" {print $7}' access.log | sort | uniq -c +
- | sort -rn | head -n 30 +
-----+
  
-La ligne `$9 == "404" {print $7}signifie:+La ligne $9 == "404" {print $7} signifie:
  
-Si le neuvième champ de chaque ligne est `404`, alors affiche le septième champ.+Si le neuvième champ de chaque ligne est 404, alors affiche le septième champ.
  
 ===== Exemple 5 ===== ===== Exemple 5 =====
Ligne 116: Ligne 100:
 Générateur de phrase de passe composées de 2 mots: Générateur de phrase de passe composées de 2 mots:
  
----- +  look . | grep -E "^[a-z]{4,8}$" | shuf | head -40 | xargs -n2 
-look . | grep -E "^[a-z]{4,8}$" | shuf | head -40 | xargs -n2  +
-----+
  
 ==== look ==== ==== look ====
Ligne 126: Ligne 108:
 Si aucun fichier n'est spécifié, recherche dans un dictionnaire. Si aucun fichier n'est spécifié, recherche dans un dictionnaire.
  
-`.signifie "n'importe quel terme"+. signifie "n'importe quel terme"
  
 ==== grep ==== ==== grep ====
Ligne 137: Ligne 119:
 ==== N'importe quel mot de 4 à 8 lettres ==== ==== N'importe quel mot de 4 à 8 lettres ====
  
-[%step] +  * ^ : rien avant 
-`^: rien avant +  * [a-z] : n'importe quelle lettre de a jusqu'à z 
-`[a-z]: n'importe quelle lettre de a jusqu'à z +  * {4,8} : répétée de 4 à 8 fois 
-`{4,8}: répétée de 4 à 8 fois +  * $ : rien après
-`$: rien après+
  
 ==== xargs ==== ==== xargs ====
  
 Parfois, il n'est pas possible que la sortie d'une commande corresponde à l'entrée d'une autre. 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 `|`.+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. 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
-cd /usr/bin ; ls -1 | shuf | xargs man +
-----+
  
 ==== Autre exemple d'expression régulière ==== ==== Autre exemple d'expression régulière ====
Ligne 158: Ligne 137:
 Afficher toutes les lignes qui ne sont pas des commentaires dans un fichier de configuration: Afficher toutes les lignes qui ne sont pas des commentaires dans un fichier de configuration:
  
----- +  grep '^[^#]' /etc/pacman.conf
-grep '^[^#]' /etc/pacman.conf +
-----+
  
-[%step] +  * ^ : rien avant 
-`^: rien avant +  * [^x] : qui n'est pas le caractère x.
-`[^x]: qui n'est pas le caractère `x`.+
  
 ===== Du fun, du fun, du fun ===== ===== Du fun, du fun, du fun =====
Ligne 172: Ligne 148:
 Les outils indispensables: Les outils indispensables:
  
-[%step] +  * Mettez de la couleur dans vos terminaux: lolcat 
-* Mettez de la couleur dans vos terminaux: `lolcat` +  * Inspectez votre machine: neofetch 
-* Inspectez votre machine: `neofetch` +  * Réalisez des bannières avec style: figlet 
-* Réalisez des bannières avec style: `figlet` +  * Invitez une vache dans le terminal: cowsay 
-* Invitez une vache dans le terminal: `cowsay` +  * Faites parler chuck norris: fortune-mod-chucknorris
-* Faites parler chuck norris: `fortune-mod-chucknorris`+
  
 ==== La météo ==== ==== La météo ====
Ligne 183: Ligne 158:
 Rapide, facile et sans pub: Rapide, facile et sans pub:
  
----- +  curl fr.wttr.in/Boussu
-curl fr.wttr.in/Boussu +
-----+
  
 curl: outil d'interrogation de serveur web en ligne de commande. curl: outil d'interrogation de serveur web en ligne de commande.
Ligne 191: Ligne 164:
 ==== Base combo ==== ==== Base combo ====
  
----- +  neofetch 
-neofetch +  catimg loligrub-asbl.png 
-catimg loligrub-asbl.png +  chuck | cowsay | lolcat -F 1 
-chuck | cowsay | lolcat -F 1 +  figlet -tc -f shadow "Merci de votre attention \!" | lolcat
-figlet -tc -f shadow "Merci de votre attention \!" | lolcat +
-----+
  
-La sortie de figlet peut être redirigée vers `/etc/motd(message of the day).+La sortie de figlet peut être redirigée vers /etc/motd (message of the day).
  
 ==== Ultra combo ! ==== ==== Ultra combo ! ====
  
----- +  yes "$(seq 231 -1 16)" | while read i; do printf "\x1b[48;5;${i}m\n";\
-yes "$(seq 231 -1 16)" | while read i; do printf "\x1b[48;5;${i}m\n";\+
   sleep .03; done   sleep .03; done
----- 
  
----- +  grep -ao "[/\\]" /dev/urandom | sed -e 's,\\,╲,' -e 's,/,╱,' |\
-grep -ao "[/\\]" /dev/urandom | sed -e 's,\\,╲,' -e 's,/,╱,' |\+
   tr -d \\n | lolcat -F 0.001   tr -d \\n | lolcat -F 0.001
----- 
  
 ==== Le meilleur pour la fin ==== ==== Le meilleur pour la fin ====
  
----- +  for p in {36..1..4}; do espeak-ng -v en -p $p\
-for p in {36..1..4}; do espeak-ng -v en -p $p\+
  "We are the Borg. Lower your shields and surrender your ships...\  "We are the Borg. Lower your shields and surrender your ships...\
  Your biological and technological distinctiveness will be added to our own.\  Your biological and technological distinctiveness will be added to our own.\
  Resistance is futile."\  Resistance is futile."\
  & sleep 0.007; done  & sleep 0.007; done
----- 
  
----- +  yes $COLUMNS $LINES|awk 'BEGIN{x=y=e=f=1}{if(x==$1||!x)\ 
-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;
- {e*=-1};if(y==$2||!y){f*=-1};x+=e;y+=f;+  printf "\033[%s;%sH",y,x;system("sleep .02")}'
- printf "\033[%s;%sH",y,x;system("sleep .02")}' +
-----+
  
 ===== Quelques références ===== ===== Quelques références =====
  
-* https://en.wikipedia.org/wiki/The_AWK_Programming_Language[The AWK Programming Language] +  [[https://en.wikipedia.org/wiki/The_AWK_Programming_Language|The AWK Programming Language]
-* https://www.rexegg.com/regex-quickstart.html[Regex Cheat Sheet] +  [[https://www.rexegg.com/regex-quickstart.html|Regex Cheat Sheet]
-* https://mywiki.wooledge.org/BashGuide[Bash Guide] +  [[https://mywiki.wooledge.org/BashGuide|Bash Guide]
-* https://blog.zenika.com/2019/02/14/shell-mon-amour/[Shell mon amour] +  [[https://blog.zenika.com/2019/02/14/shell-mon-amour|Shell mon amour]
-* https://adamdrake.com/command-line-tools-can-be-235x-faster-than-your-hadoop-cluster.html[Command-line Tools can be 235x Faster than your Hadoop Cluster]+  [[https://adamdrake.com/command-line-tools-can-be-235x-faster-than-your-hadoop-cluster.html|Command-line Tools can be 235x Faster than your Hadoop Cluster]]
  
 ===== Merci ===== ===== Merci =====
atelier20211120-cli_is_fun-run.1638791175.txt.gz · Dernière modification : 2021/12/06 11:46 de wap