ls

La commande ls permet de lister le contenu d'un répertoire.

Cette commande possède un certain nombre d'options intéressantes et de particularités de fonctionnement à connaître. Aussi, commençons par les fonctionnalités de bases avant d'approfondir.

Les bases

Utilisation

Lorsque la commande est utilisé sans paramètres, elle affiche l'ensemble des fichiers (non cachés) du répertoire courant (le répertoire ".").

Par exemple, si le répertoire courant contient les fichiers LinuxFR et TooLinux:

$ ls
LinuxFR  TooLinux

La commande permet aussi de lister un ou plusieurs répertoires, il faut préciser le chemin de ceux-ci après la commande:

$ ls /boot/ /opt/
/boot/:
abi-2.6.20-15-generic     config-2.6.20-16-generic      initrd.img-2.6.20-15-generic.bak  memtest86+.bin                vmlinuz-2.6.20
abi-2.6.20-16-generic     grub                          initrd.img-2.6.20-16-generic      System.map-2.6.20-15-generic  vmlinuz-2.6.20-15-generic
config-2.6.20-15-generic  initrd.img-2.6.20-15-generic  initrd.img-2.6.20-16-generic.bak  System.map-2.6.20-16-generic  vmlinuz-2.6.20-16-generic

/opt/:
VirtualBox-1.4.0

Les fichiers cachés

Par défaut, ls n'affiche pas les fichiers et dossiers dont le nom commence par un point. Par convention, les fichiers et dossiers sont donc considérés comme caché à partir du moment où ils commencent par un point, rien dans le noyau Linux ne cache les fichiers.

Deux éléments particuliers commencent par un point et sont donc cachés par défaut: un lien vers le dossier lui-même, qui est un dossier nommé point (.), et un lien vers le dossier parent, qui est un dossier dont le nom est un double point (..).

L'option -a permet d'afficher tout les fichiers, y compris les fichiers dont le nom débute par un point. Une variante parfois utile pour les scripts est l'option -A qui se comporte comme -a mais exclu les dossiers "." et "..".

Voici un exemple d'utilisation de -a et -A:

$ ls
a.out  direct  LinuxFR  TooLinux
$ ls -a
.  ..  a.out  direct  .hidden  LinuxFR  TooLinux
$ ls -A
a.out  direct  .hidden  LinuxFR  TooLinux

Utilisation avancé

Affichage en ligne ou en colonne

L'affichage de ls peut troubler car l'affichage en colonne rend la commande inutilisable en synergie avec d'autres outils comme grep. En réalité il n'en est rien car le format en colonne ne s'affiche que lorsque ls est directement affiché à la console. Ainsi la commande est directement utilisable avec grep car chaque fichier sera affiché sur une ligne différente.

Format long

Une option particulièrement importante est -l, elle permet d'afficher plusieurs attributs des fichiers lorsqu'ils sont listés.

Voici un premier exemple d'utilisation du format long:

$ ls -l
-rwxr-xr-x 1  ikipou ikipou 8924 2007-09-20 22:46 a.out
drwxr-xr-x 2  ikipou ikipou    8 2007-10-03 08:02 direct
-rw-r--r-- 1+ ikipou ikipou    0 2007-10-03 08:01 Magellan
lrwxrwxrwx 1  ikipou ikipou    8 2007-10-03 08:01 Magellan.fpms -> Magellan

Les informations affichés sont: type de fichier, droits, nombre liens physique, propriétaire, groupe propriétaire, taille du fichier, date de modification, nom du fichier. Ces informations sont détaillées ci-après.

Première colonne

La première colonne (par exemple -rwxr-xr-x) représente le type et les droits du fichier. Le premier caractère donne le type du fichier. Le type peut être donné par un caractères de la liste suivantes:

-
fichier ordinaire
d
répertoire
l
lien symbolique
s
socket
p
tube nommé
b
descripteur de périphérique de type bloc
c
descripteur de périphérique de type caractère

Les trois premiers types sont ceux qu'on retrouve le plus souvent dans le système de fichier.

Les neuf caractères qui suivent le type de fichier (par exemple rwxr-xr-x) permettent de représenter les permissions élémentaires de celui-ci. La gestion des droits et permissions n'est pas détaillé ici.

À la suite des caractères spécifiant les droits, le signe + apparait si le fichier utilise des ACL. Les ACL ne sont pas traités ici.

Seconde colonne

La seconde colonne contient un nombre dont la signification dépend du type de fichier affiché. Pour un fichier ordinaire, il représente le nombre de liens physique (hard link) vers le fichier. Pour les dossiers, ce nombre donne le nombre de sous-dossier (+2 car il y a les dossiers "." et "..").

Troisième et quatrième colonnes

Les colonnes trois et quatre donnent respectivement le propriétaire et le groupe propriétaire du fichier.

Cinquième et sixième colonnes

La cinquième colonne donne la taille du fichier octet. L'option -h (ou --human-readable) permet d'afficher un format plus simple à lire et note les unités:

$ ls -lh
total 12K
-rwxr-xr-x  1 ikipou ikipou 8,8K 2007-09-20 22:46 a.out
drwxr-xr-x  2 ikipou ikipou    8 2007-10-03 08:02 direct
-rw-rw-r--+ 1 ikipou ikipou    0 2007-10-03 08:01 Magellan
lrwxrwxrwx  1 ikipou ikipou    8 2007-10-03 08:01 Magellan.fpms -> Magellan

La sixième colonne affiche la date de modification des fichiers.

Septième colonne

Finalement la dernière colonne affiche le nom du fichier. Si le fichier est un lien symbolique, la destination du lien est aussi affichée.

Afficher les informations d'un dossier

Si le chemin d'un dossier ou d'un lien symbolique est fournit à la commande ls, le contenu du dossier est listé et le liens symbolique est suivit.

Ce comportement peut être gênant lorsque l'on désire avoir les informations du dossier lui-même et pas son contenu (par exemple avec l'option -l). L'option -d permet de changer ce comportement et de ne pas lister le contenu des dossiers.

Voici un exemple de ce que fait la commande avec -d (et -l pour l'affichage long):

$ ls
a.out  direct  LinuxFR  TooLinux
$ ls -dl direct
drwxr-xr-x 2 ikipou ikipou 1 2007-09-20 22:57 direct/

Si l'option -d n'avait pas été utilisée, ls aurait listé le contenu du dossier (qui est ici vide):

$ ls -l direct
total 0

Les options importantes

-a, --all
Affiche aussi les fichiers et dossiers dont le nom commence par un point.
-A
Affiche tout les fichiers (comme -a) à l'exception des dossiers "." et "..".
-l, --format=long, --format=verbose
Affiche les informations étendue des fichiers. Les informations affichées sont: les autorisation, le propriétaire, le groupe, la taille pour les fichiers/le nombre d'éléments pour les dossiers, la date de modification et enfin le nom du fichier.
--color
Utilise des couleurs pour l'affichage.
-d, --directory
Les répertoires précisés sur la commande sont traités comme des fichiers, ils sont affiché plutôt que de lister leur contenu.
-C
Force l'affichage en colonne
-1
Force l'affichage d'un fichier par ligne.
-h, --human-readable
Affiche les tailles dans un format plus lisible.
-S
Trie les fichiers par ordre de taille décroissante.

Page de manuel

Pour voir l'ensemble des options de ls, voyez la page de manuel.