查询目录下的内容(list directory contents)。本文将介绍其基本的用法和一些典型的用例。笔者使用的测试环境为 ubuntu 16.04。
输出
用法,因为我们省略了所有的选项和参数,输出的结果是当前目录下的文件名和目录名:
文件名和目录名称被按照字母序混排在一起,以列为单位从左到右排列。需要注意的是此时的输出并不包含隐藏文件和隐藏的目录。输出结果的排序方式,可以使用 -r 选项来逆序输出的顺序:
名称排在了第一个位置。-r 选项的含义为把排序方式颠倒,所以在使用其它方式排序后也可以使用这个选项来颠倒排序的结果。
显示隐藏文件
文件被理解为隐藏文件。ls 命令默认不会列出这些文件,除非你指定了 -a 选项。-a 选项其实是显示所有的文件,包含隐藏的文件和目录。在用户的家目录下试试 ls -a 命令,你会发现有不少的隐藏目录和隐藏文件呢!
文件。
显示更多信息
文件和目录的大小,最后更新的时间,所有者及其权限。使用 -l (小写的字母L) 选项可以输出长格式的信息:
显示一个文件或者目录的信息。第一个字母描述文件类型:- 为一般文件,d 为目录,l 为符号链接。接下来的 9 个字符说明文件权限的信息:针对每个用户、组以及除此以外的其它人。r 表示读取,w 表示写入,x 表示执行,如果未提供权限则是 -。
链接计数。第三栏和第四栏分别显示所有者与所属组。
显示的文件大小。在 Linux 命令中,涉及到文件大小的地方,一般默认是以字节为单位显示的。这样可读性就不是很好。所以有了 -h 选项!这个选项的全称是 --human-readable(给人读的)。也就是以 K,M,G 等单位来显示文件的大小:
修改时的时间戳。显示的顺序为月,日,年。但是仔细观察你会发现只有一些行在年的位置显示了年份(2017),其它的行在这个位置显示的都是一个时间。这里有一个规则:最后修改时间如果超过六个月才显示为年份,六个月以内的则显示为时间。如果你想要得到更精确的时间,可以同时使用 --full-time 选项:
显示的时间精度为百万分之一秒,并且会显示出时区的信息。
显示的时间是 mtime。如果我们需要显示 atime 或者是 ctime 该怎么办?此时就要用到 --time 选项来设置时间戳显示的时间类型:
图片,设置为 atime 后,显示的时间信息发生了明显的变化。
通配符
通配符有时会产生一些比较奇怪的结果,接下来笔者将尝试解释通配符在 ls 命令中的使用方式。通配符时首先发生的是 shell 的展开!文件名称列表替换这个模式。说简单点,在 ls 命令执行前,Bash 会进行模式匹配并进行替换。然后 ls 使用替换后的参数执行命令。举个例子:
sql 的目录,那么 Bash 替换完成后命令是这个样子:
文件:
用户的家目录下执行下面的命令:
用户家目录下一般会存在 Desktop,Documents 和 Downloads 目录,所以 D* 会被展开为 "Desktop Documents Downloads",最终 ls 执行的命令变成了:
通配符,还有一点需要注意:默认不会匹配到隐藏的文件,即便指定 a 选项也不行:
Feede9.png" alt="">
文件,需要显式的指定 . 号,比如:
文件无关,我们会在接下来详细介绍。
显示目录自身,而不显示其内容。所以使用 d 选项可以轻松的查看当前目录或是指定目录的信息:
输出这些目录下的内容。
加上 d 选项能保证结果符合我们的预期。
输出默认是以字母序排列的,只是隐藏文件的 . 号没有参与排序规则。除了字母序,我们还能以文件的大小或最后修改时间为排序条件。文件的大小为条件排列输出的结果:
修改的文件在最顶端,你可以使用 r 选项来反转这个顺序。这里你还可以通过 --time 选项改变长格式输出的时间类型(比如 atime 或 ctime),t 选项会以你指定的时间类型进行排序。
文件与目录
文件。默认情况下 p 与 F 选项的表现是相同的。都是在目录的结尾添加斜线(/):
文件:
用法和常用的选项,ls 命令还有很多的选项可以提供更多的功能。比如 i 选项可以显示文件的 inode 信息等等。所以 ls 是一个看似简单实则功能强大的命令。