Ls

為什麼 ll -d */ 會產生額外的正斜杠?

  • January 13, 2020

該命令ls -d */僅列出目錄如下

Desktop/    Downloads/  Pictures/  snap/       Videos/
Documents/  Music/      Public/    Templates/

該命令ll -d */也將結果限制在目錄中,但是會附加一個額外的正斜杠。

ll是 的別名ls -alF

drwxr-xr-x 2 ec ec 4096 Jan 12 06:39 Desktop//
drwxr-xr-x 2 ec ec 4096 Jan  4 19:54 Documents//
drwxr-xr-x 7 ec ec 4096 Jan 12 21:12 Downloads//
drwxr-xr-x 2 ec ec 4096 Jan  4 19:54 Music//
drwxr-xr-x 2 ec ec 4096 Jan  5 20:47 Pictures//
drwxr-xr-x 2 ec ec 4096 Jan  4 19:54 Public//
drwxr-xr-x 3 ec ec 4096 Jan  5 15:16 snap//
drwxr-xr-x 2 ec ec 4096 Jan  4 19:54 Templates//
drwxr-xr-x 2 ec ec 4096 Jan  4 19:54 Videos//

如果ls -ald */執行該命令,則它不包含額外的正斜杠。

drwxr-xr-x 2 ec ec 4096 Jan 12 06:39 Desktop/
drwxr-xr-x 2 ec ec 4096 Jan  4 19:54 Documents/
drwxr-xr-x 7 ec ec 4096 Jan 12 21:12 Downloads/
drwxr-xr-x 2 ec ec 4096 Jan  4 19:54 Music/
drwxr-xr-x 2 ec ec 4096 Jan  5 20:47 Pictures/
drwxr-xr-x 2 ec ec 4096 Jan  4 19:54 Public/
drwxr-xr-x 3 ec ec 4096 Jan  5 15:16 snap/
drwxr-xr-x 2 ec ec 4096 Jan  4 19:54 Templates/
drwxr-xr-x 2 ec ec 4096 Jan  4 19:54 Videos/

相反ls -alFd */,返回相同的結果ll -d */

根據man ls國旗-F --classify append indicator (one of */=>@|) to entries

我假設由於 , 設置的附加指示符-Fll -d */附加了正斜杠,儘管不清楚是否需要或包含附加後綴的價值,即/如果已經存在,為什麼需要添加另一個後綴?

其次,有沒有辦法只列出目錄而ll -d */沒有額外的/

創建的文件列表*/由 shell 生成。它是一個/已經附加的目錄列表:

$ echo */
Desktop/ Documents/ Downloads/ Music/ Pictures/ Public/ snap/ Templates/ Videos/

這是在一個實用程序(shell)中生成的,並提供給另一個實用程序 ( ls) 以供其進一步解析和處理。

那就是得到的列表ls。這就是為什麼您需要-d選擇重複列表而不進入每個目錄的原因。

如果你給 ls 添加一個 ‘-p’ 選項,它會在每個目錄後面附加一個附加值,/以表明它是一個目錄:

$ ls -pd */
Desktop//  Documents//  Downloads//  Music//  Pictures//  Public//  snap//  Templates//  Videos//

如果 ls 的顏色選項處於活動狀態,您應該看到一種顏色的路徑名和/另一種顏色。

-Fls 選項與該選項類似,但-p它也可以使用其他字元來表示其他類型的文件(不僅是目錄),其中每個字元來自此列表*/=>@|

引用自:https://unix.stackexchange.com/questions/561739