Що означає зірочка після імені файлу, коли ви вводите `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

EDIT : Я намагаюся використовувати Eclipse у використанні emulator, але він продовжує скаржитися, що файлів не існує, але він тут?


3
Усі файли позначені як виконувані на розділах NTFS.
Smile4ever

@ Smile4ever, що просто не відповідає дійсності. Це залежить від того, як ви змонтували розділ і за замовчуванням він змонтований як все-виконаний. Те саме стосується 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(будь-який рядок із зазначенням "не знайдено" - це те, що вам потрібно встановити).

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

Ви також можете отримати це повідомлення про помилку для сценарію, інтерпретатора, як зазначено у #!рядку, не існує.


1
Цікаво, я дам те, що ви запропонували зняти. Єдине, що мене бентежить, це те, що у мене це було запущено вчора, і з тих пір тільки перезапустили ...: S
user155695

-bash: ./badshebang: /bin/xyzzy: bad interpreter: No such file or directory
Денніс Вільямсон


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.

3
+1 для навчання риболовлі, а також давання риби.
atoMerz

21

Ubuntu (12.04 і, можливо, також інші версії) також включає такі налаштування за замовчуванням:

alias ll='ls -alF'

І як пояснили інші, -Fвідповідає за зірочку.

IPython автоматично використовує Fпрапор під кришкою (за замовчуванням), тому лише введення lsдасть ефект, який ви там бачите.

Редагувати: до речі, ви заявляєте, що бігаєте ls -l, біг llможе зовсім не бути однаковим.


7
Веселий трюк, який ви можете зробити в Bash, введіть команду alias'd (наприклад, "ll") і натисніть [Ctrl] + [Alt] + [e]. Він розширить псевдонім, щоб ви могли бачити, що він насправді обробляє. (можливо, вам доведеться натиснути її кілька разів, щоб повністю розгорнутись)
Адам,

9

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.