Cosa significano i simboli visualizzati da ls -F?


62

Ho notato che se eseguo ls -F su una directory, alcune voci hanno un * o un @ dopo di loro.

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/  

Secondo le pagine man di ls

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

Immagino che @significhi un collegamento simbolico,

Cosa significano questi altri indicatori ( */=>@|)?


2
Hai pensato di guardare la pagina man?
mdpc,

23
Lui ha. In effetti, ha pubblicato un estratto dalla pagina di manuale. La lsdocumentazione completa , comprese le informazioni sui simboli visualizzati da ls -F, si trova in un manuale Texinfo. ( info ls).

1
Su un lato nota, dal momento che i manuali Texinfo in genere si sentono strani e stranieri, è comune a mantenere intorno funzioni come questi: infos () { info --vi-keys --subnodes -o - "$@" | less; }.

1
@EvanTeitelman Questa è un'ottima informazione, terrò info foo --vi-keysa mente. Sfortunatamente la sintassi che hai citato non funziona per me (informazioni () {info --vi-keys ...}
spuder

1
@spuder: è una funzione; devi chiamarlo. infos ls. La $@parte passa tutti gli argomenti della funzione a info. È possibile inserire questa funzione nel ~/.bashrcfile per un uso successivo.

Risposte:


68

ls -Faggiunge simboli ai nomi dei file. Questi simboli mostrano informazioni utili sui file.

Se si desidera che questo comportamento sia quella predefinita, aggiungere questo alla configurazione della shell: alias ls='ls -F'.


10
non comandi realias, può rompere gli script scritti male. Ho creato una alias lper avere -F e color, e llanche per avere -l
ctrl-alt-delor

Su Android ottengo un output completamente a due colonne. Ottengo il nome del file o della directory e PRIMA del nome c'è un segno meno se è un file, o una "d" se è una directory, o un "ld" se è un collegamento. È un disastro che i Linux siano così incoerenti!
Elmue,

1

Solo per aggiungere come ho trovato queste informazioni. Come indicato nella parte inferiore di man ls:

Documentazione completa su: https://www.gnu.org/software/coreutils/ls o disponibile localmente tramite: info '(coreutils) ls invocation'

In seguito, vediamo

'-F' '--classify' '--indicator-style = classify' Aggiungi un carattere a ciascun nome di file indicando il tipo di file. Inoltre, per i file regolari eseguibili, aggiungi '*'. Gli indicatori del tipo di file sono '/' per le directory, '@' per i collegamenti simbolici, '|' per FIFO, '=' per socket, '>' per porte e niente per i file regolari. Non seguire i collegamenti simbolici elencati nella riga di comando a meno che non vengano specificate le opzioni --dereference-command-line (-H), --dereference (-L) o --dereference-command-line-symlink-to-dir.

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.