Aller au contenu

Memento commande Linux

Ce chapitre est un extrait remis en forme d'un document dont l'auteur est Frédéric Junier. Celui-ci a précisé : Memento directement inspiré des livres La ligne de commande par l’exemple de Vincent Fourmond et Parlez-vous Shell ? de Thomas Hugel.

Dans ce memento, nous présentons des commandes du shell BASH sous licence libre, qui est le shell par défaut sur la plupart des distributions du système d’exploitation libre Linux. On distinguera parfois fichiers et répertoires mais on rappelle que les répertoires sont juste des fichiers spéciaux, qui contiennent d’autres fichiers. Un memento en ligne est disponible sur https://juliend.github.io/linux-cheatsheet/.

I. Généralités⚓︎

Pour faciliter la saisie des commandes avec le clavier, BASH offre quelques raccourcis clavier bien pratiques :

la touche de tabulation

La touche de tabulation permet d’appeler la complétion automatique qui propose de compléter la commande avec les choix possibles (fichiers ou commandes existants). Par exemple si on saisit pw, l’appui sur la touche de tabulation nous propose plusieurs commandes commençant par ce préfixe :

Text Only
 junier@fredportable:~$ pw
 pwck      pwconv    pwd       pwdx      pwgen     pwunconv
Les flèches de direction Haut et Bas

Les flèches de direction Haut et Bas permettent de naviguer dans l’historique des commandes.

documentation : man

La plupart des commandes du shell sont dotées d’une documentation accessible depuis l’interpréteur avec la commande man. Par exemple pour afficher l’aide de la commande ls, on écrira man ls.

commande, arguments et options

Une commande shell est constituée du nom de la commande suivi d’un ou plusieurs arguments. Des options précédées peuvent modifier le comportement de la commande :

nom_commande -option1 -option2 ... arg1 arg2 arg3 ...

II. Les commandes usuelles⚓︎

La commande ls

Ainsi, la commande ls permet d’afficher des informations sur répertoire ou un fichier :

  • Sans argument, ni option ls liste le contenu du rĂ©pertoire courant :

    junier@fredportable:~/sandbox$ ls fichier1 fichier2 fichier3 fichier4 rep1 rep2

  • Avec l’option -l elle affiche des informations dĂ©taillĂ©es sur chacun des fichiers contenus dans le rĂ©pertoire :

    junier@fredportable:~/sandbox$ ls -l
    total 8
    -rw-rw-r-- 1 junier junier 0 août 16 21:43 fichier1
    ...........
    drwxrwxr-x 2 junier junier 4096 août 16 21:44 rep1
    drwxrwxr-x 2 junier junier 4096 août 16 21:44 rep2

  • Si on passe un rĂ©pertoire en argument Ă  la commande, elle affiche son contenu.

    junier@fredportable:~/sandbox$ ls -l rep1
    total 0
    -rw-rw-r-- 1 junier junier 0 août 16 21:44 photo1.jpg
    -rw-rw-r-- 1 junier junier 0 août 16 21:44 photo2.jpg

La commande pwd

La commande pwd pour print work directory permet d’afficher le répertoire courant dit de travail. Le symbole tilde ~ est un raccourci pour désigner le répertoire personnel de l’utilisateur, en général /home/utilisateur.

Text Only
 junier@fredportable:~/sandbox$ pwd
 /home/junier/sandbox

La commande cd

La commande cd pour change directory permet de changer de répertoire courant.

  • Sans argument ou avec cd ~ elle ramène l’utlisateur dans son rĂ©pertoire personnel /home/utilisateur. cd - ramène dans le rĂ©pertoire prĂ©cĂ©dent

    Text Only
          junier@fredportable:~/sandbox$ cd
          junier@fredportable:~$ pwd
          /home/junier
          junier@fredportable:~$ cd -
          /home/junier/sandbox
    
  • cd .. permet de remonter dans le rĂ©pertoire parent :

    Text Only
         junier@fredportable:~/sandbox$ pwd
         /home/junier/sandbox
         junier@fredportable:~/sandbox$ cd ..
         junier@fredportable:~$ pwd
         /home/junier
    
  • On peut fournir Ă  cd un chemin absolu ou relatif mais il faut que le chemin soit uniquement constituĂ© de rĂ©pertoires !

    Text Only
          junier@fredportable:~/sandbox$ cd /home/junier/sandbox/rep1
          junier@fredportable:~/sandbox/rep1$ cd ..
          junier@fredportable:~/sandbox$ cd rep1
          junier@fredportable:~/sandbox/rep1$ cd photo1.jpg
          bash: cd: photo1.jpg: N'est pas un dossier
    

Copier, supprimer, déplacer un fichier⚓︎

La commande mv

La commande mv pour move sert à déplacer ou renommer des fichiers ou des répertoires. Elle prend deux arguments source et cible : si la cible est un répertoire, alors la cible est copiée dedans sinon elle est renommée.

Text Only
 junier@fredportable:~/sandbox$ ls
 fichier1  fichier2  fichier3  fichier4  rep1  rep2  rep3
 junier@fredportable:~/sandbox$ mv fichier1 fichier1-copie
 junier@fredportable:~/sandbox$ ls
 fichier1-copie  fichier2  fichier3  fichier4  rep1  rep2  rep3
 junier@fredportable:~/sandbox$ ls rep1
 photo1.jpg  photo2.jpg
 junier@fredportable:~/sandbox$ mv fichier1-copie rep1
 junier@fredportable:~/sandbox$ ls rep1
 fichier1-copie  photo1.jpg  photo2.jpg
 junier@fredportable:~/sandbox$ mv rep1 rep2
 junier@fredportable:~/sandbox$ ls rep2
 rep1  son1.jpg  son2.jpg

La commande cp

La commande cp permet de copier des fichiers. Elle s’utilise comme mv, sauf que le fichier source n’est pas supprimé. Par défaut cp ne copie que des fichiers, pour copier un répertoire et son contenu, il faut lui passer l’option -R pour recursive.

Text Only
 junier@fredportable:~/sandbox$ ls
 fichier2  fichier3  fichier4  rep2  rep3
 junier@fredportable:~/sandbox$ ls rep2
 rep1  son1.jpg  son2.jpg
 junier@fredportable:~/sandbox$ cp fichier2 rep2
 junier@fredportable:~/sandbox$ ls rep2
 fichier2  rep1  son1.jpg  son2.jpg
 junier@fredportable:~/sandbox$ cp rep2 rep3
 cp: -r non spécifié ; omission du répertoire 'rep2'
 junier@fredportable:~/sandbox$ cp -R rep2 rep3
 junier@fredportable:~/sandbox$ ls rep3
 rep2

La commande rm

La commande rm permet de supprimer les fichiers qu’on lui passe en argument. Pour supprimer un répertoire et son contenu, il faut lui passer l’option -R comme pour cp.

🌵 Attention, rm ne déplace pas les fichiers vers une corbeille, ils sont supprimés définitivement !

Text Only
 junier@fredportable:~/sandbox$ ls
 fichier2  fichier3  fichier4  rep2  rep3
 junier@fredportable:~/sandbox$ rm fichier2
 junier@fredportable:~/sandbox$ ls
 fichier3  fichier4  rep2  rep3
 junier@fredportable:~/sandbox$ rm rep3
 rm: impossible de supprimer 'rep3': est un dossier
 junier@fredportable:~/sandbox$ rm -r rep3
 junier@fredportable:~/sandbox$ ls
 fichier3  fichier4  rep2

III. Gestion des droits sur les fichiers⚓︎

Lecture des droits

Considérons le contenu du répertoire ~/sandbox affiché de façon détaillée avec la commande ls -l :

Text Only
junier@fredportable:~/sandbox$ ls -l
total 8
-rwxrw-r-- 1 junier junier    0 août  16 21:43 fichier3
-rw-rw-r-- 1 junier junier    0 août  16 21:43 fichier4
drwxrwxr-x 3 junier junier 4096 août  16 23:29 rep2
drwxrwxr-x 2 junier junier 4096 août  16 23:33 rep3

👀 Les 10 premiers caractère d’une ligne représentent les droits sur le fichier (ou le répertoire) :

  • Pour fichier3 on a -rw-rw-r-- :

    • le premier caractère - indique qu’il s’agit d’un fichier
    • le premier bloc de trois caractères rwx reprĂ©sente les droits pour le propriĂ©taire (u) du fichier : lecture (r), Ă©criture (w) et exĂ©cution (x).
    • le second bloc de trois caractères rw- reprĂ©sente les droits pour le groupe (g) du fichier : lecture (r), Ă©criture (w) et un tiret - qui marque l’absence de droit d’exĂ©cution
    • le dernier bloc de trois caractères rw- reprĂ©sente les droits pour les autres (o) utilisateurs du fichier : ce sont les mĂŞmes que pour le groupe.
  • Pour rep2 on a drwxrwxr-x :

    • le premier caractère d indique qu’il s’agit d’un rĂ©pertoire
    • les trois blocs de trois caractères suivants Ă©numèrent les droits en lecture (r), Ă©criture (w), exĂ©cution (x) des trois types d’utilisateurs du rĂ©pertoire : propriĂ©taire, groupe et autres.

La commande chmod

Le propriétaire d’un fichier ou le superutilisateur root peut changer les droits d’un fichier ou d’un répertoire avec la commande chmod dont la syntaxe est :

Text Only
 chmod [-R] [ugoa][+-=][rwx] fichier
  • Les options entre crochets dĂ©signent :

    • u : le propriĂ©taire
    • g : le groupe
    • o : les autres utilisateurs
    • a : tous les utilisateurs
    • + : ajouter le(s) droit(s)
    • - : enlever le(s) droit(s)
    • = : fixer le(s) droit(s)
    • r : droit de lecture
    • w : droit d’écriture
    • x : droit d’exĂ©cution
    • -R : rĂ©cursivement (nĂ©cessaire pour agir sur un rĂ©pertoire)
  • Quelques exemples :

    • Fixer les droits Ă  w pour tous les utilisateurs sur fichier3 :

      Text Only
          junier@fredportable:~/sandbox$ chmod a=w fichier3
      
    • Donner le droit d’écriture aux autres utilisateurs sur fichier4:

      Text Only
          junier@fredportable:~/sandbox$ chmod o+w fichier4
      
    • Enlever le droit de lecture Ă  tous les utilisateurs sur fichier4 :

      Text Only
          junier@fredportable:~/sandbox$ chmod ugo-r fichier4
      
    • Enlever le droit de lecture au groupe sur le rĂ©pertoire rep2 :

      Text Only
          junier@fredportable:~/sandbox$ chmod -R g-w rep2
      
    • Affichage des droits après les modifications prĂ©cĂ©dentes :

      Text Only
          junier@fredportable:~/sandbox$ ls -l
          total 8
          ---x--x--x 1 junier junier    0 août  16 21:43 fichier3
          --w--w--w- 1 junier junier    0 août  16 21:43 fichier4
          drwxrwxr-x 3 junier junier 4096 août  16 23:29 rep2
          drwxrwxr-x 2 junier junier 4096 août  16 23:33 rep3