Que signifient les symboles affichés par ls -F?


62

J'ai remarqué que si je lance ls -F sur un répertoire, certaines entrées ont un * ou un @ après elles.

spuder@ubuntu:~$ ls -F /sbin
acpi_available*   getpcaps*           lvmconf*                 ntfscp*        start-stop-daemon*
agetty*           getty*              lvmdiskscan@             ntfslabel*     status@
alsa*             halt@               lvmdump*                 ntfsresize*    stop@
alsactl*          hdparm*             lvmsadc@    

spuder@ubuntu:~$ ls -F ~
daq-0.6.1/  examples.desktop       noname-cache.lib  snort-2.9.1/   Templates/
Desktop/    jpgraph-1.27.1/        noname.sch        snortfiles/    Ubuntu One/
Documents/  

Selon les pages de manuel de ls

spuder@ubuntu:~$ man ls
...
-F, --classify
  append indicator (one of */=>@|) to entries
...

Je suppose que cela @signifie un lien symbolique,

Que signifient ces autres indicateurs ( */=>@|)?


2
Avez-vous pensé à regarder la page de manuel?
Mdpc

23
Il possède. En fait, il a posté un extrait de la page de manuel. La lsdocumentation complète , y compris les informations sur les symboles affichés par ls -F, se trouve dans un manuel Texinfo. ( info ls)

1
Sur une note de côté, puisque les manuels de Texinfo se sentent généralement étrange et étranger, il est courant de garder autour des fonctions comme celles - ci: infos () { info --vi-keys --subnodes -o - "$@" | less; }.

1
@ EvanTeitelman C'est une excellente information que je garderai info foo --vi-keysà l'esprit. Malheureusement, la syntaxe que vous avez mentionnée ne fonctionne pas pour moi (infos () {info --vi-keys ...}
spuder

1
@spuder: c'est une fonction; vous devez l'appeler. infos ls. La $@partie transmet tous les arguments de la fonction à info. Vous pouvez mettre cette fonction dans votre ~/.bashrcfichier pour une utilisation ultérieure.

Réponses:


68

ls -Fajoute des symboles aux noms de fichiers. Ces symboles indiquent des informations utiles sur les fichiers.

Si vous voulez que ce comportement soit la valeur par défaut, ajoutez à votre configuration shell: alias ls='ls -F'.


10
ne pas realias les commandes, il peut casser des scripts mal écrits. J'ai aliasé lavoir -F et couleur, et llaussi -l
ctrl-alt-delor

Sur Android, je reçois une sortie complètement sur deux colonnes. Je reçois le nom de fichier ou le nom de répertoire et AVANT le nom, il y a un moins si c'est un fichier, ou un "d" s'il s'agit d'un répertoire, ou un "ld" s'il s'agit d'un lien. C'est un désastre que les Linux soient si incohérents!
Elmue

1

Juste pour ajouter comment j'ai trouvé cette information. Comme indiqué au bas de man ls:

Documentation complète à l' adresse : https://www.gnu.org/software/coreutils/ls ou disponible localement via: info '(coreutils) ls invocation'

Suite à cela, nous voyons

'-F' '--classify' '--indicator-style = classify' Ajoute un caractère à chaque nom de fichier indiquant le type de fichier. De plus, pour les fichiers ordinaires exécutables, ajoutez '*'. Les indicateurs de type de fichier sont '/' pour les répertoires, '@' pour les liens symboliques, '|' pour les FIFO, '=' pour les sockets, '>' pour les portes et rien pour les fichiers normaux. Ne suivez pas les liens symboliques répertoriés sur la ligne de commande, sauf si les options --dereference-command-line (-H), --dereference (-L) ou --dereference-command-line-line-symlink-to-dir sont spécifiées.

sur https://www.gnu.org/software/coreutils/manual/coreutils.html#ls-invocation

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.