Outils pour utilisateurs

Outils du site


atelier20211120-cli_is_fun-run
→ Slide 1

CLI is fun !

Philippe Wambeke - LoLiGrUB (20 novembre 2021)

→ Slide 2

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).

→ Slide 3

Exemple 1

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
↓ Slide 4

Un petit mot concernant les arguments

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
↓ Slide 5

Un petit alias peut-être ?

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"
↓ Slide 6

Quelques trucs de base

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
→ Slide 7

Exemple 2

Détecter un “trou” dans une séquence de fichiers:

ls PW1_{4700..4750}.jpg > /dev/null
↓ Slide 8

Les redirections

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
→ Slide 9

Exemple 3

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
↓ Slide 10

awk

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.

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.

La ligne {print $7} signifie:

affiche le septième champ (l'url).

↓ Slide 11

Le pipe

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 |

→ Slide 12

Exemple 4: encore awk

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.

→ Slide 13

Exemple 5

Générateur de phrase de passe composées de 2 mots:

look . | grep -E "^[a-z]{4,8}$" | shuf | head -40 | xargs -n2 
↓ Slide 14

look

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”

↓ Slide 15

grep

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.

↓ Slide 16

N'importe quel mot de 4 à 8 lettres

  • ^ : 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
↓ Slide 17

xargs

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
↓ Slide 18

Autre exemple d'expression régulière

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.
→ Slide 19

Du fun, du fun, du fun

Ç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
↓ Slide 20

La météo

Rapide, facile et sans pub:

curl fr.wttr.in/Boussu

curl: outil d'interrogation de serveur web en ligne de commande.

↓ Slide 21

Base combo

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).

↓ Slide 22

Ultra combo !

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
↓ Slide 23

Le meilleur pour la fin

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")}'
→ Slide 24
→ Slide 25

Merci

Questions ?

atelier20211120-cli_is_fun-run.txt · Dernière modification : 2021/12/06 11:58 de wap