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

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

Ho fatto un ls -l all'interno di una directory, e i miei file vengono visualizzati così:

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?

Non sono anche in grado di eseguire un particolare file, come segue:

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

EDIT : Sto cercando di fare in modo che Eclipse usi emulator, ma continua a lamentarsi che il file non esiste, eppure c'è?

Risposte (5)

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

Ignacio Vazquez-Abrams ha già spiegato la * :

Significa che il file è eseguibile. Un classificatore viene mostrato quando -F viene passato a ls tramite la linea di comando o altrimenti.

Per quanto riguarda l'aspetto eseguibile emulator che non puoi effettivamente eseguire, questo può accadere quando il caricatore dinamico richiesto da emulator non esiste. Puoi controllare che tipo di file emulator è con il comando file emulator, e controllare di quale caricatore dinamico e quali librerie ha bisogno con ldd emulator (ogni riga che mostra “not found” è qualcosa che devi installare).

Dato il nome della directory e la dimensione del file, emulator è probabilmente un binario Linux x86. Sospetto che tu abbia un sistema amd64. Se è così, devi installare un ambiente runtime per applicazioni a 32 bit; su Ubuntu, hai bisogno del pacchetto ia32-libs (e forse anche di ia32-libs-gtk).

Potresti anche ottenere questo messaggio di errore per uno script il cui interprete indicato nella linea #! non esiste.

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

Significa che il file è eseguibile. Un classificatore viene mostrato quando -F viene passato a ls tramite la linea di comando o altrimenti.

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

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.
21
21
21
2012-11-05 16:30:44 +0000

Ubuntu (12.04, e probabilmente anche altre versioni) include la seguente impostazione di default:

alias ll='ls -alF'

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

IPython usa automaticamente il flag F sotto il cappuccio (per impostazione predefinita), quindi inserire semplicemente ls produrrà l'effetto che state vedendo.

Modifica: a proposito, stai affermando che stai eseguendo ls -l, eseguire ll potrebbe non essere affatto la stessa cosa.

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

Come molti altri hanno menzionato, l'opzione -F per ls segnalerà gli eseguibili con l'asterisco. Non hai un -F nella tua linea di comando, ma è probabile che ls abbia un alias. Puoi controllare gli alias nella tua shell preferita (in bash, usa il comando integrato alias per elencare gli alias), o sfuggire al comando ls con un backslash per disabilitare l'aliasing.