
如果 ls 列出目前目錄的內容,是否有類似的指令可以列出非目前目錄的內容,而不使用 cd?
答案1
只需ls
輸入要列出的目錄的路徑即可獲得它。想像一下您在主目錄中但想要列出/etc
.只需運行ls /etc
,您就會將其列出。
答案2
ls
會這樣做。
的語法ls
是:
ls flags file-or-directory-names
為了我所呼喚的file-or-directory-names
,您可以列出目前目錄中的文件,以僅列出某些文件。例如,ls -l foo bar
將列出有關foo
和 的資訊bar
(以長形式,正如我給出的-l
標誌)。將列出名稱以(如果有)ls baz*go
開頭baz
和結尾的所有檔案。go
但是當你給一個目錄名到ls
,它列出了內容那個目錄而不是當前目錄。
因此,要列出 的內容/var/log
,您只需運行:
ls /var/log
如果你給一個相對的目錄的路徑(即不以 a 開頭的路徑),/
那麼它將在當前目錄中尋找該目錄(就像查找檔案一樣)。但它仍然會列出內容目錄,如你所願。
作為旁注,有時您可能會發現您不想列出內容目錄,但只需列出與列出檔案相同的目錄。為此,您可以傳遞-d
標誌。例如,這/var/log
以長形式顯示(不是它的內容,但/var/log
它本身):
ls -ld /var/log
答案3
看到已接受的答案後,我仍然不滿意。丹尼爾是怎麼知道解決方案的?你敢打賭我自己已經閱讀了線上幫助頁,但仍然不知道如何進行。
的手冊頁內容ls
如下:
描述:列出有關文件的資訊(預設為當前目錄)...
那裡沒有什麼有用的。然後我查了POSIX程式設計師手冊:
對於命名目錄類型檔案的每個操作數,ls 應寫入目錄中包含的檔案的名稱以及任何要求的關聯資訊。
此行解釋了可接受的解決方案中命令的行為。 CANFILE
的操作數是ls
一個目錄,並且ls
會列出該目錄的內容。正是OP想要的。但 Linux 上的實作可能與此處的規格不同。所以我們走在正確的軌道上,但還沒有實現。
然後我搜尋了GNU包的手冊coreutils
,這ls
是.這是我發現的:
對於目錄的非選項命令列參數,預設情況下 ls 列出目錄的內容...
這就解釋了。