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

Co oznacza gwiazdka po nazwie pliku, kiedy wpisujesz `ls -l`?

Zrobiłem ls -l wewnątrz katalogu, i moje pliki wyświetlają się tak:

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*

Co oznacza ta gwiazdka?

Nie mogę też uruchomić konkretnego pliku, co wygląda następująco:

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

EDIT : Próbuję nakłonić Eclipse'a do używania emulator, ale ciągle narzeka, że plik nie istnieje, a przecież jest tutaj?

Odpowiedzi (5)

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

Ignacio Vazquez-Abrams wyjaśnił już kwestię * ](https://superuser.com/questions/178786/what-does-the-asterisk-mean-after-a-filename-if-you-do-ls-l/178789#178789):

Oznacza to, że plik jest wykonywalny. Klasyfikator jest pokazywany, gdy -F jest przekazywane do ls przez linię poleceń lub w inny sposób.

Jeśli chodzi o wyglądający na wykonywalny plik emulator, którego nie można wykonać, może się to zdarzyć, gdy dynamiczny program ładujący żądany przez emulator nie istnieje. Możesz sprawdzić, jakiego rodzaju plikiem jest emulator za pomocą komendy file emulator, a także sprawdzić, jakiego dynamicznego programu ładującego i bibliotek potrzebuje ldd emulator (każda linia pokazująca “nie znaleziono” jest czymś, co musisz zainstalować).

Biorąc pod uwagę nazwę katalogu i rozmiar pliku, emulator jest prawdopodobnie binarką Linuksa x86. Podejrzewam, że masz system amd64. Jeśli tak, to musisz zainstalować środowisko uruchomieniowe dla aplikacji 32-bitowych; na Ubuntu potrzebujesz pakietu ia32-libs (i być może także ia32-libs-gtk).

Możesz również otrzymać ten komunikat o błędzie dla skryptu, którego interpreter wskazany w linii #! nie istnieje.

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

Oznacza to, że plik jest wykonywalny. klasyfikator jest pokazywany, gdy -F jest przekazywane do ls przez wiersz poleceń lub w inny sposób.

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

Od 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 i prawdopodobnie także inne wersje) domyślnie ustawia:

alias ll='ls -alF'

I jak już inni wyjaśnili, -F jest odpowiedzialne za gwiazdkę.

IPython automatycznie używa flagi F pod maską (domyślnie), więc po prostu wpisanie ls da efekt, który tam widzisz.

Edycja: przy okazji, stwierdzasz, że uruchamiasz ls -l, uruchomienie ll może wcale nie być takie samo.

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

Jak wspomniało już kilku innych, opcja -F do ls będzie oznaczać pliki wykonywalne gwiazdką. Nie masz -F w swoim wierszu poleceń, ale jest prawdopodobne, że ls zostało aliasowane. Możesz sprawdzić aliasy w wybranej przez siebie powłoce (w bash, użyj wbudowanego polecenia alias do wylistowania aliasów), lub uciec od polecenia ls z odwrotnym ukośnikiem, by wyłączyć aliasing.