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

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

Я сделал 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

EDIT : Я пытаюсь заставить Eclipse использовать emulator, но он продолжает жаловаться, что файлов не существует, но он здесь?

Ответы (5)

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

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

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

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

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

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

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

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

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

От 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, и, вероятно, другие версии также) включает следующую настройку по умолчанию:

alias ll='ls -alF'

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

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

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

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

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

Похожие вопросы

6
10
5
37
8