提要
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 选项
-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 文件
不能恰当的生成文件时,这个选项会提供帮助。
环境
变量 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
程序。
注意
本页描述的是 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>
《中国linux论坛man手册翻译计划》:
http://cmpp.linuxforum.net
跋
本页面中文版由中文
man 手册页计划提供。
中文 man
手册页计划:https://github.com/man-pages-zh/manpages-zh