目录
内容来源:
【GUN】【ls】指令介绍
【busybox】【ls】指令介绍
【linux】【ls】指令介绍
使用示例-默认输出:
列出目录内容 - 默认输出
列出目录内容 - 不忽略以'.'开头的文件
列出目录内容 - 不忽略以'.'开头的文件,只忽略'.'和'..'文件
列出目录内容 - 忽略以'~'结尾的文件
列出目录内容 - 不显示符合匹配条件的文件
列出目录内容 - 递归地列出所有目录的信息
列出目录内容 - 长格式,输出完整的时间信息
列出目录内容 - 输出文件的inode
列出目录内容 - 在文件名的左侧打印每个文件的文件系统分配
列出目录内容 - 显示SELinux安全上下文
列出目录内容 - 文件加上双引号
使用示例:排序
列出目录内容 - 不对目录排序
列出目录内容 - 翻转排序输出
列出目录内容 - 按文件大小排序
列出目录内容 - 按照修改时间戳排序
列出目录内容 - 按照时间戳排序
列出目录内容 - 不排序
列出目录内容 - 按照参数排序
使用示例:一般输出
列出目录内容 - 设置横向输出和竖向输出
列出目录内容 - 一行显示一个文件
列出目录内容 - 在文件末尾显示文件的类型
列出目录内容 - 文件颜色显示
列出目录内容 - 指定行宽(默认80)
使用示例:指定时间戳显示格式
常用组合指令:
指令不常用/组合用法还需继续挖掘:
------------------------------分割线-------------------------
dir:简要列出目录内容
vdir:详细列出目录内容
dircolors: ls的颜色设置
【GUN】【dircolors】指令介绍
【linux】【dircolors】指令介绍
颜色设置说明
内容来源:
GUN : Coreutils - GNU core utilities
busybox v1.36.1 : 【busybox记录】【shell指令】基于的Busybox的版本和下载方式-CSDN博客
【GUN】【ls】指令介绍
ls:列出目录内容
ls 程序列出了有关文件的信息(任何类型的文件,包括目录)。选项和文件参数可以像往常一样任意混合。后面的选项覆盖前面不兼容的选项。
对于作为目录的非选项命令行参数,默认ls列出目录的内容,不递归,并省略以'.'开头的文件。
对于其他非选项参数,ls默认只列出文件名。如果没有指定非选项参数,ls将对当前目录进行操作,就像使用单个参数' . '调用它一样。
默认情况下,输出是按字母顺序排序的,根据实际的区域设置如果标准输出是终端,则输出按列排列(垂直排序),控制字符以问号形式输出;否则,每行列出一个输出,并按原样输出控制字符。
因为ls是一个非常基础的程序,所以多年来积累了很多选项。它们将在下面的小节中加以描述;在每个部分中,选项按字母顺序列出(忽略大小写)。将选项划分为子部分并不是绝对的,因为一些选项影响ls操作的多个方面。
退出状态:
0 成功
1 一些小问题(例如,无法访问未指定为命令行参数的文件或目录。当列出一个目录,其中的条目正在被删除或重命名时,就会发生这种情况。)
2 严重问题(例如,内存耗尽,无效选项,无法访问作为命令行参数或目录循环指定的文件或目录)
参见第2章[常见选项],第2页。
10.1.1列出了哪些文件
这些选项决定了哪些文件的ls列表信息。默认情况下,ls在命令行中列出所有目录下的文件和内容,但它忽略目录中以' . '开头的文件。
‘-a’
‘--all’
在目录中,不要忽略以' . '开头的文件名。
‘-A’
‘--almost-all’
在目录中,不要忽略所有以' . '开头的文件名;只忽略 . 和 ... 选项--all (-a)覆盖了这个选项。
‘-B’
‘--ignore-backups’
在目录中,忽略以` ~ `结尾的文件。这个选项相当于”,‘--ignore='*~' --ignore='.*~'’.
‘-d’
‘--directory’
只列出目录的名称,就像列出其他类型的文件一样,而不是列出它们的内容。除非指定了--dereference-command-line-symlink-to-dir选项,否则不要跟在命令行中列出的符号链接后面。
‘-H’
‘--dereference-command-line’
如果命令行参数指定符号链接,则显示链接引用文件的信息,而不是链接本身的信息。
‘--dereference-command-line-symlink-to-dir’
不要解除符号链接的引用,但有一个例外:如果命令行参数指定了指向某个目录的符号链接,则显示该目录的信息,而不是链接本身的信息。这是默认行为,除非使用了长格式,或者以下任何选项生效:--classify (-F),--directory (-d),--dereference (-L),或者--dereference-command (-H)。
‘--group-directories-first’
在文件之前将所有目录分组,然后使用选定的排序键分别对目录和文件进行排序(参见--sort选项)。也就是说,这个选项指定了一个主排序键,而--sort选项指定了一个次排序键。但是,使用--sort=none (-U)会完全禁用这个选项。
‘--hide=PATTERN’
在目录中,忽略名称与shell模式匹配的文件,除非还给出了--all (-a)或--almost-all (-a)。这个选项的作用类似于--ignore=pattern,只是如果也指定了--all (-a)或--almost-all (-a),则没有效果。
这个选项在shell别名中很有用。例如,如果lx是`ls --hide='*~'`的别名,ly是`ls --ignore='*~'`的别名,那么命令`lx -A`会列出文件的README~,尽管`ly -A`不会。
‘-I pattern’
‘--ignore=pattern’
在目录中,忽略名称匹配shell模式(非正则表达式)模式的文件。在shell中,首字母是`.`不匹配pattern开头的通配符。有时多次给出这个选项是有用的。例如,
$ ls --ignore='.??*' --ignore='.[^.]' --ignore='#*'
第一个选项忽略长度大于等于3且以'.'开头的名字。第二个忽略所有以'.' '..'开头的两个字符的名字,第三种忽略以'#'开头的名字。
‘-L’
‘--dereference’
当显示符号链接的文件信息时,显示链接引用文件的信息,而不是链接本身的信息。然而,即使有这个选项,ls仍然打印链接本身的名称,而不是链接指向的文件的名称。
‘-R’
‘--recursive’
递归地列出所有目录的内容。
10.1.2列出了哪些信息
这些选项会影响ls显示的信息。默认情况下,只显示文件名。
‘--author’
以长格式列出每个文件的作者。在GNU/Hurd中,文件作者可以与其所有者不同,但在其他操作系统中,两者是相同的。
‘-D’
‘--dired’
在主输出之后再打印一行:
//DIRED// beg1 end1 beg2 end2 ...
begin和endn是无符号整数,记录了输出中每个文件名开始和结束的字节位置。这使得Emacs很容易找到名称,即使其中包含不常见的字符,如空格或换行符,也不需要花哨的搜索。
如果目录是通过--recursive (-R)递归列出的,输出类似的一行,其中包含每个子目录名称的偏移量:
//SUBDIRED// beg1 end1 ...
最后,输出表单中的一行内容:
//DIRED-OPTIONS// --quoting-style=word
其中word是引用样式(参见10.1.6节[格式化文件名],第101页)。
下面是一个实际的例子:
$ mkdir -p a/sub/deeper a/sub2
$ touch a/f1 a/f2
$ touch a/sub/deeper/file
$ ls -gloRF --dired a
a:
total 8
-rw-r--r-- 1 0 Jun 10 12:27 f1
-rw-r--r-- 1 0 Jun 10 12:27 f2
drwxr-xr-x 3 4096 Jun 10 12:27 sub/
drwxr-xr-x 2 4096 Jun 10 12:27 sub2/
a/sub:
total 4
drwxr-xr-x 2 4096 Jun 10 12:27 deeper/
a/sub/deeper:
total 0
-rw-r--r-- 1 0 Jun 10 12:27 file
a/sub2:
total 0
//DIRED// 48 50 84 86 120 123 158 162 217 223 282 286
//SUBDIRED// 2 3 167 172 228 240 290 296
//DIRED-OPTIONS// --quoting-style=literal
上面'//DIRED//'行上的偏移量对分隔了这些名称:f1, f2, sub, sub2, deep, file
'//SUBDIRED//'行上的偏移量分隔了以下目录名称:a, a/sub, a/sub/deep, a/sub2。
下面是一个如何提取第五个条目名称' deep '的例子,它对应于一对偏移量222和228:
$ ls -gloRF --dired a > out
$ dd bs=1 skip=222 count=6 < out 2>/dev/null; echo deeper
尽管上面的列表包含了“deep”条目的末尾斜杠,但偏移量选择了没有末尾斜杠的名称。但是,如果使用--dired (-D)和--escape (-b)等选项调用ls,并对文件名包含特殊字符的文件进行操作,则会包含反斜杠:
$ touch 'a b'
$ ls -blog --dired 'a b'
-rw-r--r-- 1 0 Jun 10 12:28 a\ b
//DIRED// 30 34
//DIRED-OPTIONS// --quoting-style=escape
如果使用--quote -style=c (-Q)这样的引用样式来添加引号,那么偏移量将包含引号。因此请注意,用户可能会通过环境变量QUOTING_STYLE选择引用样式。因此,使用--dired的应用程序应该在命令行中明确指定--quote -style=literal (-N)选项,或者准备解析转义的名称。
--dired (-D)选项表示禁用超链接的长格式输出,优先于之前指定的输出格式或超链接模式。
‘--full-time’
制作长格式,并完整列出时间。这相当于使用--format=long (-l)和--time-style=full-iso(参见10.1.5节[格式化文件时间戳],第99页)。
‘-g’
生成长格式,但省略所有者信息。
‘-G’
‘--no-group’
禁止长格式显示群组信息。(在一些非gnu版本的ls中,这是默认值,因此我们提供了这个选项以实现兼容性。)
‘-h’
‘--human-readable’
为每个大小添加一个大小字母,例如' M '表示mebibytes。这里使用的是1024的幂,而不是1000;` M `代表1048576字节。这个选项等价于--block-size=human-readable。如果你喜欢1000的幂,可以使用--si选项。
‘-i’
‘--inode’
在文件名的左侧打印每个文件的inode编号(也称为文件序号和索引号)。(这个数字唯一地标识了特定文件系统中的每个文件。)
‘-l’
‘--format=long’
‘--format=verbose’
制作长格式。除了每个文件的名称,打印文件类型、文件模式位、硬链接数、所有者名称、组名称、大小和时间戳(参见10.1.5节[格式化文件时间戳],第99页),通常是修改时间戳(mtime,参见第28章[文件时间戳],第244页)。如果无法确定所有者或组名,则打印所有者或组ID,右对齐以提示它是数字而不是文本名称。对于无法确定的其他信息,打印问号。
对于块特殊文件和字符特殊文件,size字段被相应的设备主设备号和从设备号替换为由逗号和至少一个空格分隔的两个十进制数。
通常,大小以字节计数的形式打印,而不使用标点符号,但这可以被覆盖(参见2.2节[块大小],第3页)。例如,--human-readable (-h)打印一个简短的、人类可读的计数,而`--Block -size="'1" `打印一个带有当前区域设置千位分隔符的字节计数。
对于列出的每个目录,在文件前面加上一行“total blocks”,其中块是该目录中所有文件的文件系统分配。块大小当前默认为1024字节,但可以被覆盖(参见2.2节)。计算的块分别计算每个硬链接;这可以说是一个缺陷。
文件类型为以下字符之一:
‘-’ 普通文件
‘b’ 块特殊文件
‘c’ 字符特殊文件
‘C’ 高性能(“连续数据”)文件
‘d’ 目录
‘D’ 门(Solaris)
‘l’ 符号链接
‘M’ 离线(“迁移”)文件(Cray DMF)
‘n’ 网络特殊文件(HP-UX)
‘p’ FIFO(命名管道)
‘P’ 端口(Solaris)
‘s’ 套接字
‘?’ 其他文件类型
所列出的文件模式位类似于符号模式规范(参见第27.2节[符号模式])。但是ls将多个比特位合并到每组权限的第三个字符中,如下所示:
‘s’ 如果set-user-ID或set-group-ID 位与相应的可执行位都被置位。
‘S’ 如果设置了set-user-ID或set-group-ID 位,但对应的可执行位没有设置。
‘t’ 如果限制删除标志或粘着位,以及其他可执行位都设置了。受限删除标志是粘着位的另一个名称。参见第27.1节[模式结构],第236页。
‘T’ 如果设置了受限删除标志或粘着位,但未设置其他可执行位。
‘x’ 如果设置了可执行位,上述任何一个都不适用。
‘-’ 否则。
文件模式位之后是一个字符,指定是否对文件应用其他访问方法(如访问控制列表)。如果文件模式位后面的字符是一个空格,则没有其他访问方法。
当它是打印字符时,则有这样的方法。GNU ls使用'.'字符表示文件具有安全上下文,但没有其他替代访问方法。
具有其他可选访问方法组合的文件用` + `字符标记。
‘-n’
‘--numeric-uid-gid’
生成长格式,但显示右对齐的数字用户和组id,而不是左对齐的所有者和组名称。
‘-o’
生成长格式,但省略组信息。这相当于在--no-group (-G)中使用--format=long (-l)。
‘-s’
‘--size’
在文件名的左侧打印每个文件的文件系统分配。这是文件所占用的文件系统空间,通常略大于文件大小,但如果文件有漏洞,则会更小。
通常情况下,内存分配以1024字节为单位打印,但这可以覆盖(参见2.2节)。
对于从HP-UX系统以nfs方式装载到BSD系统的文件,此选项报告的大小为正确值的一半。在HP-UX系统上,它报告的文件大小是BSD系统nfs挂载文件的正确值的两倍。这是由于HP-UX中的一个缺陷;它还影响HP-UX ls程序。
‘--si’
为每个大小添加si风格的缩写,例如'M'表示兆字节。这里使用的是1000的幂,而不是1024;`M`代表1,000,000字节。这个选项等价于--block-size=si。如果你喜欢1024的幂,可以使用-h或--human-readable选项。
‘-Z’
‘--context’
显示SELinux安全上下文或`?`如果找不到的话。以长格式将安全上下文打印到size列的左侧。
10.1.3对输出结果排序
这些选项更改ls对其输出的信息进行排序的顺序。默认情况下,排序是按字符编码进行的(例如,ASCII顺序)。
‘-c’
‘--time=ctime’
‘--time=status’
以长格式打印状态变化时间戳(ctime)而不是mtime。当按时间排序或不使用长格式时,按ctime进行排序。请参阅第28章[文件时间戳]的244页。
‘-f’
生成一个无序的目录列表。这类似于--sort=none (-U),但也启用--all (-a),同时禁止之前使用的-l、--color --size或--hyperlink。
‘-r’
‘--reverse’
反转任何一种排序方法 例如,按与字母顺序相反的顺序列出文件,最小的优先,最小的优先,或者其他任何顺序。当--sort=none (-U)生效时,此选项无效。
‘-S’
‘--sort=size’
按文件大小排序,最大的优先。
‘-t’
‘--sort=time’
默认按修改时间戳(mtime)排序,最新的优先。要排序的时间戳可以用--time选项更改。请参阅第28章[文件时间戳]的244页。
‘-u’
‘--time=atime’
‘--time=access’
‘--time=use’
以长格式打印最后一次访问时间戳(atime)。当按时间排序或不使用长格式时,按atime排序。请参阅第28章[文件时间戳]的244页。
‘--time=mtime’
‘--time=modification’
这是默认的时间戳显示和排序模式。以长格式打印最后一次数据修改的时间戳(mtime)。当按时间排序或不使用长格式时,按mtime进行排序。请参阅第28章[文件时间戳]的244页。
‘--time=birth’
‘--time=creation’
用长格式打印文件创建时的时间戳(如果可用),如果没有则回退到文件修改时戳(mtime)。当按时间排序或不使用长格式时,按出生时间排序。请参阅第28章[文件时间戳]的244页。
‘-U’
‘--sort=none’
不要排序;以存储在目录中的任何顺序列出文件。(不要像-f那样做其他不相关的事情。)当列出大型目录时,这可能很有用,其中排序可能需要一些时间。
‘-v’
‘--sort=version’
按版本名和版本号排序,最小的优先。它的行为与默认排序类似,只是每个十进制数字序列都被视为索引/版本号。参见第30章[版本排序],第253页。
‘--sort=width’
按文件名的打印宽度排序。这在--format=vertical (-C)输出格式时很有用,可以最密集地显示列出的文件。
‘-X’
‘--sort=extension’
按文件扩展名(最后一个'.'之后的字符)按字母顺序排序目录内容;没有扩展名的文件首先排序。
10.1.4一般输出格式
这些选项会影响整体输出的外观。
‘--format=single-column’
每行只列出一个文件名,没有其他信息。当标准输出不是终端时,这是ls的默认值。请参见--escape (-b)、--hide-control-chars (-q)和--zero选项,以消除包含换行字符的文件名的输出歧义。
‘-1’
每行列出一个文件。这类似于--format=single-column,但如果长格式也生效,则没有效果。
‘-C’
‘--format=vertical’
按列列出文件,垂直排序,没有其他信息。如果标准输出是终端,这是ls的默认值。它始终是dir程序的默认值。GNU ls使用可变宽度的列,以最少的行显示尽可能多的文件。
‘--color [=when]’
指定是否使用颜色来区分文件类型;当可以省略时,或其中之一:
none - 完全不使用颜色。这是默认值。
auto - 仅在标准输出为终端时使用颜色。
always - 始终使用颜色。
指定--color和no等同于--color=always。如果通过less这样的分页器传递颜色列表,请使用分页器的-R选项将颜色代码传递给终端。
在大型目录中运行时,使用--color选项可能会导致明显的性能损失,因为默认设置要求对它列出的每个文件进行ls统计。但是,如果你想要大多数文件类型的着色,但不需要其他着色选项(例如,executable、orphan、sticky、other-writable、capability),可以使用dircolors来设置LS_COLORS环境变量,如下所示。
eval $(dircolors -p | perl -pe \
's/^((CAP|S[ET]|O[TR]|M|E)\w+).*/$1 00/' | dircolors -)
而且是在另一条路上。如果文件系统支持d_type, ls将对每个命令行参数只执行一次统计调用。
‘-F’
‘--classify [=when]’
‘--indicator-style=classify’
在每个文件名后附加一个字符,表示文件类型。此外,对于可执行的普通文件,添加`*`。文件类型指示符是'/'表示目录,'@'表示符号链接,'|'表示fifo, '='表示套接字,'>'表示门,普通文件没有指示符。当可以省略时,或其中之一:
none - 不分类。这是默认值。
auto - 如果标准输出是终端,则自动分类。
always - 总是分类。
指定--classify和no等同于--classify=always。
除非指定了--dereference-command-line (-H), --dereference (-L), or --dereference-command-line-symlink-to-dir选项,否则不要跟在命令行中列出的符号链接后面。
‘--file-type’
‘--indicator-style=file-type’
在每个文件名后附加一个字符,表示文件类型。这类似于--classify (-F,只不过可执行文件没有标记。
‘--hyperlink [=when]’
输出一些终端可以识别的代码,以链接到使用`file://` URI格式的文件。当可以省略时,或其中之一:
none - 完全不要使用超链接。这是默认值。
auto - 仅在标准输出为终端时使用超链接。
always - 始终使用超链接。
指定--hyperlink和no等同于--hyperlink=always。
‘--indicator-style=word’
在条目名称后添加一个带有样式词的字符指示符,如下所示:
‘none’ 不添加任何字符指示符;这是默认值。
‘slash’ 为目录添加` / `。这与-p选项相同。
‘file-type’ 添加' / '表示目录,添加' @ '表示符号链接,添加' | '表示fifo,添加' = '表示套接字,普通文件不添加。这与--file-type选项相同。
‘classify’ 为可执行的普通文件添加` * `,否则表现为` file-type `。这与--classify (-F)选项相同。
‘-k’
‘--kibibytes’
将默认的块大小设置为它的正常值1024字节,这将覆盖环境变量中任何相反的规范(参见2.2节[块大小])。如果使用了--block-size、--human-readable (-h)或--si选项,即使--kibibytes (-k)放在--kibibytes (-k)选项之后会影响长格式写入的每个目录的块计数,以及--size (-s)选项写入的文件系统分配,它们仍然具有优先级。
它不会影响以字节为单位写入长格式的文件大小。
‘-m’
‘--format=commas’
水平列出文件,每行可以容纳尽可能多的文件,由“,”(逗号和空格)分隔,没有其他信息。
‘-p’
‘--indicator-style=slash’
在目录名称后面添加一个` / `。
‘-x’
‘--format=across’
‘--format=horizontal’
按列列出文件,水平排序。
‘-T cols’
‘--tabsize=cols’
假设每个制表位都是cols列宽。默认值为8。ls在输出中尽可能使用制表符,以提高效率。如果cols为零,则完全不要使用制表符。
有些终端模拟器可能无法正确地将列对齐到非ascii字节后面的制表符的右侧。你可以通过使用-T0选项或在环境中设置TABSIZE=0来避免这个问题,告诉ls使用空格而不是制表符对齐。
如果您将终端的硬件选项卡设置为非默认值,则还应该使用--tabsize选项或tabsize环境变量来匹配硬件选项卡,或禁用硬件选项卡的使用。
否则,ls的输出可能不会对齐。例如,如果你运行`tabs -4`命令将硬件选项卡设置为每四列,你还应该运行`export TABSIZE=4`或`export TABSIZE=0`,或者使用相应的--TABSIZE选项。
‘-w cols’
‘--width=cols’
假设屏幕是cols列宽。如果可能,默认值从终端设置中获取;否则,如果设置了环境变量COLUMNS,则使用它;否则,默认值为80。当cols值为' 0 '时,对输出行的长度没有限制,单个输出行将由空格而不是制表符分隔。
‘--zero’
在每行末尾输出一个零字节(ASCII NUL),而不是换行符。该选项使其他程序能够解析输出,即使该输出包含嵌入换行符的数据。该选项与--dired (-D)选项不兼容。这个选项还包含--show-control-chars、-1、--color=none和--quote -style=literal (-N)选项。
10.1.5格式化文件时间戳
默认情况下,文件时间戳以缩写形式列出,对于非最近的时间戳使用像' Mar 30 2020 '这样的日期,对于最近的时间戳使用不带年份的日期和像' Mar 30 23:45 '这样的时间。此格式可以根据当前区域设置更改,如下所述。
如果时间戳少于6个月,并且日期不是未来的,则认为它是最近的。如果日期为今天的时间戳没有以最近的形式列出,则时间戳是在未来,这意味着您可能存在时钟偏移问题,这可能会破坏make等依赖文件时间戳的程序。请参阅第28章[文件时间戳]的244页。
时间戳根据环境变量TZ指定的时区规则列出,如果没有设置TZ,则根据系统默认规则列出。请参阅GNU C库参考手册中的“用TZ指定时区”一节。
下列选项更改打印文件时间戳的方式。
‘--time-style=style’
在style中列出时间戳。样式应该是下面的一种。
‘+format’
列出使用format的时间戳,其中format与date的format参数一样被解释(参见第21.1节[日期调用],第195页)。
例如,--time-style="+%Y-%m-%d %H:% m:%S"会导致ls列出类似' 2020-03-30 23:45:56 '的时间戳。与date一样,format的解释也受到LC_TIME区域类别的影响。
如果format包含两个以换行符分隔的格式字符串,则前者用于非最近的文件,后者用于最近的文件;如果希望输出列对齐,可能需要插入两种格式之一的空格。
‘full-iso’
使用类似ISO 8601的日期、时间和纳秒精度的时区组件完整列出时间戳,例如` 2020-07-21 23:45:56.477817180 -0400 `。这个样式等价于`+%Y-%m-%d %H:%M:%S.%N %z`。
这很有用,因为时间输出包含了操作系统中可用的所有信息。例如,这可以帮助解释make的行为,因为GNU make使用完整的时间戳来确定文件是否过期。
‘long-iso’
以分钟精度列出ISO 8601日期和时间组件,例如` 2020-03-30 23:45 `。这些时间戳比“full-iso”时间戳短,通常足够用于日常工作。这个样式等价于‘+%Y-%m-%d %H:%M’.
‘iso’
对于非最近的时间戳,列出ISO 8601规定的日期(例如' 2020-03-30 ');对于最近的时间戳,列出ISO 8601规定的月、日、小时和分钟(例如' 03-30 23:45 ')。
这些时间戳比“long-iso”时间戳难看,但它们在更小的空间中携带几乎相同的信息,其简洁有助于ls输出适合传统的80列输出行。下面两个ls调用是等效的:
newline='
'
ls -l --time-style="+%Y-%m-%d $newline%m-%d %H:%M"
ls -l --time-style="iso"
‘locale’
以语言环境相关的形式列出时间戳。例如,一个法语区域可能会列出非最近的时间戳(如' 30 mars 2020 ')和最近的时间戳(如' 30 mars 23:45 ')。语言环境相关的时间戳通常比` iso `时间戳消耗更多的空间,并且由于语言环境约定差异很大,程序更难解析,但它们对许多人来说更容易阅读。
LC_TIME区域类别指定了时间戳格式。默认的POSIX区域设置使用类似于` Mar 30 2020 `和` Mar 30 23:45 `的时间戳;在这个语言环境中,以下两个ls调用是等效的:
newline='
'
ls -l --time-style="+%b %e %Y$newline%b %e %H:%M"
ls -l --time-style="locale"
其他语言环境的行为不同。例如,在德语区域设置中,——time-style="locale"可能等同于--time-style="+%e. %b %Y $newline%e. %b %H:%M",可能会生成类似‘30. M¨ar 2020 ’ 和 ‘30. M¨ar 23:45’.
‘posix-style’
如果LC_TIME区域类别是POSIX,则列出POSIX-locale时间戳,否则设置时间戳样式。例如,` POSIX -long-iso `样式在POSIX语言环境中列出时间戳,如` Mar 30 2020 `和` Mar 30 23:45 `,否则列出` 2020-03-30 23:45 `。
你可以用环境变量TIME_STYLE指定--time-style选项的默认值;如果未设置TIME_STYLE,则默认样式为‘locale’.
GNU Emacs 21.3和以后版本使用--dired选项,因此可以解析任何日期格式,但如果您使用Emacs 21.1或21.2并指定非posix区域设置,则可能需要设置`TIME_STYLE="posix-long-iso"`。
为了避免某些拒绝服务攻击,超过1000字节的时间戳可能被视为错误。
10.1.6格式化文件名
这些选项改变了文件名本身的打印方式。
‘-b’
‘--escape’
‘--quoting-style=escape’
使用字母和八进制反斜杠序列引用文件名中的非图形字符,就像在C中使用的那样。
‘-N’
‘--literal’
‘--quoting-style=literal’
不要引用文件名。但是,如果输出是一个终端并且没有指定--show-control-chars选项,则使用ls的非图形字符仍然会以问号的形式打印出来。
‘-q’
‘--hide-control-chars’
在文件名中打印问号而不是非图形字符。如果输出是终端且程序是ls,这是默认值。
‘-Q’
‘--quote-name’
‘--quoting-style=c’
将文件名用双引号括起来,并像C中那样引用非图形字符。
‘--quoting-style=word’
使用样式词来引用文件名和其他可能包含任意字符的字符串。这个单词应该是下列单词之一:
‘literal’ 按原样输出字符串;这与--literal (-N)选项相同。
‘shell’ 如果shell字符串包含shell元字符或会导致歧义输出,` shell `将其作为shell的引号。引号适用于posix兼容的shell(如bash),但并不总是适用于不兼容的shell(如csh)。
‘shell-always’ 为shell引用字符串,即使它们通常不需要引用。
‘shell-escape’ 类似于` shell `,但也可以使用POSIX建议的适用于大多数shell的‘$''’语法引用非打印字符。
‘shell-escape-always’ 像`shell-escape`,但是即使字符串通常不需要加引号,也要加引号。
‘c’ 引号字符串与c字符串字面量一样,包括周围的双引号字符;这与--quote-name (-Q)选项相同。
‘escape’ 与C字符串字面量一样,'escape'引号字符串,只是省略了周围的双引号字符;这与--escape (-b)选项相同。
‘clocale’ 引号字符串与C字符串字面量一样,除了使用适合于区域设置的引号。
‘locale’ 与C字符串字面量一样,除了使用适合于区域设置的引号,以及在默认的C语言区域中引用`like this`而不是`like this`。这在许多显示器上看起来更好。
可以使用环境变量QUOTING_STYLE指定--quote -style选项的默认值。如果未设置该环境变量,则当输出为终端时,默认值为` shell-escape `,否则为` literal `。
‘--show-control-chars’
按原样打印文件名中的非图形字符。这是默认值,除非输出是终端且程序是ls。
【busybox】【ls】指令介绍
[root@localhost bin]# ./ls --help
BusyBox v1.36.1 (2024-04-16 11:16:28 EDT) multi-call binary.
Usage: ls [-1AaCxdLHRFplinshrSXvctu] [-w WIDTH] [FILE]...
List directory contents
-1 One column output
-a Include names starting with .
-A Like -a, but exclude . and ..
-x List by lines
-d List directory names, not contents
-L Follow symlinks
-H Follow symlinks on command line
-R Recurse
-p Append / to directory names
-F Append indicator (one of */=@|) to names
-l Long format
-i List inode numbers
-n List numeric UIDs and GIDs instead of names
-s List allocated blocks
-lc List ctime
-lu List atime
--full-time List full date/time
-h Human readable sizes (1K 243M 2G)
--group-directories-first
-S Sort by size
-X Sort by extension
-v Sort by version
-t Sort by mtime
-tc Sort by ctime
-tu Sort by atime
-r Reverse sort order
-w N Format N columns wide
--color[={always,never,auto}]
【linux】【ls】指令介绍
[root@localhost ~]# ls --help
用法:ls [选项]... [文件]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
必选参数对长短选项同时适用。
-a, --all 不隐藏任何以. 开始的项目
-A, --almost-all 列出除. 及.. 以外的任何项目
--author 与-l 同时使用时列出每个文件的作者
-b, --escape 以八进制溢出序列表示不可打印的字符
--block-size=SIZE with -l, scale sizes by SIZE when printing them;
e.g., '--block-size=M'; see SIZE format below
-B, --ignore-backups do not list implied entries ending with ~
-c with -lt: sort by, and show, ctime (time of last
modification of file status information);
with -l: show ctime and sort by name;
otherwise: sort by ctime, newest first
-C list entries by columns
--color[=WHEN] colorize the output; WHEN can be 'always' (default
if omitted), 'auto', or 'never'; more info below
-d, --directory list directories themselves, not their contents
-D, --dired generate output designed for Emacs' dired mode
-f do not sort, enable -aU, disable -ls --color
-F, --classify append indicator (one of */=>@|) to entries
--file-type likewise, except do not append '*'
--format=WORD across -x, commas -m, horizontal -x, long -l,
single-column -1, verbose -l, vertical -C
--full-time like -l --time-style=full-iso
-g 类似-l,但不列出所有者
--group-directories-first
group directories before files;
can be augmented with a --sort option, but any
use of --sort=none (-U) disables grouping
-G, --no-group in a long listing, don't print group names
-h, --human-readable with -l and -s, print sizes like 1K 234M 2G etc.
--si likewise, but use powers of 1000 not 1024
-H, --dereference-command-line
follow symbolic links listed on the command line
--dereference-command-line-symlink-to-dir
follow each command line symbolic link
that points to a directory
--hide=PATTERN do not list implied entries matching shell PATTERN
(overridden by -a or -A)
--hyperlink[=WHEN] hyperlink file names; WHEN can be 'always'
(default if omitted), 'auto', or 'never'
--indicator-style=WORD append indicator with style WORD to entry names:
none (default), slash (-p),
file-type (--file-type), classify (-F)
-i, --inode print the index number of each file
-I, --ignore=PATTERN do not list implied entries matching shell PATTERN
-k, --kibibytes default to 1024-byte blocks for disk usage;
used only with -s and per directory totals
-l 使用较长格式列出信息
-L, --dereference 当显示符号链接的文件信息时,显示符号链接所指示
的对象而并非符号链接本身的信息
-m 所有项目以逗号分隔,并填满整行行宽
-n, --numeric-uid-gid like -l, but list numeric user and group IDs
-N, --literal print entry names without quoting
-o like -l, but do not list group information
-p, --indicator-style=slash
append / indicator to directories
-q, --hide-control-chars print ? instead of nongraphic characters
--show-control-chars show nongraphic characters as-is (the default,
unless program is 'ls' and output is a terminal)
-Q, --quote-name enclose entry names in double quotes
--quoting-style=WORD use quoting style WORD for entry names:
literal, locale, shell, shell-always,
shell-escape, shell-escape-always, c, escape
(overrides QUOTING_STYLE environment variable)
-r, --reverse 逆序排列
-R, --recursive 递归显示子目录
-s, --size 以块数形式显示每个文件分配的尺寸
-S sort by file size, largest first
--sort=WORD sort by WORD instead of name: none (-U), size (-S),
time (-t), version (-v), extension (-X)
--time=WORD with -l, show time as WORD instead of default
modification time: atime or access or use (-u);
ctime or status (-c); also use specified time
as sort key if --sort=time (newest first)
--time-style=TIME_STYLE time/date format with -l; see TIME_STYLE below
-t sort by modification time, newest first
-T, --tabsize=COLS assume tab stops at each COLS instead of 8
-u with -lt: sort by, and show, access time;
with -l: show access time and sort by name;
otherwise: sort by access time, newest first
-U do not sort; list entries in directory order
-v natural sort of (version) numbers within text
-w, --width=COLS set output width to COLS. 0 means no limit
-x list entries by lines instead of by columns
-X sort alphabetically by entry extension
-Z, --context print any security context of each file
-1 list one file per line. Avoid '\n' with -q or -b
--help 显示此帮助信息并退出
--version 显示版本信息并退出
The SIZE argument is an integer and optional unit (example: 10K is 10*1024).
Units are K,M,G,T,P,E,Z,Y (powers of 1024) or KB,MB,... (powers of 1000).
The TIME_STYLE argument can be full-iso, long-iso, iso, locale, or +FORMAT.
FORMAT is interpreted like in date(1). If FORMAT is FORMAT1<newline>FORMAT2,
then FORMAT1 applies to non-recent files and FORMAT2 to recent files.
TIME_STYLE prefixed with 'posix-' takes effect only outside the POSIX locale.
Also the TIME_STYLE environment variable sets the default style to use.
使用色彩来区分文件类型的功能已被禁用,默认设置和 --color=never 同时禁用了它。
使用 --color=auto 选项,ls 只在标准输出被连至终端时才生成颜色代码。
LS_COLORS 环境变量可改变此设置,可使用 dircolors 命令来设置。
退出状态:
0 正常
1 一般问题 (例如:无法访问子文件夹)
2 严重问题 (例如:无法使用命令行参数)
GNU coreutils 在线帮助:<https://www.gnu.org/software/coreutils/>
请向 <http://translationproject.org/team/zh_CN.html> 报告 ls 的翻译错误
完整文档请见:<https://www.gnu.org/software/coreutils/ls>
或者在本地使用:info '(coreutils) ls invocation'
使用示例-默认输出:
列出目录内容 - 默认输出
指令: ls
指令: ls .
列出目录内容 - 不忽略以'.'开头的文件
-a 选项
指令: ls -a
列出目录内容 - 不忽略以'.'开头的文件,只忽略'.'和'..'文件
-A 选项
指令: ls -A
列出目录内容 - 忽略以'~'结尾的文件
-B 选项
指令: ls -B
列出目录内容 - 不显示符合匹配条件的文件
‘--hide=PATTERN’ 选项 / ‘-I pattern’ 选项 (可多次指定过滤)
示例:不显示包含a的文件
指令: ls --hide="*a*"
指令: ls -I "*a*"
列出目录内容 - 递归地列出所有目录的信息
‘-R’ 选项
指令: ls -R
列出目录内容 - 长格式,输出完整的时间信息
‘--full-time’ 选项
指令: ls --full-time
列出目录内容 - 输出文件的inode
-i 选项
指令:ls -i
列出目录内容 - 在文件名的左侧打印每个文件的文件系统分配
-s 选项
指令: ls -s
列出目录内容 - 显示SELinux安全上下文
-Z 选项
指令: ls -Z
列出目录内容 - 文件加上双引号
-Q 选项
指令: ls -Q
使用示例:排序
列出目录内容 - 不对目录排序
-f 选项
指令: ls -f
列出目录内容 - 翻转排序输出
-r 选项
指令: ls -r
列出目录内容 - 按文件大小排序
-S 选项
指令: ls -s -S
列出目录内容 - 按照修改时间戳排序
-t 选项
指令: ls -t
指令: ls -t --full-time
列出目录内容 - 按照时间戳排序
‘--time=’ 选项
ls: “--time” 有效的参数为:
- “atime”, “access”, “use”
- “ctime”, “status”
指令: ls --time=ctime
指令: ls --time=status
指令: ls --time=atime
指令: ls --time=access
指令: ls --time=use
列出目录内容 - 不排序
-U 选项
指令: ls -U
列出目录内容 - 按照参数排序
‘--sort=’选项
ls: “--sort” 有效的参数为:
- “none”
- “time”
- “size”
- “extension”
- “version”
指令:
ls --sort=none
ls --sort=time
ls --sort=size
ls --sort=extension
ls --sort=version
ls --sort=width
使用示例:一般输出
列出目录内容 - 设置横向输出和竖向输出
-C 选项 / -m 选项
指令:
ls -C
ls -m
列出目录内容 - 一行显示一个文件
-l 选项
指令: ls -l
列出目录内容 - 在文件末尾显示文件的类型
-F 选项
指令: ls -F
列出目录内容 - 文件颜色显示
--color 选项
ls: “--color” 有效的参数为:
- “always”, “yes”, “force”
- “never”, “no”, “none”
- “auto”, “tty”, “if-tty”
指令:
ls --color=auto
ls --color=none
列出目录内容 - 指定行宽(默认80)
-w 选项
指令: ls -w 40
使用示例:指定时间戳显示格式
--time-style 选项
指令: ls --full-time --time-style="+%Y-%m-%d %H:%m:%S"
指令:ls --full-time --time-style="full-iso"
指令:ls --full-time --time-style="long-iso"
指令:ls --full-time --time-style="iso"
指令:ls --full-time --time-style="locale"
常用组合指令:
NA
指令不常用/组合用法还需继续挖掘:
NA
------------------------------分割线-------------------------
dir:简要列出目录内容
dir 等价于ls -C -b; 也就是说,默认情况下文件按列列出,垂直排序,特殊字符用反斜杠转义序列表示。
vdir:详细列出目录内容
vdir 等价于ls -l -b;也就是说,默认情况下文件以长格式列出,特殊字符以反斜杠转义序列表示。
dircolors: ls的颜色设置
【GUN】【dircolors】指令介绍
dircolors 输出一系列shell命令,用于设置终端从ls(和dir等)输出颜色。典型的用法:
eval "$(dircolors [option]... [file])"
如果指定了file, dircolors将读取它以确定对哪种文件类型和扩展名使用哪种颜色。否则,将使用预编译的数据库。有关这些文件格式的详细信息,请运行`dircolors --print-database`。
要创建dircolors,请读取 ~/.dircolors 如果存在,你可以在~/.dircolors文件中添加以下代码行 ~/.bashrc(或者根据你喜欢的shell修改它们):
d=.dircolors
test -r $d && eval "$(dircolors $d)"
输出是一个shell命令,用于设置LS_COLORS环境变量。你可以在命令行中指定要使用的shell语法,否则dircolors会根据shell环境变量的值猜测它的值。
该程序接受以下选项。参见第2章[常见选项],第2页。
‘-b’
‘--sh’
‘--bourne-shell’
输出Bourne shell命令。如果设置的SHELL环境变量不以' csh '或' tcsh '结尾,则使用默认值。
‘-c’
‘--csh’
‘--c-shell’
输出C shell命令。如果SHELL以csh或tcsh结尾,这是默认值。
‘-p’
‘--print-database’
打印(编译的)默认颜色配置数据库。这个输出本身就是一个有效的配置文件,并且对各种可能性做了相当详细的描述。
‘--print-ls-colors’
将LS COLORS条目打印在单独的行上,每一行根据它们所代表的颜色进行着色。
退出状态为零表示成功,非零值表示失败。
【linux】【dircolors】指令介绍
[root@localhost bin]# dircolors --help
用法:dircolors [选项]... [文件]
输出用来设置 LS_COLORS 环境变量的命令。
指定输出的规格:
-b, --sh, --bourne-shell 输出设置LS_COLORS 的Bourne shell 命令
-c, --csh, --c-shell 输出设置LS_COLORS 的C shell 命令
-p, --print-database 输出默认的色彩设置
--help 显示此帮助信息并退出
--version 显示版本信息并退出
If FILE is specified, read it to determine which colors to use for which
file types and extensions. Otherwise, a precompiled database is used.
For details on the format of these files, run 'dircolors --print-database'.
GNU coreutils 在线帮助:<https://www.gnu.org/software/coreutils/>
请向 <http://translationproject.org/team/zh_CN.html> 报告 dircolors 的翻译错误
完整文档请见:<https://www.gnu.org/software/coreutils/dircolors>
或者在本地使用:info '(coreutils) dircolors invocation'
颜色设置说明
# dircolors的配置文件,这是一个帮助您设置由GNU ls使用的 --color选项的LS_COLORS环境变量的实用程序。
# Copyright (C) 1996-2018 Free Software Foundation, Inc.
# Copying and distribution of this file, with or without modification, are permitted provided the copyright notice and this notice are preserved.
# 可以识别关键字COLOR、OPTIONS和EIGHTBIT(由slackware版本的dircolors提供),但会忽略
# 下面是词条条目,可以是一个glob模式,用于与词条环境变量进行匹配,以确定它是否可着色。
TERM Eterm
TERM ansi
TERM *color*
TERM con[0-9]*x[0-9]*
TERM cons25
TERM console
TERM cygwin
TERM dtterm
TERM gnome
TERM hurd
TERM jfbterm
TERM konsole
TERM kterm
TERM linux
TERM linux-c
TERM mlterm
TERM putty
TERM rxvt*
TERM screen*
TERM st
TERM terminator
TERM tmux*
TERM vt100
TERM xterm*
# 下面是基本文件类型的初始化字符串。一个颜色init字符串由以下数字代码组成:
# Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
# Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
# Background color codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
#NORMAL 00 # no color code at all
#FILE 00 # regular file: use no color at all
RESET 0 # reset to "normal" color
DIR 01;34 # directory
LINK 01;36 # symbolic link. (If you set this to 'target' instead of a
# numerical value, the color is as for the file pointed to.)
MULTIHARDLINK 00 # regular file with more than one link
FIFO 40;33 # pipe
SOCK 01;35 # socket
DOOR 01;35 # door
BLK 40;33;01 # block device driver
CHR 40;33;01 # character device driver
ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file ...
MISSING 00 # ... and the files they point to
SETUID 37;41 # file that is setuid (u+s)
SETGID 30;43 # file that is setgid (g+s)
CAPABILITY 30;41 # file with capability
STICKY_OTHER_WRITABLE 30;42 # dir that is sticky and other-writable (+t,o+w)
OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable
# This is for files with execute permission:
EXEC 01;32
# List any file extensions like '.gz' or '.tar' that you would like ls
# to colorize below. Put the extension, a space, and the color init string.
# (and any comments you want to add after a '#')
# If you use DOS-style suffixes, you may want to uncomment the following:
#.cmd 01;32 # executables (bright green)
#.exe 01;32
#.com 01;32
#.btm 01;32
#.bat 01;32
# Or if you want to colorize scripts even if they do not have the
# executable bit actually set.
#.sh 01;32
#.csh 01;32
# archives or compressed (bright red)
.tar 01;31
.tgz 01;31
.arc 01;31
.arj 01;31
.taz 01;31
.lha 01;31
.lz4 01;31
.lzh 01;31
.lzma 01;31
.tlz 01;31
.txz 01;31
.tzo 01;31
.t7z 01;31
.zip 01;31
.z 01;31
.dz 01;31
.gz 01;31
.lrz 01;31
.lz 01;31
.lzo 01;31
.xz 01;31
.zst 01;31
.tzst 01;31
.bz2 01;31
.bz 01;31
.tbz 01;31
.tbz2 01;31
.tz 01;31
.deb 01;31
.rpm 01;31
.jar 01;31
.war 01;31
.ear 01;31
.sar 01;31
.rar 01;31
.alz 01;31
.ace 01;31
.zoo 01;31
.cpio 01;31
.7z 01;31
.rz 01;31
.cab 01;31
.wim 01;31
.swm 01;31
.dwm 01;31
.esd 01;31
# image formats
.jpg 01;35
.jpeg 01;35
.mjpg 01;35
.mjpeg 01;35
.gif 01;35
.bmp 01;35
.pbm 01;35
.pgm 01;35
.ppm 01;35
.tga 01;35
.xbm 01;35
.xpm 01;35
.tif 01;35
.tiff 01;35
.png 01;35
.svg 01;35
.svgz 01;35
.mng 01;35
.pcx 01;35
.mov 01;35
.mpg 01;35
.mpeg 01;35
.m2v 01;35
.mkv 01;35
.webm 01;35
.ogm 01;35
.mp4 01;35
.m4v 01;35
.mp4v 01;35
.vob 01;35
.qt 01;35
.nuv 01;35
.wmv 01;35
.asf 01;35
.rm 01;35
.rmvb 01;35
.flc 01;35
.avi 01;35
.fli 01;35
.flv 01;35
.gl 01;35
.dl 01;35
.xcf 01;35
.xwd 01;35
.yuv 01;35
.cgm 01;35
.emf 01;35
# https://wiki.xiph.org/MIME_Types_and_File_Extensions
.ogv 01;35
.ogx 01;35
# audio formats
.aac 00;36
.au 00;36
.flac 00;36
.m4a 00;36
.mid 00;36
.midi 00;36
.mka 00;36
.mp3 00;36
.mpc 00;36
.ogg 00;36
.ra 00;36
.wav 00;36
# https://wiki.xiph.org/MIME_Types_and_File_Extensions
.oga 00;36
.opus 00;36
.spx 00;36
.xspf 00;36