Le shell Unix : bash

L'interpréteur de commandes unix (le shell) dispose de très peu de commandes internes. Pour la plupart des commandes utilisées, il s'agit de commandes externes et l’interpréteur passe la main à un programme (du nom de la commande) en lui fournissant la liste des arguments passés derrière la commande. Le nom de la commande ainsi que chaque argument sont toujours séparés par (au moins) un espace. En règle générale, il est donc fortement déconseillé de mettre des espaces dans les noms de fichiers que l’on souhaite ensuite manipuler par les commandes du shell. La touche de passage à la ligne (touche entrée) valide et termine une commande.

Avant la saisie d’une commande, le shell affiche un message nommé « prompt unix » qui est tel que ceci : « user01@Serveur-Debian:/tmp$ ». Ce prompt se décompose en trois parties : login@hostname:chemin$.

Le « $ » à la fin du prompt peut être remplacé par un « # » si l’utilisateur est « root » (le login de l’administrateur du serveur Unix).

cd

Cette commande (interne au shell) permet de changer le répertoire courant (c’est-à-dire celui depuis lequel, on va chercher les fichiers par défaut).

Quand on passe en argument, à une commande, un fichier à manipuler, on indique un chemin relatif ou bien un chemin absolu.

Chemin absolu

Le chemin absolu indique la liste des répertoires à traverser, depuis la racine du système de fichiers, jusqu’au fichier visé. En règle général, un chemin absolu s’écrit en commençant par le caractère « / » (comme dans une URL Internet).

Tous les utilisateurs ont un répertoire que l’on nomme le « home directory » et dans lequel l’utilisateur pourra stocker ses fichiers ou y construire sa propre sous-arborescence. C’est souvent /home/login, "login" représentant le login. Mais, quel que soit le chemin, on peut le remplacer par l'écriture "~" pour désigner son propre home directory ou par "~user01" pour désigner celui du l'utilisateur "user01". C'est ensuite le shell qui remplacera ce raccourci d’écriture par le chemin absolu que cela représente avant d'envoyer l'argument à la commande externe.

/home/user01/exemple.txt
~user01/exemple.txt
~/exemple.txt
	

Les trois chemins absolus, de l'exemple, représentent pour l'utilisateur, de login "user01", le même fichier.

Chemin relatif

Le chemin relatif indique la liste des répertoires à traverser, depuis le répertoire courant, jusqu’au fichier visé. Remarque : En mettant bout à bout le chemin absolu du répertoire courant et le chemin relatif de la cible, on obtient le chemin absolu de la cible.

user01@Serveur-Debian:/home$ echo user01/exemple.txt
user01@Serveur-Debian:~$ echo exemple.txt
user01@Serveur-Debian:~/bin$ echo ../exemple.txt
	

Les trois chemins relatifs, passés chaque fois en argument de la commande "echo" dans l'exemple, représentent le même fichier.

Le répertoire ".." est un répertoire fictif se trouvant dans tous les répertoires et permettant de remonter d'un niveau dans l'arborescence.

echo

Cette commande, interne au bash, affiche à l'écran l'ensemble des arguments qui lui ont été passés.

user01@Serveur-Debian:~$ echo exemple.txt
exemple.txt
user01@Serveur-Debian:~$ echo ~
/home/user01
user01@Serveur-Debian:~$ 
	

pwd

Cette commande est l'abréviation des mots "Print Working Directory". Elle affiche quel est le chemin absolu du répertoire courant.

dirs

Cette commande est presque équivalente à "pwd" si ce n'est qu'elle abrège l'écriture du chemin absolu du répertoire courant en faisant apparaître à chaque fois que c'est possible l'abréviation "~" pour le chemin du home directory. (Remarque : C'est cette commande qui est utilisée de façon transparente pour fabriquer le prompt.)

man

Cette commande affiche la page du manuel en ligne correspondant à la commande spécifiée en paramètre. Pour obtenir l'aide en ligne de cette même commande, on utilisera :

man man
	

L'aide en ligne étant structurée en section numéroté, on peut également préciser devant la commande recherche la section. Pour obtenir l'aide en ligne de la commande ls dans la section 1, on utilisera :

man 1 ls
	

ls

Cette commande affiche le contenu d'un répertoire, c'est à dire la liste de ses fichiers et sous-répertoires.

La commande peut prendre une option en premier argument telle que

user01@Serveur-Debian:~$ ls /tmp
user01@Serveur-Debian:~$ ls
Python
user01@Serveur-Debian:~$ ls -a Python
.          ..       Exercice1.py        Exercice2.py
user01@Serveur-Debian:~$ 
	

On constate sur l'exemple que le répertoire "/tmp" est vide (ou ne contient que des fichiers ou répertoires cachés), que le répertoire courant (examiné quand on ne précise rien à exanimer c'est à dire pas de chemin) contient un fichier ou répertoire nommé "Python". On constate ensuite que "Python" est un répertoire et qu'il contient 4 éléments dont les répertoires "." et "..".

Comment stopper une commande avant la fin de son exécution ?

Pour stopper une commande en cours d'exécution, il suffit de presser simultanément la touche "CTRL" et la lettre "c".