2010-08-21 20:21:57 +0000 2010-08-21 20:21:57 +0000
167
167

O que significa o asterisco depois de um nome de ficheiro quando se digita `ls -l`?

Fiz um ls -l dentro de um directório, e os meus ficheiros estão a mostrar assim:

james@nevada:~/development/tools/android-sdk-linux_86/tools$ ll
total 9512
drwxr-xr-x 3 james james 4096 2010-05-07 19:48 ./
drwxr-xr-x 6 james james 4096 2010-08-21 20:43 ../
-rwxr-xr-x 1 james james 341773 2010-05-07 19:47 adb*
-rwxr-xr-x 1 james james 3636 2010-05-07 19:47 android*
-rwxr-xr-x 1 james james 2382 2010-05-07 19:47 apkbuilder*
-rwxr-xr-x 1 james james 3265 2010-05-07 19:47 ddms*
-rwxr-xr-x 1 james james 89032 2010-05-07 19:47 dmtracedump*
-rwxr-xr-x 1 james james 1940 2010-05-07 19:47 draw9patch*
-rwxr-xr-x 1 james james 6886136 2010-05-07 19:47 emulator*
-rwxr-xr-x 1 james james 478199 2010-05-07 19:47 etc1tool*
-rwxr-xr-x 1 james james 1987 2010-05-07 19:47 hierarchyviewer*
-rwxr-xr-x 1 james james 23044 2010-05-07 19:47 hprof-conv*
-rwxr-xr-x 1 james james 1939 2010-05-07 19:47 layoutopt*
drwxr-xr-x 4 james james 4096 2010-05-07 19:48 lib/
-rwxr-xr-x 1 james james 16550 2010-05-07 19:47 mksdcard*
-rw-r--r-- 1 james james 205851 2010-05-07 19:48 NOTICE.txt
-rw-r--r-- 1 james james 33 2010-05-07 19:47 source.properties
-rwxr-xr-x 1 james james 1447936 2010-05-07 19:47 sqlite3*
-rwxr-xr-x 1 james james 3044 2010-05-07 19:47 traceview*
-rwxr-xr-x 1 james james 187965 2010-05-07 19:47 zipalign*

O que significa esse asterisco?

Também não consigo executar um determinado ficheiro, como se segue:

james@nevada:~/development/tools/android-sdk-linux_86/tools$ ./emulator 
bash: ./emulator: No such file or directory

EDIT : Estou a tentar que o Eclipse utilize emulator, mas ele continua a queixar-se que os ficheiros não existem, no entanto está aqui?

Respostas (5)

81
81
81
2010-08-21 21:14:02 +0000

Ignacio Vazquez-Abrams já explicou sobre o * &:

& > Significa que o ficheiro é executável. Um classificador é mostrado quando -F é passado para ls através da linha de comando ou de outra forma.

Quanto ao ficheiro com aspecto executável emulator que não pode realmente executar, isto pode acontecer quando o carregador dinâmico solicitado por emulator não existe. Pode verificar que tipo de ficheiro emulator é com o comando file emulator, e verificar que carregador dinâmico e bibliotecas necessita com ldd emulator (qualquer linha que mostre “não encontrado” é algo que precisa de instalar).

Dado o nome do directório e o tamanho do ficheiro, emulator é provavelmente um binário Linux x86. Suspeito que tenha um sistema amd64. Se assim for, precisa de instalar um ambiente de execução para aplicações de 32 bits; no Ubuntu, precisa do pacote ia32-libs (e talvez também ia32-libs-gtk).

Também pode receber esta mensagem de erro para um script cujo intérprete, como indicado na linha #!, não existe.

80
80
80
2010-08-21 20:27:26 +0000

Isto significa que o ficheiro é executável. Um classifier é mostrado quando -F é passado para ls através da linha de comando ou de outra forma.

35
35
35
2010-08-21 22:24:06 +0000

A partir de info ls:

`-F'
`--classify'
`--indicator-style=classify'
     Append a character to each file name indicating the file type.
     Also, for regular files that are executable, append `*'. The file
     type indicators are `/' for directories, `@' for symbolic links,
     `|' for FIFOs, `=' for sockets, `>' for doors, and nothing for
     regular files.
21
21
21
2012-11-05 16:30:44 +0000

Ubuntu (12.04, e provavelmente também outras versões) inclui a seguinte configuração por defeito:

alias ll='ls -alF'

E como outros explicaram, -F é responsável pelo asterisco.

IPython utiliza automaticamente a bandeira F debaixo do capô (por defeito), pelo que apenas a entrada de ls produzirá o efeito que aí se vê.

Editar: a propósito, está a afirmar que está a correr ls -l, correr ll pode não ser de todo o mesmo.

9
9
9
2010-08-22 01:54:36 +0000

Como vários outros mencionaram, a opção -F para ls assinalará os executáveis com o asterisco. Não tem um -F na sua linha de comando, mas é provável que o ls tenha sido aliado. Pode verificar por pseudónimos na sua concha à sua escolha (em bash, use o comando incorporado alias para listar os pseudónimos), ou escapar ao comando ls com uma barra invertida para desactivar o pseudónimo.