O que significam os símbolos exibidos por ls -F?

62

Percebi que, se eu executar ls -F em um diretório, algumas das entradas terão um * ou um @ depois deles.

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/  

De acordo com as páginas de manual do ls

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

Acho que isso @significa link simbólico,

O que esses outros indicadores significam ( */=>@|)?

spuder
fonte
2
Você já pensou em olhar para a página de manual?
Mdpc
23
Ele tem. De fato, ele postou um trecho da página de manual. A lsdocumentação completa , incluindo informações sobre os símbolos exibidos por ls -F, está em um manual do Texinfo. ( info ls)
11
Em uma nota lateral, desde manuais Texinfo geralmente sentir estranho e estrangeiro, é comum para manter em torno de funções como estes: infos () { info --vi-keys --subnodes -o - "$@" | less; }.
11
@EvanTeitelman Esta é uma ótima informação, vou ter info foo --vi-keysem mente. Infelizmente, a sintaxe que você mencionou não funciona para mim (informações sobre () {info --vi-chaves ...}
spuder
11
@ spuder: É uma função; você tem que ligar. infos ls. A $@parte passa todos os argumentos da função para info. Você pode colocar esta função no seu ~/.bashrcarquivo para uso posterior.

Respostas:

68

ls -Fanexa símbolos aos nomes de arquivos. Esses símbolos mostram informações úteis sobre arquivos.

Se você quiser esse comportamento para ser o padrão, adicione à sua configuração de shell: alias ls='ls -F'.

Comunidade
fonte
10
não realias comandos, ele pode quebrar scripts mal escritos. Eu tenho um alias lpara ter -F e cor, e lltambém para ter -l
ctrl-alt-delor
No Android, recebo uma saída de duas colunas completamente. Eu recebo o nome do arquivo ou o diretório e ANTES do nome, há um sinal de menos se for um arquivo ou um "d" se for um diretório ou um "ld" se for um link. É um desastre que os Linux sejam tão inconsistentes!
Elmue
1

Só para adicionar como eu encontrei essa informação. Conforme indicado na parte inferior de man ls:

Documentação completa em: https://www.gnu.org/software/coreutils/ls ou disponível localmente via: info '(coreutils) ls invocation'

Depois disso, vemos

'-F' '--classify' '--indicator-style = classify' Anexa um caractere a cada nome de arquivo indicando o tipo de arquivo. Além disso, para arquivos regulares executáveis, acrescente '*'. Os indicadores de tipo de arquivo são '/' para diretórios, '@' para links simbólicos, '|' para FIFOs, '=' para soquetes, '>' para portas e nada para arquivos regulares. Não siga os links simbólicos listados na linha de comandos, a menos que as opções --dereference-command-line (-H), --dereference (-L) ou --dereference-line-command-symlink-to-dir sejam especificadas.

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

flow2k
fonte