Vue lecture

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.

WebTerm - Apprendre le terminal Linux sans rien installer

Le terminal Linux / MacOS, ça fait encore flipper pas mal de monde et c'est exactement pour cette raison que des gens ont créé WebTerm , un petit site web qui simule un terminal directement dans le navigateur pour vous apprendre les commandes de base... sans risquer de claquer un rm -rf votre disque dur !

En gros, vous ouvrez le site dans Chrome ou Firefox, et vous avez un faux terminal devant vous avec des exercices progressifs. Ça part des trucs vraiment basiques genre pwd, ls, cd (oui, le B.A.-BA quoi) et ça monte jusqu'aux commandes plus costaudes comme grep, find, chmod ou carrément des tutos Git avec branches et commits. Y'a 8 modes d'apprentissage au total et une trentaine d'exercices, du débutant complet au "je veux maîtriser le versioning". En fait c'est plutôt bien découpé et chaque mode rajoute une couche de difficulté.

Le truc sympa c'est que tout se passe dans votre navigateur comme ça pas besoin d'installer Ubuntu, pas besoin de VirtualBox, pas besoin de WSL... vous ouvrez la page et vous tapez vos commandes dans un prompt bash comme un vrai sysadmin qui pue de la gueule (un classique !). Perso, pour quelqu'un qui n'a jamais touché à la ligne de commande, c'est quand même VACHEMENT moins flippant qu'un vrai terminal où une mauvaise manip peut vous foutre dans la mierda.

D'ailleurs si vous maîtrisez déjà un peu le sujet, y'a aussi un mode Free Play qui vous lâche dans la nature sans consignes. Vous tapez ce que vous voulez, vous expérimentez... un bac à sable quoi. Et comme sur un vrai shell Bash ou Zsh, vous avez la complétion par Tab et l'historique des commandes avec les flèches haut/bas.

Bon, c'est pas non plus un émulateur complet hein, donc faut pas s'attendre à pouvoir installer des paquets apt ou lancer des scripts bash complexes. Sauf si vous avez une vraie VM sous la main, mais là c'est plus le même délire. Par exemple, les pipes genre | entre commandes, ça passe pas non plus, et ça ne marche pas sur smartphone.

C'est desktop only... et dans le terminal, tout se fait au clavier, donc pas de souris. Et pour ceux qui se demandent, le site est dispo en anglais et en japonais (le projet vient d'une boîte japonaise qui s'appelle init Inc.), mais les commandes Linux c'est universel donc ça ne change rien sur l'apprentissage. Après si vous cherchez des tutos en français, là faudra aller voir ailleurs.

Et si vous voulez aller plus loin après avoir joué avec WebTerm, je vous recommande de jeter un oeil à mon article sur les raccourcis clavier Bash qui va vous faire gagner un temps de fou !

Voilà pour 15 minutes de pratique par jour c'est plutôt bien foutu et vous pourrez gagner en autonomie dans ce fichu terminal qui vous effraye depuis tant d'années.

Shells Unix - 5 redirections que vous copiez sans comprendre

2>&1, >, >>, 2>/dev/null... Si ces symboles dans votre terminal Linux ou macOS vous font autant flipper qu'un regex, respirez un grand coup ! Quand vous aurez lu cet article, vous verrez qu'en fait c'est super simple à comprendre, et en 5 minutes vous saurez enfin ce que vous copiez-collez depuis des années depuis StackOverflow.

En fait, dans les shells Unix (bash, zsh, etc.), y'a 3 canaux de base : stdin (entrée, numéro 0), stdout (sortie normale, numéro 1) et stderr (les erreurs, numéro 2). Tout le reste, de > à 2>/dev/null, découle de ces 3 numéros.

> - Écrire dans un fichier (et tout écraser)

echo "Salut" > fichier.txt

Ça redirige stdout vers fichier.txt. Si le fichier existe déjà... c'est mort, il est écrasé sans sommation. Du coup, faites gaffe avec vos logs, une commande mal placée et ce sont des heures de données qui disparaissent.

D'ailleurs, si vous êtes du genre parano (et oui, vous avez raison !), set -o noclobber dans votre .bashrc empêchera > d'écraser un fichier existant lors d'une commande tapée à la main. Pour y arriver, il faudra utiliser >| pour forcer.

>> - Ajouter à la suite

echo "Ligne 2" >> fichier.txt

Même principe que >, sauf que ça ajoute à la fin au lieu d'écraser. C'est ce que vous voulez 99% du temps pour des logs (sauf si vous voulez repartir de zéro, là > fait le job). Une lettre de différence entre "tout va bien" et "où sont passés mes logs, boudiouuu ???".

2> - Rediriger les erreurs

commande_foireuse 2> erreurs.log

Le 2 c'est stderr, en gros (y'a pas d'espace entre le 2 et le >, sinon bash croit que 2 est un argument). Tout ce qui sort en erreur finit dans erreurs.log au lieu de polluer votre terminal. Perso, je trouve ça super pratique pour garder une trace propre quand vous lancez des scripts via crontab -e.

Et 2>> existe aussi, pour cumuler les erreurs au fil du temps au lieu d'écraser le fichier à chaque exécution.

2>&1 - Fusionner erreurs et sortie normale

commande > output.log 2>&1

Le fameux ! Le &1 dit à bash "le 1 c'est un file descriptor, pas un fichier qui s'appelle littéralement 1". Du coup stderr (2) est redirigé vers le même endroit que stdout (1), ou plutôt vers là où stdout pointe au moment où bash évalue la ligne. Ça va, vous suivez toujours ? ^^

Attention, l'ordre compte ! Bash lit les redirections de gauche à droite. > output.log 2>&1, stdout pointe vers le fichier, puis stderr suit... tout va dans le fichier. 2>&1 > output.log, stderr copie stdout qui pointe ENCORE vers le terminal, puis stdout est redirigé vers le fichier. Résultat, les erreurs restent dans votre terminal. Le piège classique.

Et &> fait la même chose en plus court :

commande &> output.log

&> est super pratique, mais spécifique à bash / zsh donc pour la portabilité, préférez quand même > fichier 2>&1.

2>/dev/null - Le trou noir

find / -name "*.conf" 2>/dev/null

/dev/null, c'est le trou noir d'Unix. Tout ce que vous envoyez là-dedans disparaît. Super pratique avec find qui vous crache 200 "Permission denied" pour un seul résultat utile.

Et si vous voulez TOUT faire disparaître (stdout + stderr) ? Un petit &>/dev/null et c'est réglé. Pratique dans vos scripts /etc/cron.d/ quand vous voulez zéro bruit (bon, j'exagère un chouïa, je sais...).

Si vous aimez les raccourcis bash , j'ai aussi ce qu'il faut.

Bref, voilà ce sont juste 5 opérateurs à retenir, et avec ça vous couvrez à peu près tout. Donc la prochaine fois que vous copierez un 2>&1, au moins vous saurez pourquoi.

Source d'inspiration

❌