LS(1)

NAME
ls, dir, vdir - 列目錄內容

提要
ls [選項] [檔名...]

POSIX 標準選項: [-CFRacdilqrtu1]

GNU 選項 (短格式):
[-1abcdfgiklmnopqrstuxABCDFGLNQRSUX] [-w cols] [-T cols] [-I pattern] [--full-time] [--format={long,verbose,commas,across,vertical,single-column}] [--sort={none,time,size,extension}] [--time={atime,access,use,ctime,status}] [--color[={none,auto,always}]] [--help] [--version] [--]

描述（ DESCRIPTION ）
程式ls先列出非目錄的檔案項，然後是每一個目錄中的“可顯示”檔案。如果 沒有選項之外的參數【譯注：即檔名部分為空】出現，預設為 "." （當前目錄）。 選項“ -d ”使得目錄與非目錄項同樣對待。除非“ -a ” 選項出現，文 件名以“.”開始的檔案不屬“可顯示”檔案。 以當前目錄為準，每一組檔案（包括非目錄檔案項，以及每一內含檔案的目錄）分 別按檔名比較順序排序。如果“ -l ”選項存在，每組檔案前顯示一摘要行: 給出該組檔案長度之和（以 512 字節為單位）。 輸出是到標準輸出（ stdout ）。除非以“ -C ”選項要求按多列輸出，輸出 將是一行一個。然而，輸出到終端時，單列輸出或多列輸出是不確定的。可以分別 用選項“ -1 ” 或“ -C ”來強制按單列或多列輸出。

-C  多列輸出，縱向排序。

-F  每個目錄名加“ / ”延伸檔名，每個 FIFO 名加“ | ”延伸檔名， 每個可運行名加“ * ”延伸檔名。

-R  遞歸列出遇到的子目錄。

-a  列出所有檔案，包括以 "." 開頭的隱含檔案。

-c  使用“狀態改變時間”代替“檔案修改時間”為依據來排序 （使用“ -t ”選項時）或列出（使用“ -l ”選項時）。

-d  將目錄名像其它檔案一樣列出，而不是列出它們的內容。

-i  輸出檔案前先輸出檔案系列號（即 i 節點號: i-node number）。 -l 列出（以單列格式）檔案模式（ file mode ），檔案的鏈 接數，所有者名，組名，檔案大小（以字節為單位），時間信 息，及檔名。預設時，時間信息顯示最近修改時間；可以以 選項“ -c ”和“ -u ”選擇顯示其它兩種時間信息。對於設 備檔案，原先顯示檔案大小的區域通常顯示的是主要和次要的 號（majorand minor device numbers）。

-q  將檔名中的非列印字符輸出為問號。（對於到終端的輸出這是預設的。）

-r  逆序排列。

-t  按時間信息排序。

-u  使用最近訪問時間代替最近修改時間為依據來排序（使用 “ -t ”選項時）或列出（使用“ -l ”選項時）。

-1 單列輸出。

GNU 細節
如果標準輸出是終端，將多列輸出（縱向排序）。

dir ( 也被安裝為命令 d ) 等同於“ ls -C ”；即，檔案
    預設是多列輸出，縱向排序。vdir ( 也被安裝為命令 v ) 等同於“ ls -l ”； 即，檔案預設是按長格式輸出。

GNU 選項
-1, --format=single-column 一行輸出一個檔案（單列輸出）。如標準輸出不是到終端， 此選項就是預設選項。

-a, --all
    列出目錄中所有檔案，包括以“.”開頭的檔案。

-b, --escape
    把檔名中不可輸出的字符用反斜槓加字符編號(就像在 C 語言裏一樣)的形式列出。

-c, --time=ctime, --time=status
    按檔案狀態改變時間（i節點中的ctime）排序並輸出目錄內 容。如採用長格式輸出（選項“-l”），使用檔案的狀態改 變時間取代檔案修改時間。【譯注：所謂檔案狀態改變（i節 點中以ctime標誌），既包括檔案被修改，又包括檔案屬性（ 如所有者、組、鏈接數等等）的變化】

-d, --directory
    將目錄名像其它檔案一樣列出，而不是列出它們的內容。

-f  不排序目錄內容；按它們在磁碟上存儲的順序列出。同時啟 動“ -a ”選項，如果在“ -f ”之前存在“ -l ”、“ - -color ”或“ -s ”，則禁止它們。

-g 忽略，為相容UNIX用。

-i, --inode
    在每個檔案左邊列印 i 節點號（也叫檔案序列號和索引號: file serial number and index number）。i節點號在每個特定的檔案系統中是唯一的。

-k, --kilobytes
    如列出檔案大小，則以千字節KB為單位。

-l, --format=long, --format=verbose
    除每個檔名外，增加顯示檔案類型、權限、硬鏈接數、所 有者名、組名、大小（ byte ）、及時間信息（如未指明是 其它時間即指修改時間）。對於6個月以上的檔案或超出未來 1 小時的檔案，時間信息中的時分將被年代取代。 每個目錄列出前，有一行“總塊數”顯示目錄下全部檔案所 佔的磁碟空間。塊預設是 1024 字節；如果設置了 POSIXLY_CORRECT 的環境變量，除非用“ -k ”選項，則預設塊大小是 512 字 節。每一個硬鏈接都計入總塊數（因此可能重復計數），這無 疑是個缺點。

列出的權限類似於以符號表示（檔案）模式的規範。但是 ls
    在每套權限的第三個字符中結合了多位（ multiple bits ） 的信息，如下： s 如果設置了 setuid 位或 setgid 位，而且也設置了相應的可執行位。 S 如果設置了 setuid 位或 setgid 位，但是沒有設置相應的可執行位。 t 如果設置了 sticky 位，而且也設置了相應的可執行位。 T 如果設置了 sticky 位，但是沒有設置相應的可執行位。 x 如果僅僅設置了可執行位而非以上四種情況。 - 其它情況（即可執行位未設置）。

-m, --format=commas
    水平列出檔案，每行盡可能多，相互用逗號和一個空格分隔。

-n, --numeric-uid-gid
    列出數字化的 UID 和 GID 而不是使用者名和組名。

-o  以長格式列出目錄內容，但是不顯示組信息。等於使用“ --format=long --no-group ”選項。提供此選項是為了與其它版本的 ls 相容。

-p  在每個檔名後附上一個字符以說明該檔案的類型。類似“ -F ”選項但是不 標示可執行檔案。

-q, --hide-control-chars
    用問號代替檔名中非列印的字符。這是預設選項。

-r, --reverse
    逆序排列目錄內容。

-s, --size
    在每個檔名左側輸出該檔案的大小，以 1024 字節的塊為單位。如果設置了 POSIXLY_CORRECT 的環境變量，除非用“ -k ”選項，塊大小是 512 字節。

-t, --sort=time
    按檔案最近修改時間（ i 節點中的 mtime ）而不是按檔案名字典序排序，新檔案 靠前。

-u, --time=atime, --time=access, --time=use
    類似選項“ -t ”，但是用檔案最近訪問時間（ i 節點中的 atime ）取代檔案修 改時間。如果使用長格式列出，列印的時間是最近訪問時間。

-w, --width cols
    假定螢幕寬度是 cols （ cols 以實際數字取代）列。如未用此選項，預設值是這 樣獲得的：如可能先嘗試取自終端驅動，否則嘗試取自環境變量 COLUMNS （如果設 置了的話），都不行則取 80 。

-x, --format=across, --format=horizontal
    多列輸出，橫向排序。

-A, --almost-all
    顯示除 "." 和 ".." 外的所有檔案。

-B, --ignore-backups
    不輸出以“ ~ ”結尾的備份檔案，除非已經在命令行中給出。

-C, --format=vertical
    多列輸出，縱向排序。當標準輸出是終端時這是預設項。使用命令名 dir 和 d 時， 則總是預設的。

-D, --dired
    當採用長格式（“ -l ”選項）輸出時，在主要輸出後，額外列印一行： //DIRED// BEG1 END1 BEG2 END2 ...

BEGn 和 ENDn 是無符號整數，記錄每個檔名的起始、結束位置在輸出中的位置（
    字節偏移量）。這使得 Emacs 易於找到檔名，即使檔名包含空格或換行等非正 常字符也無需特異的搜索。

如果目錄是遞歸列出的（“ -R ”選項），每個子目錄後列出類似一行：
    //SUBDIRED// BEG1 END1 ... 【譯注：我測試了 TurboLinux4.0 和 RedHat6.1 ，發現它們都是在 “ //DIRED// BEG1... ”之後列出“ //SUBDIRED// BEG1 ... ”，也即只有一個 而不是在每個子目錄後都有。而且“ //SUBDIRED// BEG1 ... ”列出的是各個子目 錄名的偏移。】

-F, --classify, --file-type
    在每個檔名後附上一個字符以說明該檔案的類型。“ * ”表示普通的可執行檔案； “ / ”表示目錄；“ @ ”表示符號鏈接；“ | ”表示FIFOs；“ = ”表示套接字 (sockets) ；什麼也沒有則表示普通檔案。

-G, --no-group
    以長格式列目錄時不顯示組信息。

-I, --ignorepattern
    除非在命令行中給定，不要列出匹配 shell 檔名匹配式（ pattern ，不是指一般 表達式）的檔案。在 shell 中，檔名以 "." 起始的不與在檔名匹配式 (pattern) 開頭的通配符匹配。

-L, --dereference
    列出符號鏈接指向的檔案的信息，而不是符號鏈接本身。

-N, --literal
    不要用引號引起檔名。

-Q, --quote-name
    用雙引號引起檔名，非列印字符以 C 語言的方法表示。

-R, --recursive
    遞歸列出全部目錄的內容。

-S, --sort=size
    按檔案大小而不是字典序排序目錄內容，大檔案靠前。

-T, --tabsize cols
    假定每個制表符寬度是 cols 。預設為 8。為求效率， ls 可能在輸出中使用制表符。 若 cols 為 0，則不使用制表符。

-U, --sort=none
    不排序目錄內容；按它們在磁碟上存儲的順序列出。（選項“ -U ”和“ -f ”的不 同是前者不啟動或禁止相關的選項。）這在列很大的目錄時特別有用，因為不加排序 能顯著的加快速度。

-X, --sort=extension
    按檔案擴展名（由最後的 "." 之後的字符組成）的字典序排序。沒有擴展名的先列 出。

--color[=when]
    指定是否使用顏色區別檔案類別。環境變量 LS_COLORS 指定使用的顏色。如何設置 這個變量見 dircolors(1) 。 when 可以被省略，或是以下幾項之一：

none 不使用顏色，這是預設項。
    auto 僅當標準輸出是終端時使用。 always 總是使用顏色。指定 --color 而且省略 when 時就等同於 --color=always 。

--full-time
    列出完整的時間，而不是使用標準的縮寫。格式如同 date(1) 的預設格式；此格式 是不能改變的，但是你可以用 cut(1) 取出其中的日期字串並將結果送至命令 “ date -d ”。

輸出的時間包括秒是非常有用的。（ Unix 檔案系統儲存檔案的時間信息精確到秒，
    因此這個選項已經給出了系統所知的全部信息。）例如，當你有一個 Makefile 檔案 不能恰當的生成檔案時，這個選項會提供幫助。

GNU 標準選項

--help
    列印用法信息到標準輸出並順利退出。

--version
    列印版本信息到標準輸出並順利退出。

--  結束選項表。

環境
變量 POSIXLY_CORRECT 可以決定一組選擇。如果沒有設置此變量，每個制表符的字 符數由變量 TABSIZE 決定。變量 COLUMNS （當它由一個十進制整數表示時）決定輸 出的列寬度（同“ -C ”選項一起用時）。檔名不得為適應多列輸出而被截斷。變 量 LANG, LC_ALL, LC_COLLATE, LC_CTYPE, LC_MESSAGES 及 LC_TIME 仍保持原義。 變量 TZ 給出時區供 ls 輸出相應的時間字串。變量 LS_COLORS 用以決定是否使用 顏色。

已知錯誤
在 BSD 系統上，對於從 HP-UX 系統上通過 NFS mount 而來的檔案，“ -s ”選項報 告的大小只有正確值的一半；在 HP-UX 系統上，對於從 BSD 系統上通過 NFS mount 而來的檔案， ls 報告的大小則有正確值的兩倍。這是 HP-UX 的一個缺陷造成的，它 也影響 HP-UX 上的 ls 程式。

適合到
POSIX 1003.2

參見
dircolors(1)

注意
本頁描述的是 fileutils-3.16 檔案包中的 ls ，其它版本的可能略有不同。糾錯或添 加（功能）請 mailto: aeb@cwi.nl 和 aw@mail1.bet1.puv.fi 及 ragnar@lightside.ddns.org 。本程式的錯誤報告請 mailto: fileutils-bugs@gnu.ai.mit.edu 。

[中文版維護人]
wangdong <wangdong@163.net>

[中文版最新更新]
2003.11.22

《中國linux論壇man手冊翻譯計劃》:
http://cmpp.linuxforum.net