Cosa significa l'asterisco dopo un nome file quando si digita `ls -l`?


161

Ho fatto un ls -lall'interno di una directory e i miei file vengono visualizzati in questo modo:

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*

Cosa significa quell'asterisco?

Inoltre, non riesco a eseguire un determinato file, come segue:

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

EDIT : Sto cercando di utilizzare Eclipse emulator, ma continua a lamentarmi che i file non esistono, ma è qui?


3
Tutti i file sono contrassegnati come eseguibili su partizioni NTFS.
Smile4ever,

@ Smile4ever semplicemente non è vero. Dipende da come hai montato la partizione e per impostazione predefinita è montata come eseguibile. Lo stesso vale per FAT e altre partizioni non Unix. Tuttavia, puoi anche memorizzare le autorizzazioni Unix su NTFS perché è compatibile con POSIX askubuntu.com/q/86959/253474 unix.stackexchange.com/q/11757/44425
phuclv

@ LưuVĩnhPhúc Puoi montare la tua partizione in modo diverso, sì. Ma per impostazione predefinita è montato come eseguibile sulla maggior parte delle distribuzioni Linux. Grazie per il chiarimento.
Smile4ever,

Risposte:


77

Ignacio Vazquez-Abrams ha già spiegato su* :

Significa che il file è eseguibile. Viene visualizzato un classificatore quando -F viene passato a ls tramite la riga di comando o in altro modo.

Per quanto riguarda l'aspetto eseguibile emulatorche non è possibile eseguire effettivamente, ciò può accadere quando il caricatore dinamico richiesto da emulatornon esiste. Puoi controllare che tipo di file emulatorè con il comando file emulatore quale caricatore dinamico e quali librerie ha bisogno ldd emulator(qualsiasi riga che mostra "non trovato" è qualcosa che devi installare).

Dato il nome della directory e la dimensione del file, emulatorè probabilmente un binario x86 di Linux. Sospetto che tu abbia un sistema amd64. In tal caso, è necessario installare un ambiente di runtime per le applicazioni a 32 bit; su Ubuntu, è necessario il ia32-libspacchetto (e forse anche ia32-libs-gtk).

È inoltre possibile ottenere questo messaggio di errore per uno script il cui interprete come indicato nella #!riga non esiste.


1
Interessante, darò quello che hai suggerito un colpo. L'unica cosa che mi confonde è che ho avuto questo in esecuzione ieri, e da allora ho solo riavviato ...: S
user155695

-bash: ./badshebang: /bin/xyzzy: bad interpreter: No such file or directory
Dennis Williamson,

80

Significa che il file è eseguibile. Viene visualizzato un classificatore quando -Fviene passato lstramite la riga di comando o in altro modo.


33

Da 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.

3
+1 per insegnare a pescare e dare il pesce.
atoMerz,

21

Ubuntu (12.04, e probabilmente anche altre versioni) include le seguenti impostazioni di default:

alias ll='ls -alF'

E come altri hanno spiegato, -Fè responsabile dell'asterisco.

IPython usa automaticamente la Fbandiera sotto il cofano (per impostazione predefinita), quindi basta entrare lsprodurrà l'effetto che stai vedendo lì.

Modifica: a proposito, stai affermando che stai correndo ls -l, correre llpotrebbe non essere affatto lo stesso.


7
Un trucco divertente che puoi fare in Bash è digitare il comando alias'd (es. "Ll") e premere [Ctrl] + [Alt] + [e]. Espanderà l'alias in modo da poter vedere cosa sta effettivamente elaborando. (potresti doverlo premere alcune volte per espandere completamente)
Adam

9

Come molti altri hanno già detto, l' -Fopzione per lscontrassegnare gli eseguibili con l'asterisco. Non hai un -Fnella tua riga di comando, ma è probabile che lssia stato modificato. È possibile verificare la presenza di alias nella shell prescelta (in bash, utilizzare il comando integrato aliasper elencare gli alias) o uscire dal lscomando con una barra rovesciata per disabilitare l'aliasing.

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.