題 當你輸入`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

編輯 :我正在嘗試讓Eclipse使用 emulator,但它一直抱怨文件不存在,但它在這裡?


128
2017-08-21 20:21


起源


所有文件都在NTFS分區上標記為可執行文件。 - Smile4ever
@ Smile4ever那根本不是真的。這取決於你如何安裝分區,默認情況下它被掛載為全可執行文件。這同樣適用於FAT和其他非Unix分區。但是,您也可以在NTFS上存儲Unix權限,因為它與POSIX兼容 askubuntu.com/q/86959/253474  unix.stackexchange.com/q/11757/44425 - phuclv
@LưuVĩnhPhúc你可以用不同的方式安裝你的分區,是的。但默認情況下,它在大多數Linux發行版上作為可執行文件掛載。謝謝你的澄清。 - Smile4ever


答案:


Ignacio Vazquez-Abrams已經解釋過 *

這意味著該文件是可執行的。當-F為時,顯示分類器   通過命令行或其他方式傳遞給ls。

至於可執行的外觀 emulator 你無法實際執行,這可能發生在動態加載程序請求時 emulator 不存在。你可以檢查一下哪種文件 emulator 是命令 file emulator,並檢查它需要什麼動態加載程序和庫 ldd emulator (顯示“未找到”的任何行都是您需要安裝的)。

給定目錄的名稱和文件的大小, emulator 可能是Linux x86二進製文件。我懷疑你有一個amd64系統。如果是這樣,您需要為32位應用程序安裝運行時環境;在Ubuntu上,你需要 ia32-libs 包(也許也是 ia32-libs-gtk)。

您還可以為腳本獲取此錯誤消息,該腳本的解釋器如下所示 #! 線不存在。


53
2017-08-21 21:14



有意思,我會給你建議的一個鏡頭。只有讓我感到困惑的是我昨天開始運行,從那以後只重新啟動......:S - user155695
-bash: ./badshebang: /bin/xyzzy: bad interpreter: No such file or directory - Dennis Williamson


這意味著該文件是可執行的。一個 分類 顯示的時間 -F 被傳遞給 ls 通過命令行或其他方式。


77
2017-08-21 20:27





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.

29
2017-08-21 22:24



+1教學釣魚和給魚。 - atoMerz


Ubuntu(12.04,可能還有其他版本)默認包含以下設置:

alias ll='ls -alF'

正如其他人所解釋的那樣, -F 負責星號。

IPython自動使用 F 引擎蓋下的標誌(默認情況下),所以只需輸入 ls 會產生你在那裡看到的效果。

編輯:順便說一下,你說你正在跑步 ls -l,跑步 ll 可能根本不一樣。


20
2017-11-05 16:30



您可以在Bash中執行的有趣技巧是鍵入別名命令(例如“ll”)並按[Ctrl] + [Alt] + [e]。它會擴展別名,以便您可以看到它實際處理的內容。 (您可能需要按幾次才能完全展開) - Adam


正如其他幾個人所提到的那樣 -F 選項 ls 將使用星號標記可執行文件。你沒有 -F 在您的命令行中,但很可能 ls 已被別名。您可以在所選的shell中檢查別名(在bash中,使用內置命令 alias 列出別名),或逃避 ls 帶反斜杠的命令可禁用別名。


9
2017-08-22 01:54