Principales commandes Linux
Dernière mise à jour le 12 décembre 2022
Manipulation des répertoires
Cette sous-section présente les principales commandes qui permettent de manipuler les répertoires.
pwd
La commande pwd
(print working directory) affiche le nom du répertoire courant. Le répertoire courant est parfois appelé répertoire de travail ou encore répertoire actif.
Syntaxe :
pwd
Exemple :
$ pwd /home/patoche $
cd
La commande cd
(change directory) change le répertoire courant pour celui dont le nom est passé en paramètre.
Syntaxe :
cd [répertoire]
Utilisée sans paramètre, cd
ramène l'usager dans son répertoire maison.
Exemple :
$ cd jeux $ pwd /home/patoche/jeux $ cd golf $ pwd /home/patoche/jeux/golf $ cd $ pwd /home/patoche $
mkdir
La commande mkdir
(make directory) crée un ou plusieurs répertoires.
Syntaxe :
mkdir [-p] répertoire(s)
Exemple :
$ mkdir alpha beta $ cd alpha $ pwd /home/patoche/alpha $ mkdir gamma $ cd gamma $ pwd /home/patoche/alpha/gamma $
L'option -p
permet de créer plusieurs niveaux de répertoires en une seule commande.
Exemple :
$ mkdir -p alpha/gamma beta $ cd alpha/gamma $ pwd /home/patoche/alpha/gamma $
rmdir
La commande rmdir
(remove directory) détruit un ou plusieurs répertoires.
Syntaxe :
rmdir répertoire(s)
Exemple :
$ rmdir junk $ rmdir alpha/gamma alpha beta $
ATTENTION : Un répertoire qui contient encore des fichier ne peut être détruit avec rmdir
(voir rm -r
)!
ls
La commande ls
(list) affiche le contenu du répertoire dont le nom est passé en paramètre. Si aucun répertoire n'est spécifié, ls
donne la liste des fichiers du répertoire courant.
Syntaxe :
ls [options] [répertoires et/ou fichiers]
Exemple :
$ ls bin dead.letter jeux bilan.2020 $
La commande ls
offre une foule d'options dont les principales sont énumérées ici :
-a | (all) affiche le nom de tous les fichiers (y compris les fichiers cachés) |
-F | ajoute "/" aux noms de répertoires et "*" aux noms de fichiers exécutables |
-l | (long) affiche la plupart des attributs |
-R | (Recursive) affiche récursivement le contenu de tous les sous-répertoires |
-r | (reverse) affiche les noms dans l'ordre inverse |
-s | (size) affiche la taille en blocs |
-t | (time) affiche d'après la date de la dernière modification |
-i | (inode) affiche le numéro de inode |
Lorsqu'un nom de fichier est passé en paramètre, ls
permet de vérifier directement la présence de celui-ci.
Exemple :
$ ls dead.letter dead.letter $ rm dead.letter $ ls dead.letter $
Chemin d'accès aux fichiers
Un chemin d'accès permet de spécifier sans ambiguïté un fichier particulier dans un système de fichiers Linux.
Ce concept permet d'utiliser comme paramètre d'une commande Linux le nom d'un fichier qui n'est pas dans le répertoire courant ou le nom d'un répertoire qui n'est pas sous-répertoire du répertoire courant.
Chemin absolu
Un chemin d'accès qui débute par le caractère "/" est un chemin d'accès absolu. Il spécifie le chemin complet pour accéder au fichier à partir du répertoire racine.
Exemples :
/home/patoche/jeux /etc/conf/cf.d/init.base
La commande pwd
affiche le chemin d'accès absolu du répertoire courant.
Chemin relatif
Un chemin d'accès qui ne débute pas par un "/" est un chemin d'accès relatif. Il désigne le chemin pour accéder au fichier à partir du répertoire courant.
Exemples :
jeux/golf ... à partir de /home/patoche adm/messages ... à partir de /usr
Répertoire parent
Le symbole ".." désigne le répertoire parent d'un répertoire donné. Il peut être utilisé partout où une commande s'attend à trouver un nom de répertoire.
Exemple :
$ pwd /home/patoche/jeux/golf $ cd .. $ pwd /home/patoche/jeux $
Répertoire courant
Le symbole "." désigne le répertoire courant. Lui aussi peut être utilisé partout où une commande s'attend à trouver un nom de répertoire.
Exemple :
$ cd prog $ cp /home/linda/Test.java . $
Répertoire maison
Dans un système utilisant le shell Bash, le caractère "~" peut être utilisé pour désigner le répertoire maison.
Exemple :
$ cd /home/linda $ cp Test.java ~/prog $
Manipulation des fichiers
Cette sous-section présente les principales commandes qui permettent de manipuler les fichiers.
cat
C'est la commande à tout faire dans Linux. La commande cat
peut être utilisée pour créer un fichier, examiner le contenu d'un fichier ou concaténer des fichiers.
Exemple de création de fichier :
$ cat > proverbe Pierre qui roule n'amasse pas mousse. CTRL-d $
Exemple d'examen du contenu d'un fichier :
$ cat proverbe Pierre qui roule n'amasse pas mousse. $
Exemple de concaténation de fichiers :
$ cat > dicton Le chat parti, les souris dansent. CTRL-d $ cat proverbe dicton >> mon_texte $ cat mon_texte Pierre qui roule n'amasse pas mousse. Le chat parti, les souris dansent. $
more
La commande cat
est inadéquate pour l'affichage d'un fichier assez long étant donné qu'elle ne permet pas d'arrêter le défilement du texte à l'écran.
La commande more
affiche le contenu d'un fichier en procédant un écran à la fois. A la fin de chaque "écran" de texte, more attend que l'usager presse une des touches suivantes :
SPACE | pour l'affichage de l'écran suivant |
ENTER | pour l'affichage de la ligne suivante |
q | pour cesser l'affichage |
Syntaxe :
more [options] [fichier(s)]
Les options les plus utilisées sont les suivantes :
-c | évite le défilement du texte en débutant toujours l'affichageen haut de l'écran |
-n | (où n est un nombre entier) fixe la taille de la fenêtre |
+n | (où n est un nombre entier) débute l'affichage à la n-ième |
cp
La commande cp
(copy) sert à copier un fichier dans un autre ou à copier un ou plusieurs fichiers dans un répertoire.
Syntaxe :
cp fichier1 fichier2
cp fichier(s) répertoire
ATTENTION : Si fichier2 existe déjà il sera remplacé sans avertissement!
Exemple (dans un fichier) :
$ ls Test.java $ cp Test.java Bug.java $ ls Test.java Bug.java $
Exemple (dans un répertoire) :
$ mkdir rep $ cp Test.java Bug.java rep $ ls rep Test.java Bug.java $
mv
La commande mv
(move) sert à renommer un fichier ou un répertoire ainsi qu'à déplacer un ou plusieurs fichiers d'un répertoire à l'autre.
Syntaxe :
mv fichier1 fichier2 mv répertoire1 répertoire2 mv fichier(s) répertoire
ATTENTION : Si fichier2 existe déjà il sera remplacé sans avertissement!
Exemple (fichiers) :
$ ls Test.java $ mv Test.java NewTest.java $ ls NewTest.java $
Exemple (répertoires) :
$ mkdir rep $ ls NewTest.java rep $ mv rep newrep $ ls newrep NewTest.java $
Exemple (fichier et répertoire) :
$ ls newrep NewTest.java $ mv NewTest.java newrep $ ls newrep $ ls newrep NewTest.java $
rm
La commande rm
(remove) détruit un ou plusieurs fichiers. Elle permet également de détruire un répertoire avec son contenu.
Syntaxe :
rm [options] fichier(s) ou répertoire(s)
Les options les plus utilisées sont les suivantes :
-i | demande une confirmation avant de procéder (idéal pour le traitement par lots) |
-r | détruit un répertoire avec tout son contenu (fichiers et répertoires) |
Exemple (fichier) :
$ ls un_fichier $ rm -i un_fichier rm: remove un_fichier? y $ ls $
Dans l'exemple précédent, n'importe quelle réponse autre que "y" laisserait le fichier intact.
Exemple (répertoire) :
$ mkdir -p bonjour/la/visite $ ls bonjour $ rm -r bonjour $ ls $
ln
La commande ln
(link) crée un lien supplémentaire sur un fichier. Un lien est une entrée dans un répertoire. Cela veut dire qu'un même fichier a la possibilité d'apparaítre plusieurs fois dans le même répertoire (noms différents) ou dans des répertoires différents (noms identiques ou différents).
La commande ln
est surtout utilisée pour rendre un fichier disponible sous plusieurs noms.
Syntaxe :
ln fichier1 fichier2 ln fichier(s) répertoire
Exemple :
$ ls ventes.db $ ln ventes.db mars.db $ ls mars.db ventes.db $ mkdir rep $ ln ventes.db rep $ ls rep ventes.db $
Fichiers et sécurité
La plupart des mécanismes de sécurité de Linux s'articulent autour du contenu des fichiers /etc/passwd (usagers) et /etc/group (groupes d'usagers).
/etc/passwd
Le fichier /etc/passwd contient les renseignements dont le système a besoin à propos de chaque usager du système. Ce fichier est public et peut être affiché par n'importe quel usager.
Ceci est un extrait du fichier /etc/passwd d'un système réel :
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
...
gdm:x:121:125:Gnome Display Manager:/var/lib/gdm3:/bin/false
patoche:x:1000:1000:Alain Patoche:/home/patoche:/bin/bash
bob:x:1001:1001:Robert Gratton:/home/bob:/bin/bash
linda:x:1002:1002:La Doudoune:/home/linda:/bin/bash
sshd:x:122:65534::/run/sshd:/usr/sbin/nologin
timidity:x:123:127:TiMidity++ MIDI sequencer service:/etc/timidity:/usr/sbin/nologin
mysql:x:124:128:MySQL Server,,,:/nonexistent:/bin/false
sbt:x:999:999:sbt daemon-user:/home/sbt:/bin/false
jetty:x:125:129::/usr/share/jetty9:/bin/false
mosquitto:x:126:132::/var/lib/mosquitto:/usr/sbin/nologin
Chaque ligne du fichier /etc/passwd est divisée en 7 champs contenant l'information suivante :
- nom d'usager
- mot de passe (chiffré)
- numéro d'identification de l'usager (UID)
- numéro d'identification du groupe (GID)
- information supplémentaire (généralement nom et prénom de l'usager)
- répertoire maison
- shell de connexion
Dans certains systèmes le mot de passe chiffré est remplacé par un "x" et conservé dans un fichier dont l'accès est restreint.
/etc/group
Le fichier /etc/group contient le nom des groupes d'usagers du système et la liste de leurs membres. Un usager peut faire partie de plus d'un groupe.
Ceci est un extrait du fichier /etc/group d'un système réel :
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,patoche
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
...
patoche:x:1000:
sambashare:x:126:patoche,bob,linda
timidity:x:127:
realtime:x:1001:patoche
mysql:x:128:
sbt:x:999:
jetty:x:129:
kvm:x:130:patoche
rdma:x:131:
mosquitto:x:132:
Chaque ligne du fichier /etc/group est divisée en 4 champs contenant l'information suivante :
- nom de groupe
- mot de passe (rarement utilisé)
- numéro d'identification du groupe (GID)
- membres du groupe
Attributs des fichiers
La commande ls -l
(ou son alias ll
) affiche la plupart des attributs d'un fichier.
Exemple :
$ ls -l Chapitre_4.pdf -rw-r--r-- 1 stephane info 8152 Jan 25 12:03 Chapitre_4.pdf $
La sortie est divisée en 8 champs :
- le premier caractère indique le type de fichier
- fichier ordinaire b spécial (périphérique de transfert par blocs) c spécial (périphérique de transfert par caractères) d répertoire
- les 9 caractères suivants indiquent les droits d'accès au fichier
- le nombre de liens sur le fichier
- le propriétaire du fichier
- le groupe auquel appartenait le propriétaire du fichier au moment de sa création
- la taille du fichier en octets
- la date de dernière modification
- le nom du fichier
Dans le cas d'un fichier spécial la taille est remplacée par deux nombres :
- "major device number" indique le type de périphérique (ex: un terminal)
- "minor device number" indique duquel de ces périphériques il s'agit (ex : terminal no 0)
Exemple :
$ ls -l /dev/ttyp0 crw-rw-rw- 1 root wheel 20, 0 Jan 25 12:03 /dev/ttyp0 $
Droits d'accès
Trois catégories d'usagers :
usager | l'usager propriétaire du fichier, celui qui l'a créé et qui décide des droits d'accès |
groupe | le groupe auquel appartenait le propriétaire du fichier au moment de sa création |
autres | les autres usagers du système |
Trois types d'accès (pour tous les types de fichiers) :
read | lecture |
write | écriture |
execute | exécution |
Le second champ de la sortie de la commande ls -l
indique les droits d'accès au fichier pour chaque catégories d'usager.
Exemple :
r w x r - x r - x ----- ----- ----- | | | | | | | | +-------------> autres | | | +-------------------> groupe | +-------------------------> usager
Code | Type d'accès |
---|---|
r | lecture |
w | écriture |
x | exécution |
- | aucun accès |
La commande chmod
permet la modification des droits d'accès à un fichier. Cette commande peut être utilisée selon un mode symbolique ou absolu.
Mode symbolique
Syntaxe :
chmod [qui] opérateur droits fichier(s)
où on a :
qui | u | propriétaire |
g | groupe | |
o | autres usagers | |
a | tous les usagers (valeur de défaut) | |
opérateur | + | ajoute des droits |
- | enlève des droits | |
= | donne des droits spécifiques | |
droits | r | lecture |
w | écriture | |
x | exécution |
Exemples :
$ chmod a+r proverbes.txt $ chmod +r proverbes.txt $ |
ajoute à tous les usagers le droit de lecture sur "proverbes.txt" |
$ chmod ug+x mon_script.sh $ |
ajoute au propriétaire et au groupe le droit d'exécution sur "mon_script.sh" |
$ chmod ug+r,o-r proverbes.txt $ |
ajoute au propriétaire et au groupe le droit de lecture sur "proverbes.txt" et l'enlève aux autres usagers |
$ chmod g=rx foobar $ |
donne au groupe les droits de lecture et d'exécution et lui enlève le droit d'écriture sur "foobar" (ne modifie pas les droits des autres usagers) |
Mode absolu
Syntaxe :
chmod mode fichier(s)
où le mode (nombre en base 8) se calcule ainsi :
accès valeur catégorie lecture 4 0 0 propriétaire + écriture 2 0 0 propriétaire + exécution 1 0 0 propriétaire + lecture 0 4 0 groupe + écriture 0 2 0 groupe + exécution 0 1 0 groupe + lecture 0 0 4 autres + écriture 0 0 2 autres + exécution 0 0 1 autres ___________________________________ = mode
Exemples :
$ chmod 751 mon_script.sh $ |
donne au propriétaire tous les droits, au groupe les droits de lecture et d'exécution et aux autres usagers le droit d'exécution sur "mon_script.sh" |
$ chmod 700 mon_script.sh $ |
donne au propriétaire tous les droits et enlève au groupe et aux autres usagers tous les droits sur "mon_script.sh" |
$ chmod 755 dossiers_X $ |
donne au propriétaire tous les droits et au groupe et aux autres usagers le droit de lister le contenu et d'exécuter la commande cd sur le répertoire "dossiers_X" |
$ chmod 744 dossiers_X $ |
donne au propriétaire tous les droits et au groupe et aux autres usagers le droit de lister le contenu du répertoire "dossiers_X" mais non d'exécuter la commande cd |
Sommaire des commandes
Commande | Fonction |
---|---|
pwd | Affiche le répertoire courant |
cd | Change le répertoire courant |
mkdir | Crée un répertoire |
rmdir | Efface un répertoire |
ls | Affiche le contenu d'un répertoire |
cat | Affiche le contenu d'un fichier |
more | Affiche le contenu d'un fichier un écran à la fois |
cp | Copie un fichier |
mv | Déplace ou renomme un fichier |
rm | Efface un fichier |
ln | Crée un lien sur un fichier |
chmod | Change les droits d'accès à un fichier |