Co oznacza gwiazdka po nazwie pliku, gdy wpiszesz `ls -l`?

161

Zrobiłem ls -lwewnątrz katalogu, a moje pliki są wyświetlane w następujący sposób:

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ę również uruchomić określonego pliku, jak następuje:

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

EDYCJA : Próbuję uruchomić Eclipse emulator, ale ciągle narzeka, że ​​pliki nie istnieją, ale już tu są?

użytkownik155695
źródło
3
Wszystkie pliki są oznaczone jako pliki wykonywalne na partycjach NTFS.
Smile4ever,
@ Smile4ever to po prostu nieprawda. Zależy to od sposobu zamontowania partycji i domyślnie jest ona montowana jako wykonywalna. To samo dotyczy FAT i innych partycji innych niż Unix. Jednak możesz także przechowywać uprawnienia Unix w NTFS, ponieważ jest on zgodny z POSIX askubuntu.com/q/86959/253474 unix.stackexchange.com/q/11757/44425
phuclv
@ LưuVĩnhPhúc Możesz zamontować partycję inaczej, tak. Ale domyślnie jest montowany jako wykonywalny w większości dystrybucji Linuksa. Dziękuję za wyjaśnienie.
Smile4ever,

Odpowiedzi:

77

Ignacio Vazquez-Abrams wyjaśnił już* :

Oznacza to, że plik jest wykonywalny. Klasyfikator jest wyświetlany, gdy -F jest przekazywane do ls za pomocą wiersza poleceń lub w inny sposób.

Jeśli chodzi o wygląd pliku wykonywalnego emulator, którego w rzeczywistości nie można wykonać, może się to zdarzyć, gdy żądany moduł ładujący dynamiczny emulatornie istnieje. Za pomocą polecenia możesz sprawdzić, jaki emulatorjest plik file emulator, i sprawdzić, jakiego dynamicznego modułu ładującego i bibliotek potrzebuje ldd emulator(każdy wiersz z informacją „nie znaleziono” jest konieczny do zainstalowania).

Biorąc pod uwagę nazwę katalogu i rozmiar pliku, emulatorprawdopodobnie jest to plik binarny dla systemu Linux x86. Podejrzewam, że masz system amd64. Jeśli tak, musisz zainstalować środowisko wykonawcze dla aplikacji 32-bitowych; na Ubuntu potrzebujesz ia32-libspakietu (i być może również ia32-libs-gtk).

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

Gilles
źródło
1
Interesujące, dam ci to, co zasugerowałeś. Jedyne, co mnie dezorientuje, to to, że miałem to uruchomione wczoraj i od tego czasu zrestartowałem się tylko:: S
user155695
-bash: ./badshebang: /bin/xyzzy: bad interpreter: No such file or directory
Dennis Williamson
80

Oznacza to, że plik jest wykonywalny. Klasyfikatora pojawia się, gdy -Fjest przekazywany lsza pośrednictwem linii polecenia lub w inny sposób.

Ignacio Vazquez-Abrams
źródło
33

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.
użytkownik46971
źródło
3
+1 za naukę wędkowania, a także dawanie ryb.
atoMerz
21

Ubuntu (12.04 i prawdopodobnie także inne wersje) domyślnie zawiera następujące ustawienie:

alias ll='ls -alF'

I jak wyjaśnili inni, -Fjest odpowiedzialny za gwiazdkę.

IPython automatycznie używa Fflagi pod maską (domyślnie), więc samo wejście lsspowoduje efekt, który tam zobaczysz.

Edycja: przy okazji, stwierdzasz, że biegniesz ls -l, bieganie llmoże wcale nie być takie samo.

dk1844
źródło
7
Zabawną sztuczką, którą możesz zrobić w Bash, jest wpisanie aliasu (np. „Ll”) i naciśnięcie [Ctrl] + [Alt] + [e]. Rozwinie alias, abyś mógł zobaczyć, co faktycznie przetwarza. (może być konieczne kilkukrotne naciśnięcie, aby w pełni rozwinąć)
Adam
9

Jak wspomniało kilka innych osób, -Fopcja oznaczenia lsplików wykonywalnych gwiazdką. Nie masz znaku -Fw wierszu polecenia, ale prawdopodobnie lszostał on aliasowany. Możesz sprawdzić aliasy w wybranej powłoce (w bash, użyj wbudowanego polecenia, aliasaby wyświetlić listę aliasów) lub możesz wyjść z lspolecenia za pomocą odwrotnego ukośnika, aby wyłączyć aliasing.

mpez0
źródło