Stage de rentrée I1

Bash I


Interpréteur de commandes

Un interpréteur de commandes est un processus dont le rôle est de fournir une interface textuelle avec le système d'exploitation.

Un interpréteur de commandes exécute en boucle la séquence d'actions suivante :

Depuis les débuts des premiers Unix, de nombreux interpréteurs ont été créés, disposant de fonctionnalités de plus en plus puissantes à mesure que la puissance des ordinateurs augmentait : sh, csh, ksh, zsh, bash... Par défaut, nous utilisons bash pour la configuration initiale des comptes des nouveaux élèves, et c'est donc lui que nous allons étudier.

Premières commandes

Sous UNIX, toutes les commandes à exécuter ont la même syntaxe : nom_commande -options arguments.

La touche <ENTRÉE> lance l'interprétation de la commande.

Premières commandes à taper :

Les interpréteurs de commandes modernes permettent une gestion avancée de l'historique (qui permet de faire manipuler les touches <CTRL>) :

Pour le déplacement et la suppression des caractères, on peut se servir des flèches du clavier et de la touche <DEL>, si elles sont bien configurées.


On peut séparer deux commandes sur la même ligne avec un point-virgule : echo -n "Bonjour " ; echo "tout le monde" .


On peut grouper plusieurs commande en une seule avec des parenthèses : (echo -n "Bonjour " ; echo "tout le monde") .


L'invite de commande ne revient que quand la commande est terminée, afin que l'utilisateur sache exactement où il en est. On peut s'en rendre compte avec une commande prenant du temps, comme : sleep 5 ; echo "Fini" .

Lorsqu'on veut lancer une commande et pouvoir utiliser l'interpréteur avant la fin de celle-ci, on termine la commande par un & . Par exemple, avec la commande précédente : (sleep 5 ; echo "Fini") & . On voit que, quand la commande exécutée en arrière-plan est terminée, l'interpréteur de commande nous en informe lors du prochain appui de la touche <ENTRÉE>. On a besoin des parenthèses car sinon c'est juste la dernière commande qu'il lance en arrière-plan, le sleep étant lui bloquant vis-à-vis de l'interpréteur : l'interpréteur attend la fin du sleep avant de lancer le echo en arrière-plan.


Lancer un xterm en tâche de fond avec xterm &. Lancer un xeyes dans le nouveau shell. On ne le voit pas dans l'ancienne fenêtre, mais avec ps -f -u login on peut le voir.


Pour terminer l'interpréteur de commandes, on peut soit fermer la fenêtre correspondante, soit taper la commande exit.