Что означает звездочка после имени файла при вводе `ls -l`?

161

Я сделал ls -lвнутри каталога, и мои файлы отображаются так:

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*

Что означает эта звездочка?

Я также не могу запустить определенный файл, как показано ниже:

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

РЕДАКТИРОВАТЬ : я пытаюсь заставить Eclipse использовать emulator, но он продолжает жаловаться, что файлов не существует, но он здесь?

user155695
источник
3
Все файлы помечены как исполняемые на разделах NTFS.
Smile4ever
@ Smile4, это просто неправда. Это зависит от того, как вы смонтировали раздел, и по умолчанию он монтируется как полностью исполняемый. То же самое относится к FAT и другим не-Unix разделам. Однако вы также можете хранить разрешения Unix для NTFS, потому что это POSIX-совместимый askubuntu.com/q/86959/253474 unix.stackexchange.com/q/11757/44425
phuclv
@ LưuVĩnhPhúc Вы можете смонтировать раздел по-другому, да. Но по умолчанию он монтируется как исполняемый в большинстве дистрибутивов Linux. Спасибо за разъяснения.
Smile4ever

Ответы:

77

Игнасио Васкес-Абрамс уже объяснил о* :

Это означает, что файл является исполняемым. Классификатор отображается, когда -F передается в ls через командную строку или иным образом.

Что касается вида исполняемого файла, emulatorкоторый вы на самом деле не можете выполнить, это может произойти, когда запрошенный динамический загрузчик emulatorне существует. Вы можете проверить, что это за файл emulatorс помощью команды file emulator, и проверить, с каким динамическим загрузчиком и библиотеками он нужен ldd emulator(любая строка с надписью «not found» - это то, что вам нужно установить).

Учитывая имя каталога и размер файла, emulatorэто, вероятно, двоичный файл Linux x86. Я подозреваю, что у вас есть система amd64. Если это так, вам нужно установить среду выполнения для 32-битных приложений; в Ubuntu вам нужен ia32-libsпакет (и, возможно, также ia32-libs-gtk).

Вы также можете получить это сообщение об ошибке для сценария, интерпретатор которого, как указано в #!строке, не существует.

жилль
источник
1
Интересно, я дам то, что вы предложили выстрел. Единственное, что меня смущает, это то, что у меня это было запущено вчера, и с тех пор я только перезапустил ...: S
user155695
-bash: ./badshebang: /bin/xyzzy: bad interpreter: No such file or directory
Деннис Уильямсон
80

Это означает, что файл является исполняемым. Классификатор показан , когда -Fпередается lsчерез командную строку или иным образом .

Игнасио Васкес-Абрамс
источник
33

От 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.
user46971
источник
3
+1 за обучение рыбалке, а также за предоставление рыбы.
atoMerz
21

Ubuntu (12.04 и, возможно, другие версии) по умолчанию включает следующие настройки:

alias ll='ls -alF'

И, как объяснили другие, -Fотвечает за звездочку.

IPython автоматически использует Fфлаг под колпаком (по умолчанию), поэтому простой ввод lsдаст эффект, который вы там видите.

Редактировать: кстати, вы утверждаете, что бежите ls -l, бег llможет не совпадать.

dk1844
источник
7
Забавный трюк, который вы можете сделать в Bash, это ввести команду alias'd (например, «ll») и нажать [Ctrl] + [Alt] + [e]. Это расширит псевдоним, чтобы вы могли видеть, что он на самом деле обрабатывает. (вам, возможно, придется нажать на нее несколько раз, чтобы полностью развернуться)
Адам
9

Как уже упоминалось несколько других, -Fопция lsпомечает исполняемые файлы звездочкой. У вас нет -Fв командной строке, но, скорее всего, lsэто был псевдоним. Вы можете проверить псевдонимы в выбранной вами оболочке (в bash используйте встроенную команду для вывода aliasсписка псевдонимов) или экранировать lsкоманду с обратной косой чертой, чтобы отключить псевдонимы.

mpez0
источник