Débuter avec le shell sous Linux
Présentation du shell
Le shell est un interpréteur de commandes, également appelé interface en ligne de commande (en anglais, CLI pour Command-Line Interface). Il s’agit d’un logiciel interactif qui permet de communiquer directement avec un système d’exploitation à travers une interface en mode texte.
L’utilisateur saisit ses commandes dans une invite de commandes. Ensuite, il appuie sur la touche [Entrée] du clavier pour demander au shell d’exécuter sa commande. Lorsque l’exécution de la commande a abouti, le shell rend la main à l’utilisateur afin de lui permettre de saisir une nouvelle commande.
Le shell Bash
1. Quelques mots sur Bash
Bash (Bourne-Again shell) est le shell le plus populaire sous Linux. Il a été développé dans le cadre du projet GNU, afin de proposer une alternative à l’interpréteur de commandes d’Unix. La première version du logiciel a été publiée en 1989 et inclut des fonctionnalités empruntées à d’autres logiciels tels que Korn shell et C shell.
Il est proposé comme shell par défaut sur de nombreuses distributions Linux, notamment Debian. Mais il est également disponible sur d’autres systèmes d’exploitation comme macOS et sous Windows (via WSL).
Bien que Bash soit le shell par défaut sous Debian, en fonction de vos besoins ou de vos préférences, il vous sera possible d’opter plus tard pour un autre shell si vous le souhaitez. Dans la section suivante, nous allons vous présenter les shell les plus utilisés dans la famille Unix.
2. Les différents shell sous Linux
Le Bourne shell (ou sh)
Le premier shell disponible sous Unix était le Thompson shell, il s’agissait d’un shell minimaliste qui a été remplacé en 1979 par le Bourne shell. La première version est apparue en 1977. Il a été développé par Steve Bourne au sein des laboratoires Bell.
Dans Unix, la commande sh fait référence...
Le shell et la ligne de commande
1. Les moyens d’accès au shell
Accès local par la console Linux
Dans un système Linux dépourvu d’environnement de bureau, lorsque vous vous êtes authentifié, vous êtes redirigé vers la console avec une invite de commandes. La console Linux se présente sous la forme d’un écran noir avec une invite de commandes comme l’illustre la capture d’écran suivante.

Figure 1 : Capture d’écran d’une console Linux avec le prompt de Bash
Accès local par un terminal virtuel
Si vous avez choisi d’installer un environnement de bureau tel que GNOME ou KDE, vous accédez généralement au shell à partir d’un terminal virtuel. Il s’agit d’un logiciel qui émule une console, il se trouve généralement dans le lanceur d’application de votre environnement de bureau.
La capture d’écran ci-dessous vous donne un aperçu d’un environnement de bureau qui affiche une fenêtre de terminal avec le logiciel GNOME Terminal.

Figure 2 : Capture d’écran d’une fenêtre de terminal sous GNOME
Accès distant par SSH
Vous pouvez également accéder au shell de manière distante. Pour cela, vous utiliserez des logiciels qui s’appuient sur le protocole SSH. Ils vous permettront d’accéder au shell depuis une machine distante à travers le réseau.
La capture d’écran ci-dessous vous donne un aperçu d’une connexion par SSH vers le serveur LAMP depuis...
Prise en main du shell avec Bash
1. Exploration des fichiers et des répertoires
a. Le nommage des fichiers
Linux respecte la casse, c’est-à-dire que, contrairement à d’autres systèmes d’exploitation, une majuscule et une minuscule dans un nom de fichier seront considérées comme deux caractères distincts. Par exemple, les fichiers Readme.txt et readme.txt seront considérés comme étant deux fichiers différents.
Les fichiers et les répertoires dont le nom commence par un . (point) seront considérés comme des fichiers cachés. Par défaut, ils ne seront pas affichés lorsque vous listez le contenu d’un répertoire par exemple.
b. L’arborescence de fichiers
Debian adhère à la norme FHS (un acronyme pour Filesystem Hierarchy Standard - en français, norme de hiérarchie des systèmes de fichiers), il s’agit d’une norme qui sert de référence aux systèmes d’exploitation basés sur Unix, pour uniformiser le nommage des répertoires de fichiers système et leur utilisation.
Sous Linux, le répertoire racine de l’arborescence de fichiers (en anglais, root directory) est noté par un symbole / (barre oblique), couramment appelé slash.
Le tableau ci-dessous liste les principaux répertoires que l’on retrouve sous Linux, ainsi que leur rôle.
Répertoire |
Rôle |
/ |
C’est la racine de l’arborescence de fichiers sous Linux. |
/bin |
Ce répertoire contient les fichiers binaires (ou exécutables). |
/boot |
Ce répertoire contient les fichiers statiques pour le programme d’amorçage. |
/dev |
Ce répertoire contient les fichiers de périphériques et des fichiers spéciaux. |
/etc |
Ce répertoire contient les fichiers de configuraytion du système. |
/home |
Ce répertoire contient les répertoires personnels des utilisateurs. |
/lib |
Ce répertoire contient les bibliothèques partagées et les modules du noyau. |
/media |
Ce répertoire est utilisé pour les points de montages des supports amovibles (CD/DVD, clés USB, etc.). |
/mnt |
Ce répertoire est utilisé pour les points de montages temporaires. |
/opt |
Ce répertoire est utilisé pour les logiciels... |
Notions pour une utilisation avancée du shell
1. Enchaîner les commandes
Le shell permet d’enchaîner les commandes sur une même ligne de commande grâce à l’utilisation de caractères spéciaux ou d’opérateurs logiques.
a. Le symbole de fin de commande
L’utilisation du caractère spécial ; (point-virgule) permet de marquer la fin d’une commande. En effet, son utilisation vous permettra d’enchaîner successivement les commandes sur une même ligne de commande.
Ci-dessous, voici un exemple pour illustrer son utilisation dans le shell.
mkdir dir1; touch dir1/test1; ls dir1
Cette ligne de commande permettra l’exécution successive des commandes pour :
-
créer un répertoire dir1 ;
-
puis créer un fichier test1 dans le répertoire dir1 ;
-
et enfin, lister les fichiers du répertoire dir1.
b. Les opérateurs logiques de Bash
Le shell dispose également d’opérateurs logiques qui permettent d’enchaîner les commandes de manière conditionnelle. Il s’agit d’un ET booléen représenté par les caractères spéciaux && (double esperluette) et d’un OU booléen représenté par les caractères spéciaux || (double barre).
L’opérateur &&
Le ET booléen (ou &&) permet d’exécuter la commande suivante si la commande qui lui précède s’est terminée sans erreurs (c’est-à-dire avec un code retour égal à 0).
Ci-dessous, voici un exemple pour illustrer son utilisation dans le shell.
mkdir dir1 && touch dir1/test2 && ls dir1
Cette ligne de commande permettra l’exécution des commandes pour :
-
créer un répertoire dir1 ;
-
puis créer un fichier test2 dans le répertoire dir1, si la création du répertoire s’est bien déroulée ;
-
et enfin, lister les fichiers du répertoire dir1, si la création du fichier s’est bien terminée.
Ainsi, dans cet exemple, si la création du répertoire dir1 échoue, ni la création du fichier test ni l’affichage du contenu du répertoire dir1 ne pourront s’exécuter.
L’opérateur ||
Le OU booléen...
Les raccourcis-clavier du shell
Le shell Bash propose des raccourcis-clavier qui pourront vous être utiles et même vous faire gagner du temps, dans certains cas. Généralement les raccourcis-clavier sont composés d’une combinaison de la touche [Ctrl] ou de la touche [Alt] avec une autre touche du clavier.
Ci-dessous, voici quelques raccourcis-clavier utiles pour débuter. Nous aurons l’occasion d’en voir davantage au fur et à mesure de l’avancement.
Raccourcis-clavier |
Rôle |
[Ctrl] + [C] |
Interrompt l’exécution d’un programme. |
[Ctrl] + [K] |
Coupe tous les caractères après le curseur. |
[Ctrl] + [U] |
Coupe tous les caractères avant le curseur. |
[Ctrl] + [W] |
Coupe le mot précédent (l’ensemble des caractères jusqu’au premier espace). |
[Ctrl] + [Y] |
Colle les caractères coupés. |
[Ctrl] + [Flèche à gauche] |
Déplacer le curseur à gauche. |
[Ctrl] + [Flèche à droite] |
Déplacer le curseur à droite. |
[Ctrl] + [U] |
Coupe tous les caractères avant le curseur. |
[Ctrl] + [Y] |
Colle les caractères coupés. |
[Ctrl] + [R] |
Recherche une commande dans l’historique. Appuyez sur [Entrée] pour exécuter la commande ou [Tab] pour la modifier. |
[Ctrl] + [G] |
Quitter la recherche. |
[Ctrl] + [P] |
Aller à la commande précédente, vous pouvez également... |
Obtenir de l’aide dans le shell
1. L’aide interne aux commandes
Les commandes présentées ici vous seront utiles si vous souhaitez obtenir de l’aide sur une commande ou afficher la liste des options disponibles.
L’option --help
Par convention, la plupart des commandes sous Linux proposent une option --help ou -h qui permet d’afficher de l’aide à propos de la commande elle-même. Néanmoins, certaines commandes proposeront uniquement le paramètre -h quand d’autres proposent uniquement le paramètre --help.
Par exemple, la ligne de commande suivante vous permet d’obtenir de l’aide sur la commande ls.
ls --help
La ligne de commande suivante vous permet d’obtenir le même résultat.
ls -h
La commande help
Cette commande est fournie par le shell. Elle permet d’obtenir exclusivement de l’aide sur les commandes internes au shell.
Par exemple, la ligne de commande suivante vous permet d’obtenir de l’aide sur la commande cd.
help cd
2. Les pages de manuels avec man et info
Si vous souhaitez obtenir une aide plus complète sur certaines commandes, vous disposez de deux outils en ligne de commande qui vous permettent d’afficher les pages de manuels des commandes depuis la console.
La commande man
Cette commande permet d’afficher une aide étendue fournie grâce aux pages de manuels. Elle est disponible par défaut...