Mandriva

================== =========================================================== =================================================================== CETTE PAGE - SOUS UNE FORME RÉVISÉE - A ÉTÉ TRANSFÉRÉE À L'ADRESSE SUIVANTE :

http://wiki.mandriva.com/fr/La_commande_ls

NOUS VOUS CONSEILLONS DE VOUS Y RENDRE… ==================================================================

La commande ls

Introduction

La commande 'ls' est sans doute la commande la plus connue et la plus fréquemment invoquée par les utilisateurs de systèmes Linux. Même les plus rebelles à la ligne de commande auront sans doute inspecté, un jour ou l'autre, par son entremise, le contenu de tel ou tel répertoire. Cette page de la Base de Connaissances de Mandriva essaie de vous faire comprendre les mécanismes de son fonctionnement, afin que vous ne vous contentiez pas de taper mécaniquement une ou deux lignes de commandes standards contenant 'ls', sans trop savoir ce que vous faites.

Cela dit, si vous voulez vous cantonner au strict minimum, peut-être cette première section vous suffira-t-elle.

Si vous voulez en savoir un tout petit peu plus sur l'affichage du contenu d'un répertoire par 'ls' lisez ensuite cette section-ci.

Enfin, si vous voulez en savoir encore plus, lisez tout ce qui suit à la file…

Le minimum minimorum à connaître pour utiliser ls

Voir ici

Afficher les fichiers et répertoires qui sont à la racine d'un répertoire

Voir ici

Ce que vous avez toujours rêvé de savoir sur 'ls'

Cette section résume, de façon compacte et un peu 'abstraite' un certain nombre de points essentiels pour qui veut vraiment comprendre le fonctionnement de notre commande. Des exemples d'emploi plus "concrets" sont donnés dans la section précédente.

Quels arguments peut prendre ls

  • ls peut prendre comme argument :
    • un nom de fichier
ls -l abricots.txt
    • un nom de répertoire
ls -l recettes/
    • une combinaison de noms fichiers et/ou de noms répertoires (dans n'importe quel ordre)
ls -l abricots.txt recettes/ figue.txt
  • ls peut aussi n'avoir aucun argument apparent
ls -l

Ce que ls fait de ses arguments

  • lorsqu'on lui passe un nom de répertoire en guise d'argument 'ls' énumère tous les fichiers ou sous-répertoires situés à la racine de ce répertoire [du moins en l'absence de l'option '-d' (voir plus bas) ]
  • lorsqu'on lui passe un nom de fichier en guise d'argument 'ls' affiche simplement le nom de ce fichier (avec, en plus, ses propriétés si l'option '-l' a été tapée dans la ligne de commande).

Ce que ls fait en l'absence d'argument

Lorsque 'ls' est lancée sans qu'aucun argument ne figure sur la ligne de commande, tout se passe alors comme si on lui avait fourni le répertoire point (.) en guise d'argument (le répertoire point représente le répertoire de travail courant).

'ls' énumère donc alors tous les fichiers ou répertoires situés à la racine du répertoire de travail [ du moins en l'absence de l'option -d (voir plus bas) ].

Des 'formules' telles que les suivantes sont donc valides, comme vous pourrez le vérifier aisément en tapant tour à tour les deux 'versions' figurant sur chacune des lignes suivantes :

ls = ls .

ls -l = ls -l .

ls -dl = ls -dl .

etc.

Le comportement de ls employée sans options

Employée sans options, 'ls' affiche uniquement des noms de fichiers ou de sous-répertoires, classés par ordre alphabtétique et répartis en colonnes dont le nombre, variable, dépend de la longueur des noms affichés et de la taille de la fenêtre de console.

Lorsque la sortie de 'ls' est redirigée vers un fichier via un opérateur de redirection ou vers une autre commande via un tube, chaque nom de fichier ou de sous-répertoire à la sortie de 'ls' occupe, en revanche, une ligne à lui seul (il est facile de le vérifier en faisant ls | cat ou ls > ls.txt et ensuite, dans ce dernier cas, cat ls.txt).

Le rôle de quelques-unes des options de ls

L'option l

Employée avec l'option '-l' (la lettre L minuscule), la commande 'ls' affiche non seulement des noms de fichiers et de sous-répertoires, mais aussi, pour chacun d'eux, un ensemble de propriétés, que vous trouverez énumérées dans la cible du lien qui constitue le contenu de la section précédente. Un nom de fichier, ou de sous-répertoire, avec l'ensemble de ses propriétés, occupe toujours une ligne de l'écran.

En outre, cette option provoque aussi l'affichage d'une ligne initiale de la forme :

total nombre
nombre représente le volume occupé par l'ensemble des fichiers ou répertoires affichés, mesuré en 'blocs' de 512 K chacun (attention : les sous-répertoires ne sont comptés que pour 4096 octets chacun, quel que soit leur contenu, et comprenez bien que ce qui n'est pas affiché (par exemple les fichiers cachés) ne compte pas : cette indication n'est donc PAS une représentation du volume complet du répertoire concerné).

L'option a

L'option '-a' permet d'afficher les fichiers cachés.

Les options F et color

Les options '-F' et '--color' permettent de donner des indications 'visuelles' sur le type des éléments affichés.

La distribution Mandriva active par défaut ces deux options par l'entremise d'un alias défini dans le fichier de configuration du shell /etc/profile.d/alias.sh.

L'option F

Les symboles affichés par l'option -F à la fin des noms affichés

fichier régulier exécutable : *

répertoire : /

lien symbolique : @

tube nommé : |

socket : =

Les fichiers réguliers non exécutables (autrement dit ceux qui ne sont pas des programmes) ne sont suivis par aucun symbole.

Vous trouverez un exemple d'utilisation de '-F' pour afficher uniquement des répertoires cachés dans l'encart final de cette sous-section.

L'option color

Le choix des couleurs attribuées aux noms de fichiers et de répertoires lorsque l'option '--color' est activée est déterminé par le fichier /etc/DIR_COLORS ou éventuellement par le fichier ~/.dir_colors (~ représente le répertoire personnel de l'utilisateur, comme vous le savez...). Lisez ces fichiers pour comprendre le codage de couleurs employé. Si vous souhaitez modifier ces couleurs, voyez la section Comment modifier les couleurs des listes de fichiers affichés par ls.

L'option d

Pour obtenir l'affichage des sous-répertoires sans l'affichage de leur contenu vous devez employer l'option '-d' :

ls \-d confitures/
confitures/
ls -ld confitures/
drwx------  2 toto toto 4096 fév  7  2006 confitures/
Nota : Employée avec un fichier en argument l'option -d est possible mais ne change rien à l'affichage par rapport à ce qu'on obtiendrait sans l'option :
ls -d abricots.txt
abricots.txt
ls abricots.txt
abricots.txt
Autrement dit, lorsqu'un fichier est passé en argument, les 'formules' suivantes sont valides :
ls -d fichier = ls fichier
et
ls -ld fichier = ls -l fichier.
Paresseux comme nous sommes, à quoi bon, dans ce cas, taper '-d' avec un fichier en argument ? En dépit des apparences, ceci est utile car cela permet de fournir à 'ls' en argument, sur une même ligne, et des fichiers et des répertoires :
ls -ld fichier1 répertoire1 fichier2
-rw-r--r--  2 toto toto 75222 oct  8  2006 fichier1
-rw-r--r--  2 toto toto 30998 oct 10  2006 fichier2
drwx------  2 toto toto 4096 fév  7  2006 répertoire1/
cette ligne permet d'afficher en une seule commande les fichiers et les répertoires avec leurs propriétés, tout en évitant d'afficher les contenus des répertoires.

L'expansion des noms de fichiers permet de donner facilement comme arguments à une commande des fichiers et des sous-répertoires. Il est donc compréhensible que l'option -d soit fréquemment utilisée dans ce genre de contexte.

Vous trouverez des exemples d'emploi de l'expansion des noms de fichier avec l'option -d de la commande 'ls' plus bas et aussi dans la section Affichage des fichiers et répertoires cachés.

Pour diverses précisions supplémentaires concernant l'affichage des noms de répertoires à la sortie de 'ls' lorsque celle-ci est employée avec l'option -d, voir la sous-section sur les détails de l'affichage de ls.

L'option t

Remplace le classement par ordre alphabétique par un classement chronologique, pour un exemple, voir ici.

L'option r

Cette option inverse le classement par défaut, quel qu'il soit (alphabétique ou chronologique, selon qu'on a ou pas choisi aussi l'option -t). Pour un exemple, voir ici.

Attention, bien employer un r minuscule (l'option R majuscule existe aussi, voir plus bas...).

L'option i

Cette option impose l'affichage du 'numéro d'inode' de chaque fichier ou répertoire affiché (sous Linux, tout fichier ou répertoire est connu par le système par ce numéro, qui lui est propre). Pour une utilisation, relative aux liens en durs, voir cette section.

L'option R

Attention : il s'agit bien d'un R majuscule (l'option r existe aussi ! voir ci-dessus).

Par défaut, nous le savons, 'ls' affiche la liste des fichiers ou sous-répertoires qui sont à la racine du répertoire qui lui est passé en argument (ou du répertoire de travail). L'option -R a pour effet de rendre 'ls' 'récursive' : autrement dit seront affichés aussi les contenus de tous les sous-répertoires du répertoire argument de ls.

Pour diverses précisions supplémentaires concernant l'affichage des noms de répertoires à la sortie de 'ls' lorsque celle-ci est employée avec l'option -R, voir la sous-section sur les détails de l'affichage de ls.

Autres options

Bien d'autres options existent, dont certaines peuvent modifier les comportements par défaut décrits ci-dessus : consultez man ou info pour en avoir la liste et la description.

ls et l'expansion des noms de fichiers

Au lieu d'un argument ou d'un ensemble d'arguments entièrement 'spécifiés', on peut aussi fournir à 'ls' des arguments qui font appel aux ressources de l'expansion des noms de fichiers. Nous donnerons deux exemples, mais toute sorte d'autres emplois sont possibles.

ls  -d ressources/[1-9]*
ressources/1123.txt     ressources/234ght     ressources/3choin/     ressources/5leviers.txt
La commande précédente affiche tous les fichiers ou sous-répertoires situés à la racine du répertoire ressources/ et dont le premier caractère est un chiffre quelconque. Que se serait-il passé à votre avis si l'option '-d' avait été absente ?? Eh bien, le contenu du répertoire ressources/3choin/ aurait été affiché aussi… (voir la section sur l'option -d).

ls -d ressources/*.?/
ressources/japhari.c/
cette commande affiche les sous-répertoires situés à la racine du répertoire ressources/ dont les noms se terminent par un point suivi d'un unique caractère quelconque. Si on ne cherche que des sous-répertoires, notez bien que la barre oblique finale (qui suit le point d'interrogation) est indispensable : c'est elle qui permet d'exclure les simples fichiers.

Vous trouverez d'autres exemples d'emploi de l'expansion des noms de fichier avec la commande 'ls' à la section Affichage des fichiers et répertoires cachés.

Les détails de l'affichage de ls

Noms de base ? chemins ?

Nous abordons ici des questions qui sont sans grande importance dans le cadre d'un usage courant de 'ls' en console mais qu'il peut être indispensable de bien comprendre quand on souhaite utiliser 'ls' dans le cadre d'une redirection des sorties et/ou dans un script, dans des situations où sa sortie est passée à un autre programme pour recevoir un traitement précis.

Le premier point à noter est que lorsque vous passez à 'ls' un nom de répertoire en argument, vous obtiendrez par défaut à l'affichage des noms de base de fichiers ou de répertoires et non pas des chemins, et ceci quelle que soit la façon dont vous ayez représenté le répertoire en tapant la commande.

Par exemple, si votre répertoire de travail est un répertoire /home/toto/ contenant un sous-répertoire /home/toto/confitures/, vous obtiendrez exactement le même affichage dans les différents cas suivants :

ls confitures/

ls ./confitures/

ls /home/toto/confitures/
(dans les deux premières lignes on a donné un chemin relatif du répertoire, dans le dernier cas on a donné son chemin absolu).

MAIS :

  • Si vous passez à 'ls' un nom de fichier en argument, alors elle préfixera à sa sortie le chemin du fichier tel que vous l'aurez tapé dans la commande !
  • Et il en ira de même pour un répertoire passé en argument lorsque vous utiliserez l'option -d (option qui oblige 'ls' à traiter un répertoire un peu comme elle traiterait un fichier).
Par exemple, si votre répertoire de travail est /home/toto/confitures/ et qu'il contient un fichier abricots.txt, vous obtiendrez, selon la commande tapée, des affichages différents comme illustré ci-dessous :

ls abricots.txt
abricots.txt

ls ./abricots.txt
./abricots.txt

ls /home/toto/confitures/abricots.txt
/home/toto/confitures/abricots.txt

Et en passant comme argument un sous-répertoire confitures/ avec l'option -d :

ls -d confitures/
confitures/

ls -d ./confitures/
./confitures/

ls -d /home/toto/confitures/
/home/toto/confitures/

Nota Bene : Souvenez-vous qu'employée sans argument apparent 'ls' se comporte comme si on avait tapé le point en guise d'argument, ce que vous pourrez vérifier aisément en exécutant ls -d ou ls -dl

  • Enfin avec l'option -R, les noms de sous-répertoires seront eux aussi préfixés par le chemin que vous aurez tapé pour le répertoire passé en argument.

Une ou deux barres obliques après un nom de répertoire, ou même aucune ?

Lorsque vous tapez un nom de répertoire comme argument de 'ls' en ligne de commande, vous avez la possibilité de taper une barre oblique à la fin du nom du répertoire, mais vous pouvez aussi omettre cette barre oblique. Si vous avez tapé une telle barre oblique finale, elle apparaîtra à l'affichage de la sortie de 'ls' lorsque les options -d ou -R seront activées.

Si vous avez soigneusement tenté de vérifier sur votre système que les indications données ici, notamment à la sous-section précédente, fonctionnent bien comme prévu, vous avez peut-être remarqué, que, parfois, là où nous avons mis une barre oblique finale, vous obtenez DEUX barres obliques, par exemple au lieu de ceci :

ls -d confitures/
confitures/
vous avez peut-être obtenu ceci :

ls -d confitures/
confitures//
avec une première barre oblique bleue (de la couleur du reste du nom) et une seconde barre oblique blanche...

Bogue de Mandriva ?? Non, non...

La première barre oblique (bleue) vient de votre frappe : vous avez choisi d'écrire une barre oblique à la fin du nom du répertoire, ce qui n'est pas obligatoire, si vous l'omettez la barre bleue disparaît et vous obtenez une unique barre oblique (blanche) :

ls -d confitures
confitures/

D'où vient donc la barre oblique blanche qui subsiste ??

De l'option -F, bien sûr !! qui est présente par défaut quoiqu'invisible, à cause d'un alias de Mandriva (voir plus haut). Si vous lancez 'ls' 'à l'état pur' dans sa version non aliassée (par exemple, en tapant 'ls' entre guillemets simples, tout en rétablissant la couleur pour y voir plus clair...), 'ls' sera exécutée sans l'option '-F' et vous obtiendrez cette fois une unique barre oblique bleue...

'ls' -d \-\-color=auto  confitures/
confitures/

et, bien sûr, si vous ne tapez pas la barre dans la commande, alors vous n'aurez plus aucune barre dans la sortie :

'ls' -d \-\-color=auto  confitures
confitures
En résumé : Si vous voyez deux barres obliques après un nom de répertoire
  • la première (bleue par défaut) est celle que vous avez tapée en ligne de commande
  • la seconde (blanche) est due à l'activation de l'option '-F'.

Auteur: ptyxs (mai 2006)
Legal: This page is covered by the GNU Free Documentation License. Standard disclaimers of warranty apply. Copyright LSTB and Mandrakesoft.
KB - La commande ls
Version 1.81 last modified by ptyxs on 27/08/2007 at 09:52

 


fr

RSS

Creator: ptyxs on 2006/05/30 18:34
(c) Mandriva 2007
18888888