atelier20211120-cli_is_fun-run
Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
atelier20211120-cli_is_fun-run [2021/12/06 11:46] – créée wap | atelier20211120-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 | + | |
- | ---- | + | |
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 | + | |
- | ---- | + | |
==== Un petit mot concernant les arguments ==== | ==== Un petit mot concernant les arguments ==== | ||
- | Lorsqu' | + | Lorsqu' |
- | [%step] | + | |
- | * `-h`: c'est une option courte (1 lettre): permet d' | + | * --human-readable: |
- | * `--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 | + | Dans votre fichier ~/.bashrc ou ~/.zshrc, ajoutez: |
- | ---- | + | |
- | alias ll=" | + | |
- | ---- | + | |
==== 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 | + | * ~ : raccourci pour signifier "mon dossier personnel" |
- | * `~` : raccourci pour signifier "mon dossier personnel" | + | * / : 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 " | Détecter un " | ||
- | ---- | + | |
- | ls PW1_{4700..4750}.jpg > /dev/null | + | |
- | ---- | + | |
==== Les redirections ==== | ==== Les redirections ==== | ||
- | Chaque programme peut rediriger la sortie écran (stdout) vers un fichier via l' | + | Chaque programme peut rediriger la sortie écran (stdout) vers un fichier via l' |
- | [%step] | + | |
- | * `/dev/null` : pseudo-fichier qui ignore tout ce qu'on lui envoie | + | * les erreurs restent visibles à l' |
- | * les erreurs restent visibles à l' | + | |
===== 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 ' | + | |
- | ---- | + | |
==== awk ==== | ==== awk ==== | ||
Ligne 85: | Ligne 72: | ||
Outil de traitement et d' | Outil de traitement et d' | ||
- | https:// | + | [[https:// |
- | 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' | affiche le septième champ (l' | ||
Ligne 97: | Ligne 84: | ||
Concept clé du shell UNIX, le pipe permet de rediriger la sortie d'un programme vers l' | Concept clé du shell UNIX, le pipe permet de rediriger la sortie d'un programme vers l' | ||
- | 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 == " | + | |
- | | sort -rn | head -n 30 | + | |
- | ---- | + | |
- | La ligne `$9 == " | + | La ligne $9 == " |
- | 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 " | + | |
- | ---- | + | |
==== 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 " | + | . signifie " |
==== grep ==== | ==== grep ==== | ||
Ligne 137: | Ligne 119: | ||
==== N' | ==== N' | ||
- | [%step] | + | |
- | * `^` : rien avant | + | * [a-z] : n' |
- | * `[a-z]` : n' | + | * {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' | Parfois, il n'est pas possible que la sortie d'une commande corresponde à l' | ||
- | xargs permet de se sortir de situations parfois difficiles où il n'est pas possible d' | + | xargs permet de se sortir de situations parfois difficiles où il n'est pas possible d' |
Par défaut, xargs affiche ce qu'il reçoit sur 1 ligne. L' | Par défaut, xargs affiche ce qu'il reçoit sur 1 ligne. L' | ||
- | ---- | + | |
- | cd /usr/bin ; ls -1 | shuf | xargs man | + | |
- | ---- | + | |
==== Autre exemple d' | ==== Autre exemple d' | ||
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 ' | + | |
- | ---- | + | |
- | [%step] | + | |
- | * `^` : rien avant | + | * [^x] : qui n'est pas le caractère x. |
- | * `[^x]` : qui n'est pas le caractère | + | |
===== 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: | + | * Inspectez votre machine: neofetch |
- | * Inspectez votre machine: | + | * Réalisez des bannières avec style: figlet |
- | * Réalisez des bannières avec style: | + | * Invitez une vache dans le terminal: cowsay |
- | * Invitez une vache dans le terminal: | + | * Faites parler chuck norris: fortune-mod-chucknorris |
- | * Faites parler chuck norris: | + | |
==== 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/ | + | |
- | ---- | + | |
curl: outil d' | curl: outil d' | ||
Ligne 191: | Ligne 164: | ||
==== Base combo ==== | ==== Base combo ==== | ||
- | ---- | + | |
- | 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 " | + | |
sleep .03; done | sleep .03; done | ||
- | ---- | ||
- | ---- | + | |
- | grep -ao " | + | |
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\ | + | |
"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 ' | + | {e*=-1}; |
- | | + | printf " |
- | | + | |
- | ---- | + | |
===== Quelques références ===== | ===== Quelques références ===== | ||
- | * https:// | + | |
- | * https:// | + | * [[https:// |
- | * https:// | + | * [[https:// |
- | * https:// | + | * [[https:// |
- | * https:// | + | * [[https:// |
===== Merci ===== | ===== Merci ===== |
atelier20211120-cli_is_fun-run.1638791175.txt.gz · Dernière modification : 2021/12/06 11:46 de wap