列出文件和文件夹

在操作和使用目录中的文件之前,首先得直到该目录中有哪些文件,所以我们需要列出目录中得文件和子目录,此命令便是 ls 。输入 ls 会列出当前目录得内容,如下图:

ls

列出其他文件夹的内容

有时候我们不必进入到某个文件夹也可以查看那个文件夹的内容,假设现在我位于/home/pi目录中,但是要查看Documents目录的内容,可以输入下面的命令:

ls 其他文件夹

上面的例子中的 pwd 命令是查看当前目录的逻辑位置(相当于 pwd -L ), ls 命令后跟了一个基于相对路径的目录,所以显示的就是当前目录下的Documents目录下的内容。此外,也可以使用绝对路径,如下:

ls 其他文件夹

此外,Linux下的 ~ 代表当前用户的主目录,例如我当前登录的是pi用户,我的主目录是/home/pi,所以此时 ~ 相当于这个目录。如下:

~目录

使用通配符列出文件夹的内容

使用 ls 命令时可以配合通配符来使用,下面是一个实例,其中使用 -d 选项是为了避免显示匹配的目录中的内容:

ls通配符

查看子文件加中的文件列表

使用 ls 命令的 -R 选项可以递归的显示目录中的子目录中的内容,如下所示,当前目录中有个tmp目录,tmp目录中又有一个tmp目录,全部都递归的显示出来了:

ls递归

以逗号分隔列表显示内容

ls 的标准显示方式就是内容之间以多个空格分隔,如果不喜欢此种方式,可以使用 -m 选项来用逗号实现内容的分隔:

ls逗号分隔

以单独一列显示内容列表

ls 命令默认以字母顺序列出目录中的内容,每个内容之间以若干空格分隔,如果想以一列来显示目录中的内容,可以使用 -1 选项(数字1),如下:

一列显示内容

查看隐藏文件和文件夹

以圆点 . 开头的文件或者文件夹属于隐藏文件或文件夹,如果想显示它们,可以配合 ls 命令的 -a 选项,此外,每个目录都始终有两个子目录: ... ,前者代表当前目录,后者代表当前目录的父目录,这两个目录不可以删除。测试如下:

隐藏文件

如果不想显示 ... 两个目录,可以使用 -A 选项,如下:

隐藏文件

直观显示文件的类型

前面利用 ls 显示目录中的内容,除了bash自带的颜色显示区分内容是文件还是文件夹外,此外没有任何提示,为了更好的区分各个文件的内容,可以给 ls 命令加上 -F 选项,如下:

直观显示文件

可以看到,文件夹的结尾会有 / 符号,可执行文件结尾会有 * 符号,普通文件结尾会没有任何符号。一些结尾附加符号的含义如下表:

符号含义
*可执行文件
/目录
@符号链接文件
|FIFO(命名管道)
=套接字

列出权限、所有者以及其他信息

为了获取文件或者文件夹的详细信息,可以使用 ls 命令的 -l 选项(小写的字母l),如下:

列出全信息

上面的每一行都是一个文件(文件夹也是一个文件),从左边开始分别是:文件的类型和权限、文件的硬链接数或者子目录数、文件所有者、文件所属用户组、文件大小(单位byte)、文件最后修改月份、文件最后修改日期,文件最后修改时间。其中最左边的那项的第一个字符的解释如下表:

字符含义
-普通文件或者可执行文件
d目录
l符号链接
s套接字
b块设备
c字符设备
p命令管道(AKA FIFO)

此外,关于目录的权限的一些常见问题如下:

  • 一个目录如果没有x权限,则不能cd进入该目录,也不能执行该目录下的文件,不能查看该目录下的文件的内容。
  • 一个目录如果没有r权限,则不能列出该目录下的各个文件名。
  • 一个目录至少要有x和w权限才能在目录中创建文件。
  • 对于目录内而言,涉及到文件内容的,都需要x权限。

以倒序列出文件内容

ls 命令默认按照字母的顺序显示目录的内容,此时可以加上 -r 选项来倒序显示(选项 -R 是递归显示),如下:

倒序显示

按日期和时间排序内容

ls 命令默认按照字母的顺序显示内容,如果想按照日期和时间对目录的内容进行排序,则可以使用 -t 选项,组合 -r 可以时间倒序显示,如下:

按照时间排序

按照文件大小排序内容

使用 ls 命令的 -S 选项可以按照文件的大小对内容进行排序,如下:

按照文件大小排序

用K、M和G表示文件的大小

平常我们使用 ls 命令的 -l 选项时,显示的文件的大小是以字节为单位的很长一串数字,不易于人们阅读,所以可以使用 -h 选项来格式化大小,使其带单位显示(如果仍然没有单位则表示单位为字节),如下:

格式化大小

显示当前目录的路径

前面已经提到过了,输入命令 pwd 就可以显示当前路径的逻辑位置,等同于输入 pwd -L ,而如果想显示当前目录的物理位置,则需要输入 pwd -P ,如下:

pwd

可以看到,进入软链接file后,输入 pwd 显示的是一个逻辑位置(并不是这个软链接指向的真实物理位置),所以可以输入 pwd -P 显示真实的物理位置。