Le Shell

Résumé

Cet article a pour but d'expliquer ce qu'est le Shell et les principales commandes qu'il permet. Bien entendu il faudrait plus qu'un seul article pour donner tous les détails de l'intépréteur de commande sous Linux, nous vous offrons donc dans ce qui suit une Initiation au Shell.


 

 

 

 

Introduction

 

Tout d'abord qu'est-ce que le Shell? Il s'agit en fait de l'interpréteur de ligne de commande de Linux, tout comme le MS-DOS qui est celui de Windows. Mais c'est quoi ça aussi un interpréteur de ligne de commande me direz-vous? Eh bien c'est en fait l'interface homme-machine dans laquelle la communication entre l'utilisateur et l'ordinateur s'effectue en mode texte. En pratique l'utilisateur tape du texte au clavier, le système analyse ce qu'on lui a demandé et soit ouvre une application soit envoie une réponse si on lui a fait une requête.
Voilà à quoi ressemble un Shell :

shell.pngCliquez pour agrandir

 

L'article qui suit ne se veut pas être un cours complet et exhaustif sur le shell et ce pour deux raisons : d'une part le sujet est trop vaste et il me serait impossible de traiter le tout en un seul article, et d'autre part il existe déjà quelques tuto très bien faits pour lesquels les liens seront donnés plus bas.
Malgrès tout je vais redonner ici les bases du Shell et également les commandes de base qui vous permettront de débuter et d'avancer tout de même dans son maniement.

 

 

Premiers pas

 

Lorsque vous lancez votre Shell vous tombez sur cette fenêtre :

shell2.pngCliquez pour agrandir

Il faut savoir que plusieurs Shells sont disponibles tels que le bash, sh, tcsh, ksh, ash, csh, etc. Cependant la plupart des distributions utilisent aujourd'hui le bash, ce sera donc celui que j'utiliserai dans cet article. Mais rassurez-vous il n'y a quasiment pas de différences entre les différents shells.

Donc vous tombez au démarrage de votre shell sur cette ligne :

 [linuxtuto@localhost ~]$ 

 

Evidemment cette ligne sera différente pour vous. Décrivons là :

- linuxtuto correspond au nom d'utilisateur sous lequel vous vous êtes connecté,
- localhost correspond au nom de votre ordinateur. Ici je ne lui avais pas donné de nom, mais vous auriez pu avoir pc-de-linuxtuto par exemple,
- ~ ce symbole signifie que vous êtes dans votre répertoire maison (votre home),
- $ et ce symbole quand à lui signifie que vous êtes un utilisateur.

Remarque : Vous auriez été root, c'est à dire le super-utilisateur (l'administrateur qui s'occupe du système, celui qui a tous les droits sur chaque fichier), le symbole $ serait devenu un # .

 

 

Les premières commandes

 

Devenir root : su

En parlant du root, voyons notre première commande : celle qui nous fait devenir root.

 [linuxtuto@localhost ~]$  su 
 Mot de passe:
ou
 [linuxtuto@localhost ~]$  sudo su
 Mot de passe: 

Un message apparait vous demandant d'entrer le mot de passe du root. Entrez-le et une nouvelle ligne apparaît :

 [root@localhost linuxtuto]# 

 

Comme vous pouvez le constater l'utilisateur linuxtuto s'est transformé en root, le répertoire courant ~ est devenu linuxtuto (en effet je ne suis pas dans le repertoire courant du root mais bien dans celui de l'utilisateur linuxtuto), et le $ s'est transformé en #.

 

Attention :A partir de ce moment vous faites ce que vous voulez sur le système, vous pouvez changer les paramètres d'administration mais vous pouvez également effacer n'importe quel fichier, même un de ceux nécessaires au bon lancement de Linux! L'utilisateur root est donc à utiliser avec une grande prudence.

Par la suite lorsque vous souhaiterez revenir à l'utilisateur normal vous n'aurez qu'à taper :

 [root@localhost linuxtuto]# exit

 

Naviguer dans le shell : pwd, cd et ls

Les commandes pwd et cd vont vous permettrent de vous "balader" dans l'arborescence de linux, comme si vous cliquiez sur sur l'icône d'un dossier pour entrer dedans.

Tout d'abord regardons dans quel répértoire nous sommes, pour cela :

 [linuxtuto@localhost ~]$ pwd
 /home/linuxtuto

On peut voir que nous sommes dans le repertoire linuxtuto/, lui-même contenu dans le répertoire home/, qui lui aussi est contenu dans le repertoire racine /. Regardons maintenant ce que ce répertoire contient avec la commande ls:

 [linuxtuto@localhost ~]$ ls
 Bureau Documents Musiques Images Videos Téléchargements 

Dans mon exemple il y a plusieurs répertoires, 6 en tout. Nous allons maintenant utiliser la commande cd pour entrer dans l'un de ces répertoires :

 [linuxtuto@localhost ~]$ cd Musiques
 [linuxtuto@localhost Musiques]$ ls
 indochine.mp3 scorpion.mp3

Et voilà pour l'utilisation de ces 3 commandes, vous l'aurez constater il n'y a rien de bien compliqué là-dedans. Pour rappel : pwd pour voir où l'on est, ls pour voir ce que le répertoire dans lequel on est contient, et cd pour changer de répertoire.

Pour la commande cd il y a quelques petites astuces, comme cd .. pour aller dans le répertoire parent et cd tout court pour aller dans le répertoire /home de l'utilisateur.

 

Création et suppression de fichiers et de répertoires : touch, rm, mkdir et rmdir

Bon on sait maintenant naviguer dans les répertoires mais on ne sait pas comment les créer et les supprimer. Nous allons donc créer un répertoire avec la commande mkdir:

 [linuxtuto@localhost ~]$ ls
 Bureau Documents Musiques
 [linuxtuto@localhost ~]$ mkdir FichiersTexte
 [linuxtuto@localhost ~]$ ls
 Bureau Documents Musiques FichiersTexte

On peut constater que le répertoire FichiersTexte a bien été créé.

Créons un fichier texte dedans avec la commande touch :

 [linuxtuto@localhost ~]$ cd FichiersTexte
 [linuxtuto@localhost FichiersTexte]$ touch essai.txt
 [linuxtuto@localhost FichiersTexte]$ ls
 essai.txt

Et voilà! Nous avons bien notre nouveau fichier texte contenu dans notre nouveau répertoire.

 

Si nous souhaitons supprimer notre fichier texte, rien de plus simple il suffit d'utiliser la commande rm :

 [linuxtuto@localhost FichiersTexte]$ rm essai.txt
 [linuxtuto@localhost FichiersTexte]$ ls
 

Notre fichier texte a disparu!

De plus si nous souhaitons supprimer le répertoire FichiersTexte, il faut utiliser la commande rmdir :

 [linuxtuto@localhost FichiersTexte]$ cd
 [linuxtuto@localhost ~]$ ls
 Bureau Documents Musiques FichiersTexte
 [linuxtuto@localhost ~]$ rmdir FichiersTexte
 [linuxtuto@localhost ~]$ ls
 Bureau Documents Musiques

Le répertoire FichiersTexte a désormais disparu!


Remarque :
Cependant si vous avez essayer de supprimer un répertoire qui contenait un ou plusieurs fichiers, vous avez pu constater qu'un message d'erreur apparaissait vous signalant que le répertoire n'était pas vide. Pour outrepasser cette erreur :

 [linuxtuto@localhost ~]$ rm -r votre_repertoire

 

Manipuler des fichiers : cp, mv

Dans les interfaces graphiques il y a le bon vieux bouton droit --> copier-coller ou couper-coller. Mais comment faire en ligne de commande? Eh bien il y a une commande allouée à chaque cas : le copier et le couper. Pour copier-coller un fichier la commande est cp. Pour l'utiliser la syntaxe est:

 [linuxtuto@localhost ~]$ cp  fichier_source  repertoire_cible

Donc si je veux copier le fichier /home/moi.jpg dans le dossier /home/photos/ je fais :

 [linuxtuto@localhost ~]$ cp  /home/moi.jpg  /home/photos/

Si c'est un répertoire que vous souhaitez copier-coller il faudra faire un cp -r. Par exemple :

 [linuxtuto@localhost ~]$ cp -r  /home/mes_vacances/  /home/photos/

 

Pour couper un fichier maintenant la méthode utilisée est simplement de le "changer" d'emplacement. La commande est donc mv avec comme syntaxe :

 [linuxtuto@localhost ~]$ mv  fichier_source  repertoire_cible

Ce qui donnerait en reprenant l'exemple du copier-coller : :

 [linuxtuto@localhost ~]$ mv  /home/moi.jpg  /home/photos/

Dans ce cas et contrairement à la commande cp le fichier moi.jpg n'existera plus dans /home mais uniquement dans /home/photos .
La commande est la même lorsque qu'il s'agit de répertoire, à savoir :

 [linuxtuto@localhost ~]$ mv  /home/mes_vacances/  /home/photos/

 

Remarque : Si vous vous trouvé déjà dans le /home/ il n'y a pas besoin de l'écrire dans la commande. Par exemple ici j'aurais pu mettre :

 [linuxtuto@localhost ~]$ cp  moi.jpg  photos/
 [linuxtuto@localhost ~]$ cp -r  mes_vacances/  photos/
 [linuxtuto@localhost ~]$ mv  mes_vacances/  photos/

 

Manuel des commandes : man

J'ai parlé précédemment des commandes de base sans en spécifier les options. Les options sont des lettres à rajouter en plus de la commande et précédées d'un tiret. Elles changent en quelque sorte la propriété de la commande.
Par exemple pour la commande ls vue plus haut, une de ses options est :

 [linuxtuto@localhost ~]$ ls -l

A la différence de la simple commande ls, celle-ci donne quelques informations supplémentaires telles que les permissions du fichier, le propriétaire, sa taille...

 

Et cet exemple n'en est qu'un parmi tant d'autres. En effet chaque commande contient un nombre plus ou moins important d'options, pouvant aller jusqu'à une vingtaine voire plus. Et en sachant qu'il y a plus d'une centaine de commandes linux... Imaginez le nombre de combinaisons :S

Mais ne vous inquiétez pas, il ne vas pas falloir apprendre par coeur ces centaines de combinaisons ou encore se balader avec un calepin les répertoriant toutes! Pour cela les concepteurs du shell ont prévu un outils plus que pratique : la commande man !

Cette commande suivie d'une seconde nous donne toute une page de manuel expliquant comment se servir de la seconde commande, quelles sont les options possibles et à quoi servent-elles. A titre d'exemple si je veux la page de manuel de la commande ls je tapes simplement :

 [linuxtuto@localhost ~]$ man ls

Son utilité : Pas besoin de connaître chaque option par coeur, on consulte la page du manuel de la commande et on sait tout de suite quelle option choisir!
Retenez bien cette commande man et surtout n'hésitez pas à l'utiliser elle peut s'avérer forte utile à tout moment.

 

Comment ouvrir un fichier?

Pour l'instant nous savons naviguer dans les dossiers, créer ou supprimer des fichiers mais comment faire pour ouvrir un fichier? Par exemple ouvrir dans un éditeur de texte un fichier texte, ou ouvrir dans un navigateur une page html.
Pour cela rien de plus simple, il suffit simplement d'écrire le nom du programme que l'on souhaite voir s'ouvrir, suivi du fichier qui sera ouvert dedans.

Si je souhaites ouvrir une page html contenue dans l'un de mes répertoires avec Firefox, je tapes :

 [linuxtuto@localhost ~]$ firefox ma_page.html & 

Pour un fichier video :

 [linuxtuto@localhost ~]$ vlc ma_video.mpg & 

 

Je vous entends déjà : "Mais c'est quoi ce & ?!"
En fait lorsque vous lancez une application c'est un processus qui démarre sous linux. Et si vous ne mettez pas ce & (é commercial) à la fin de la commande votre shell restera lié au processus invoqué. Donc plus moyen d'utiliser le shell et donc de lancer d'autres applications (sauf en ouvrant un autre shell). En revanche si vous mettez bien le & pas de souci votre application se lancera correctement et vous pourrez par la suite continuer d'utiliser votre shell.

Bien entendu il arrive que par mégarde on oublie ce &. Il n'y a pas de quoi s'inquiéter, dans ce cas il suffit de faire un Ctrl+Z (touche Ctrl de votre clavier et en même temps la lettre Z) sur votre shell pour revenir en ligne de commande et de lancer la commande bg pour remettre l'application en arrière-plan. Ce qui donnerait :

 [linuxtuto@localhost ~]$ firefox
 (Je fais le Ctrl+Z)
 [3]+ Stopped       firefox
 [linuxtuto@localhost ~]$ bg
 [3]+ firefox & 

Remarque : le nombre entre crochets est le numéro de « job » du shell. Ce numéro sert à identifier les commandes du shell de manière unique.

 

Voilà pour les principales commandes de linux qui vous serviront à naviguer, manipuler et ouvrir des fichier. Mais il en existe bien sûr des dizaines d'autres toutes plus importantes les unes que les autres.

 

Tableau des commandes de base

Une liste récapitulative étant plus simple à lire qu'un long texte, voici une liste non-exhaustive des commandes de base de linux :

 

Commande shell Équivalent M$Dos À quoi ça sert Exemple
cd cd change le répertoire courant. cd ..
- va dans le répertoire parent du répertoire courant
cd /home/user/.nsmail
- va dans le répertoire désigné
ls dir affiche le contenu d'un répertoire ls
- affiche le contenu du répertoire courant
ls -l
- affiche le contenu du répertoire courant de manière détaillée
ls -a /home/user
- affiche le contenu du répertoire avec que les fichiers cachés.
cp copy
xcopy
copie un ou plusieurs fichiers cp toto /tmp
- copie le fichier toto dans le répertoire /tmp
cp toto titi
- copie le fichier toto sur le fichier titi
cp -R /home/user /tmp/bak
- copie le répertoire /home/user ainsi que tout ce qu'il contient dans /tmp/bak
rm del efface un ou plusieurs fichiers rm toto titi
- efface les fichiers toto et titi
rm -f toto titi
- efface les fichiers toto et titi sans demander confirmation
rm -rf deltree efface un répertoire et son contenu rm -rf /dossiernonvide/* (mdk)
- efface (sans demander de confirmation) tous les fichiers et répertoire de /tmp
rm -r (non mdk)
mkdir md crée un répertoire mkdir /home/user/mes documents
- crée le répertoire "mes documents" dans le sous répertoire /home/user
rmdir rm efface un répertoire s'il est vide rmdir /home/user/.nsmail
- efface le répertoire .nsmail de /home/user si celui-ci est vide
mv ren
move
déplace ou renomme  un ou des fichiers mv tata titi
- renomme tata en titi
mv * *.bak
- ne fonctionne pas !!!!
mv * /tmp/bak
- déplace tous les fichiers du répertoire courant vers le répertoire  /tmp/bak
find dir -s trouve un fichier répondant à certains critères find /home -name "*bash*"
- trouve tous les fichiers contenant le mot bash dans leur nom se trouvant dans le répertoire /home
locate dir -s trouve un fichier d'après son nom locate bash
- trouve tous les fichiers contenant le mot bash dans leur nom complet (avec le répertoire) : à la différence de find, locate trouve ses informations dans une base de donnée créée par updatedb
man help affiche l'aide concernant une commande particulière man ls
- affiche l'aide (page de manuel) de la commnade ls. On quitte man en appuyant sur la touche 'q'
chmod pas
d'équivalent
modifie les permissions d'un fichier chmod o+r /home/user
- autorise les autres (o=other) (ie: ceux qui ne sont ni le propriétaire, ni membre du groupe propriétaire) à lire (r=read) le répertoire /home/user
chmod a+rw /home/user/unfichier
- autorise tout le monde (a=all) à lire et écrire (w=write) dans le fichier /home/user/unfichier
chown pas
d'équivalent
modifie le propriétaire d'un fichier chown user unfichier
rend user propriétaire de unfichier.
chgrp pas
d'équivalent
modifie le groupe proprétaire d'un fichier chgrp -R nobody /home/httpd
- rend le groupe : nobody (un groupe ayant très peu de droit sur un système linux) propriétaire de /home/httpd ainsi que tout les fichiers qu'il contient (-R)
ln -s pas
d'équivalent
crée un lien vers un fichier ln -s /dev/fd0 /dev/disquette
crée un lien vers /dev/fd0 (le lecteur de disquette) nommé /dev/disquette. La manipulation de /dev/fd0 et /dev/disquette (sauf l'effacement).
grep pas
d'équivalent
recherche une chaine dans un fichier (en fait recherche une expression régulière dans plusieurs fichiers) grep chaine *.txt
- recherche la chaine 'chaine' dans tous les fichier se terminant par .txt.
which pas
d'équivalent
trouve le répertoire dans lequel se trouve un commande which emacs
- retourne le nom du répertoire dans lequel se trouve la commande emacs.
cat type affiche un fichier à l'écran cat ~/.bashrc
- affiche le contenu du fichier ~/.bashrc

 

(Ce document est tiré du site Guides-info.org.)

 

 

Liens

Je vous invite à consulter ces sites qui expliquent très bien le shell et ses commandes de base :

- Léa-linux : le shell

- Coagul.org : les commandes de base

 


Creative Commons License
Cette création par http://www.linuxtuto.fr est mise à disposition selon les termes de la licence Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France.

Nouveaux membres

  • khaloudovic
  • Raul678
  • Fantômas
  • Gregoriz
  • bayoro

Utilisateurs en ligne

Il y a actuellement 1 utilisateur et 3 invités en ligne.

Commentaires récents