À propos du Shell
Le Shell de ligne de commande est une interface utilisateur textuelle pour votre système d’exploitation. Contrairement à un shell GUI, qui utilise une représentation graphique des services et des ressources du système, le shell de ligne de commande utilise uniquement du texte. Il s’agit de l’interface fondamentale entre vous et le système d’exploitation et, dans de nombreux cas, vous offre un contrôle plus direct sur les processus du système.
À quoi sert le Shell?
Quand il s’agit de communiquer avec votre système d’exploitation, tout ce que vous pouvez faire avec une interface graphique peut être fait sur la ligne de commande. Par exemple, prenons quelque chose que vous devez faire tout le temps; déplacer des fichiers dans votre système de fichiers. À l’aide d’une interface graphique, vous pouvez sélectionner les icônes représentant vos fichiers, les faire glisser dans un autre dossier et les déposer pour les déplacer.
Cependant, en utilisant la ligne de commande, cette opération peut être effectuée en utilisant une seule commande:
La ligne de commande, une fois que vous vous y êtes habitué, vous permet de contrôler votre système avec plus d’efficacité et de précision qu’avec une interface graphique.
Pourquoi s’appelle-t-il « Shell »?
L’interface utilisateur est appelée « shell » car c’est la couche externe qui vous sépare des parties les plus profondes du système d’exploitation, appelée noyau. Techniquement, l’interface graphique de votre système d’exploitation est également un « shell », mais la ligne de commande est souvent appelée « le shell ».
Comment accéder à la ligne de commande de Shell ?
La manière la plus courante d’accéder au shell de ligne de commande consiste à utiliser un émulateur de terminal.
Si vous utilisez une distribution Linux moderne, il y a des chances qu’elle démarre dans le système X-Windows , ce qui vous permet d’exécuter des programmes dans leurs propres fenêtres et d’interagir avec eux avec la souris. Il existe différentes manières de lancer un émulateur de terminal, mais voici les plus courantes:
De nombreuses distributions Linux utilisent un environnement de bureau similaire à Microsoft Windows, avec un « menu Démarrer ». Dans ce menu, votre application de terminal se trouve généralement sous « Accessoires ». Par exemple, Lubuntu est livré avec l’émulateur de terminal déjà installé et le raccourci se trouve dans le menu Accessoires.
La sélection de l’élément de menu du terminal lance l’émulateur et vous place sur une ligne de commande.
Différentes versions de Linux utilisent différents types de gestionnaires de fenêtres, chacun avec une interface légèrement différente. Avec de nombreux gestionnaires de fenêtres, un clic droit sur le bureau affiche un menu contenant une option de terminal. Par exemple, le menu contextuel de Crunchbang Linux comporte une option « Terminal ». Voici à quoi ressemble ce menu, après un clic droit n’importe où sur le bureau.
Ici, le menu Accessoires aurait également une option pour exécuter le terminal.
Sur de nombreuses versions de Linux, le raccourci clavier par défaut pour lancer un terminal consiste à appuyer simultanément sur la touche Super et sur la touche « T« . (La Super clé est généralement la première clé à gauche de la barre d’espace, également appelée clé Windows).
Si vous ne savez pas comment lancer votre émulateur de terminal, consultez la documentation de votre système d’exploitation spécifique et recherchez «terminal».
L’invite de commande
Lorsque vous lancez l’émulateur de terminal, une invite de commande s’affiche.
Remarque : Ces exemples sont tous exécutés à l’aide du shell Bourne-Again (bash), qui est le shell de ligne de commande par défaut sous Linux.
Regardons cette invite de commande de près. L’invite peut être configurée pour être ce que vous voulez, mais par défaut, elle ressemble à ce que nous voyons ici, nous fournissant des informations utiles avant de saisir une commande.
Plus précisément, il nous indique qui nous sommes (nom d’utilisateur) et où nous sommes (quel système nous utilisons et notre répertoire de travail).
Saisie de commandes
Entrons notre première commande. Nous devrions commencer par lister les fichiers dans notre répertoire personnel. Le moyen le plus simple de voir tous ces fichiers est d’utiliser la commande ls; tapez ls à l’invite de commande et appuyez sur Entrée.
Comme indiqué ci-dessus, la commande ls répertorie le contenu du répertoire et nous place à une autre invite de commandes.
Remarque : Toutes les commandes et noms de fichiers sous Unix et Linux sont sensibles à la casse. La commande ls, par exemple, doit être saisie en lettres minuscules, comme ci-dessus.
Pour une liste plus détaillée du contenu du répertoire, nous pouvons spécifier des options de ligne de commande, également appelées commutateurs. Ce sont des arguments supplémentaires à la commande qui modifient son fonctionnement. Ici, nous utiliserons l’option -l (utiliser le format longue liste) pour obtenir plus d’informations de notre liste:
Comme indiqué ci-dessus, la commande ls -l nous fournit beaucoup plus d’informations sur le contenu de notre répertoire personnel. Pour le moment, les informations les plus importantes à noter sont que la première lettre des listes est un d, ce qui signifie que chacun de ces contenus de répertoire est lui-même un répertoire.
Effacer l’écran
Avant de faire quoi que ce soit d’autre, effacez l’écran pour supprimer l’encombrement produit par la sortie de nos commandes précédentes. Utilisez la commande clear en tapant clear à une nouvelle invite de commande et appuyez sur Entrée.
Après avoir appuyé sur Entrée, l’écran s’efface et vous place à une nouvelle invite de commandes en haut de l’écran de votre terminal.
Changer de répertoire
Passons dans notre dossier de documents en utilisant la commande cd (« change directory« ). Pour modifier le répertoire en cours, tapez « cd » puis un espace, puis le nom du répertoire dans lequel vous souhaitez changer, puis appuyez sur Entrée.
La commande cd suppose que le nom de tout répertoire que vous spécifiez est relatif à votre répertoire actuel. Par conséquent, pour changer dans le répertoire de documents, qui existe dans notre répertoire actuel, tapez « cd documents ».
L’invite de commande reflète désormais le nouveau répertoire de travail: ~ / documents, ce qui équivaut au chemin d’accès complet: / home / yourname / documents. Quel que soit l’utilisateur avec lequel vous êtes connecté, « ~ » représente toujours votre répertoire personnel. Dans l’exemple, le nouveau répertoire de travail est également visible dans la barre de titre de notre fenêtre de terminal.
Remarque : Contrairement à MS-DOS et à Microsoft Windows, les noms de répertoires hiérarchiques sous Linux sont séparés par une barre oblique (« /« ) plutôt que par une barre oblique inverse (« \« ). Ce changement de symboles est une différence fondamentale entre ces différents systèmes d’exploitation.
A tout moment, vous pouvez vérifier votre répertoire actuel en utilisant la commande pwd (« print working directory »).
La commande imprime le nom du répertoire en cours sur le terminal, dans ce cas « / home / votrenom / documents« . Encore une fois, avec « ~ / documents » le « ~ » représente notre répertoire personnel, qui est / home / yourname. Donc, si nous sommes dans notre répertoire personnel, taper « cd documents », « cd / home / votrenom / documents » ou « cd ~ / documents » nous placerait tous dans le même répertoire.
Maintenant, montons d’un répertoire dans notre répertoire personnel. Le nom de répertoire spécial « .. » (le double point) signifie « un répertoire ».
Nous sommes maintenant de retour dans notre répertoire personnel.
Note : Si vous êtes plus familier avec MS-DOS, gardez à l’esprit qu’il doit y avoir un espace entre cd et les deux points.
Déplacement de fichiers
Maintenant, familiarisons-vous avec le déplacement des fichiers.
Disons que nous venons de télécharger deux images avec un navigateur Web, et ils ont enregistré dans notre dossier de téléchargements. Allons là-bas et jetons un coup d’oeil. Tout d’abord, nous changeons de répertoire dans le répertoire de téléchargements.
Puis listez les fichiers du répertoire avec la commande ls.
Nous voyons ici deux fichiers JPEG. Sortons-les du dossier des téléchargements et placez-les à un endroit plus approprié, comme le dossier images. Pour déplacer ces fichiers, nous utiliserons la commande mv (« move »).
La commande mv prend la forme générale suivante:
mv [OPTIONS …] DESTINATION SOURCE
OPTIONS est entre crochets car vous n’êtes pas obligé de spécifier des options pour terminer la commande. Les arguments SOURCE et DESTINATION sont tous deux requis.
SOURCE est le nom du ou des fichiers que vous souhaitez déplacer. DESTINATION est l’endroit où vous souhaitez les déplacer. Si DESTINATION est un nom de répertoire, le ou les fichiers sont déplacés dans ce répertoire.
Nous sommes actuellement dans le répertoire / home / votrenom / downloads et nous souhaitons déplacer les fichiers dans / home / votrenom / images. Nous pourrions spécifier notre DESTINATION en utilisant le chemin complet (« / home / yourname / images« ), ou en tant que chemin relatif à notre répertoire actuel (« ../images« ), ou en utilisant un tilde comme abréviation pour notre répertoire personnel ( « ~ / images« ). Tous ces éléments sont équivalents et donnent le même résultat. Utilisons le chemin relatif de notre DESTINATION: ../images.
Alors, comment allons-nous spécifier notre SOURCE?
Nous voulons déplacer les deux fichiers, et ils sont les seuls fichiers du répertoire. Donc, le moyen le plus simple de les spécifier serait de dire à mv « déplacer tous les fichiers de ce répertoire dans ../images ».
Un caractère générique est un caractère spécial qui peut représenter plus d’un nom de fichier (ou plus d’une partie du nom de fichier). Ici, nous allons utiliser le caractère générique astérisque (« * »). Si nous utilisons * comme nom de fichier complet, le shell applique notre commande à chaque fichier de notre répertoire de travail.
Donc, notre commande se lira comme suit: « mv * ../images« . Entrons le maintenant.
On dirait que rien ne s’est passé, mais c’est la façon dont le shell nous dit qu’aucune erreur ne s’est produite. En cas de problème, il afficherait un message d’erreur ou un avertissement quelconque.
Vérifions que les fichiers ont été déplacés. Nous pouvons répertorier le contenu d’un autre répertoire en exécutant ls et en spécifiant un chemin d’accès. Dans ce cas, notre chemin est « ../images« :
Les images sont à la fois là, avec un autre répertoire qui existait déjà (« wallpapers »). Nous devrions créer un nouveau répertoire pour mieux organiser nos images et éviter que le répertoire principal des images ne soit encombré. Faisons cela maintenant.
Créer des répertoires
Changeons dans le répertoire images où résident nos deux images pingouin.
Faisons maintenant un nouveau répertoire pour nos images pingouin. La création de nouveaux répertoires est effectuée avec la commande mkdir.
La forme la plus simple de la commande mkdir est de lui donner un argument: le nom du nouveau répertoire. Nous aimerions créer un nouveau répertoire dans notre répertoire courant, nous n’avons donc pas à attribuer à mkdir un chemin complet, juste le nom du répertoire lui-même. Appelons notre nouveau répertoire pingouin-pix.
Donc, la commande que nous allons entrer est « mkdir penguin-pix » pour créer un nouveau répertoire.
Maintenant, vérifions que c’est là, en listant le contenu du répertoire:
Liste des fichiers dans le répertoire images en utilisant la commande ls
Remarque : Vous pouvez voir que lorsque nous listons le contenu du répertoire, les noms de fichiers et les noms de répertoires sont de couleurs différentes pour vous aider à identifier les différents fichiers et répertoires. Bien que la mise en évidence des couleurs soit commune à la plupart des shells, tous les shells ne le font pas par défaut.
Si nous ne pouvions pas dire par la couleur des noms, nous pourrions toujours vérifier lesquels de ces fichiers sont des répertoires en appelant ls avec l’option -l (longue liste).
Les informations supplémentaires incluent les autorisations (qui a accès au fichier et quel type d’accès), la propriété (qui est le propriétaire du fichier), l’auteur (qui a créé le fichier), la taille du fichier et mtime (date de la dernière modification). La première lettre sur les lignes pour pingouin-pix et wallpapers est un « d », indiquant que ce sont des répertoires. Pour plus d’informations sur les listes de fichiers, consultez la documentation de la commande chmod.
Nous pouvons maintenant déplacer nos images dans le nouveau répertoire. Pour dire à mv quels fichiers déplacer, nous pouvons utiliser à nouveau un caractère générique, mais cette fois, faisons en sorte qu’il sache qu’il ne doit déplacer que les fichiers image, pas les répertoires. Comme les deux fichiers image se terminent par l’extension JPEG .jpg, nous pouvons spécifier le nom de fichier « * .jpg« : cela indique au shell « les fichiers que je veux déplacer sont des fichiers du répertoire en cours qui se terminent par .jpg ». Ainsi, notre commande ressemblera à ceci: « mv * .jpg penguin-pix »:
Aucun message d’erreur n’a été donné, ce qui signifie que la commande s’est terminée correctement. Vérifions que les fichiers ont été déplacés en listant le contenu de pingouin-pix:
Supprimer des fichiers
Nous avons deux images de pingouin, mais nous avons peut-être décidé que nous n’avions besoin que de real-penguin.jpg, et nous n’avons plus besoin de tux-the-penguin.jpg. Nous pouvons supprimer ce fichier en utilisant la commande rm (« remove« ).
Nous devons fournir à rm le nom du fichier à supprimer. Nous sommes actuellement dans le répertoire images, mais notre image est maintenant dans le sous-répertoire penguin-pix. Nous pourrions changer notre répertoire de travail en penguin-pix, puis exécuter la commande, mais ce n’est qu’un travail supplémentaire, nous pouvons sauter cette étape en utilisant le répertoire comme partie du chemin.
Notre commande ressemblera à ceci: « rm penguin-pix / tux-the-penguin.jpg« :
Encore une fois, le shell exécute notre commande sans donner de retour. la commande a été exécutée avec succès, de sorte que le shell nous renvoie à l’invite de commande, nous indiquant qu’il est prêt pour une autre commande.
Avertissement : Contrairement au fait de faire glisser un fichier vers la corbeille ou vers la corbeille Microsoft Windows, il est impossible d’annuler la suppression d’un fichier avec rm. Retirez vos fichiers avec soin! Une fois parti, il est (pratiquement) impossible de les récupérer.
Vérifions simplement que le fichier a vraiment disparu:
Supprimer des répertoires
C’est génial pour les fichiers, mais qu’en est-il des répertoires? Par défaut, rm ne supprime que les fichiers et non les répertoires.
La commande rmdir (« remove directory« ) supprime un répertoire, en supposant qu’il soit vide. Testons-le en créant un nouveau répertoire vide en utilisant la commande « mkdir test-directory« .
Vérifions qu’il existe avec la commande « ls -l« .
Nous pouvons maintenant supprimer notre tout nouveau répertoire en utilisant la commande « rmdir test-directory » et vérifier qu’il est parti en exécutant à nouveau la commande « ls -l« .
Oui, c’est parti.
Cependant, que se passerait-il si nous essayions de « rmdir penguin-pix« ?
Obtenir une erreur indiquant que rmdir n’a pas réussi à supprimer un répertoire
Nous ne pouvons pas rmdir ce répertoire car il n’est pas vide.
Si vous êtes sûr de vouloir supprimer penguin-pix et tout ce qu’il contient (y compris tous les fichiers et répertoires qu’il contient), vous pouvez utiliser la commande rm avec l’option -r.
Normalement, rm ne fonctionnera pas sur un répertoire. Cependant, si elle est appelée avec l’option -r, rm supprime récursivement un répertoire, ce qui signifie qu’il se déplace dans le répertoire et dans tous les sous-répertoires, en supprimant tout ce qui inclut le répertoire. Donc, si nous exécutons la commande « rm -r penguin-pix« , cela supprime le répertoire et le fichier qui se trouvait à l’intérieur. S’il y avait des répertoires à l’intérieur, ils auraient également été supprimés.
Attention! Encore une fois, il n’y a pas d’annulation pour cette commande. Lorsque vous rm -r un répertoire, ce répertoire et tout ce qu’il contient sont supprimés pour toujours! Comme la plupart des commandes Linux, rm est très puissant et doit être utilisé avec précaution.
Copier des fichiers
Pour copier un fichier, utilisez la commande cp. La forme la plus simple de cp est:
cp SOURCE DESTINATION
SOURCE est le nom du fichier que vous souhaitez copier et DESTINATION est le chemin spécifiant la destination du nouveau fichier. La destination peut être un nouveau nom de fichier ou le nom du répertoire dans lequel vous souhaitez trouver une copie.
Disons que nous avons un fichier texte dans notre dossier de documents appelé orig.txt, et nous voulons en faire une copie appelée copy.txt. La commande à utiliser est « cp orig.txt copy.txt« :
Si, par contre, nous spécifions un répertoire comme destination de la commande cp, il en crée une copie avec le même nom que l’original dans le répertoire de destination. Dans l’exemple suivant, nous faisons six choses:
- Répertorie le contenu du répertoire de travail;
- Créez un nouveau répertoire, appelé copies;
- Lister le contenu du répertoire de travail, qui inclut maintenant le répertoire des copies;
- Répertorie le contenu du répertoire des copies (il n’y en a pas. Il est vide);
- Copier copy.txt dans le répertoire des copies;
- Répertorie le contenu du répertoire des copies, qui contient désormais une copie de copy.txt.
Renommer un fichier
La commande mv peut également être utilisée pour modifier le nom d’un fichier. Par exemple, la commande « mv orig.txt original.txt » renommera le fichier orig.txt en original.txt:
Renommer un répertoire
Renommer des répertoires fonctionne exactement comme renommer des fichiers, avec la commande mv. Ici, nous créons un répertoire nommé « copy« , mais nous le renommons « copies » en utilisant la commande « mv copy copies« :
Si le répertoire de copie contenait des fichiers ou des répertoires, ils resteraient inchangés. La seule chose qui changerait serait le nom du répertoire qui les contenait.
Quitter Shell
Si vous tapez la commande exit, vous quittez le Shell de commande et fermez la fenêtre du terminal ou préparez la fenêtre du terminal pour qu’elle soit fermée manuellement.