Ls命令在Linux中的应用(列出文件和目录)
ls
是任何一个Linux用户都应该知道的基本命令之一。
ls
命令列出文件系统中的文件和目录,并显示它们的详细信息。它是GNU核心实用程序包的一部分,安装在所有Linux发行版上。
本文将通过实际的例子和对最常见的ls选项的详细解释,向你展示如何使用ls命令。
如何使用 ls
命令
ls
命令的句法如下:
ls [OPTIONS] [FILES]
当使用时没有选项和参数,ls
显示一个当前工作目录中所有文件的名称列表。
ls
文件是按字母顺序排列的,有多少列就有多少列,在你的终端机上就有多少列。
输出
cache db empty games lib local lock log mail opt run spool tmp
要列出特定目录下的文件,可将目录路径作为参数传给ls
命令。例如,要列出/etc
目录的内容,你可以键入:
ls /etc
你也可以传递多个目录和文件,用空格隔开:
ls /etc /var /etc/passwd
如果你登录的用户没有该目录的读取权限,你会得到一个消息,说ls
不能打开该目录。
ls /root
输出
ls: cannot open directory '/root': Permission denied
ls
命令有许多选项。在下面的章节中,我们将探讨最常用的选项。
长列表格式
ls
命令的默认输出只显示文件和目录的名称,这不是很有信息量。
-l
(小写字母L)选项告诉ls
以长列表的形式打印文件。
当使用长列表格式时,你可以看到以下的文件信息。
- 文件类型。
- 文件的权限。
- 文件的硬链接的数量。
- 文件的所有者。
- 文件组。
- 文件的大小。
- 日期和时间。
- 文件名。
下面是一个例子:
ls -l /etc/hosts
输出
-rw-r--r-- 1 root root 337 Oct 4 11:31 /etc/hosts
让我们来解释一下输出的最重要的几列。
第一个字符显示文件类型。在这个例子中,第一个字符是-
,表示一个普通文件。其他文件类型的值如下。
-
- 普通的文件。b
- 块状的特殊文件。c
- 字符特殊文件。d
- 目录。l
- 符号链接。n
- 网络文件。p
- 先进先出。s
- Socket。
接下来的九个字符显示的是文件权限。前三个字符是用户的,后三个是组的,最后三个是其他人的。你可以用chmod
命令来改变文件的权限。权限字符可以取以下值。
r
- 读取文件的权限。w
- 写入文件的权限。x
- 允许执行该文件的权限。s
-setgid
位。t
-sticky
位。
在我们的例子中,rw-r--r--
意味着用户可以读和写这个文件,而组和其他人只能读这个文件。权限字符后面的数字1
是这个文件的硬链接的数量。
接下来的两个字段root root
是显示文件所有者和组,然后是文件的大小(337
),以字节为单位显示。如果你想以人类可读的格式打印尺寸,请使用-h
选项。你可以用chown
命令改变文件所有者。
Oct 4 11:31
是最后一次修改文件的日期和时间。
最后一栏是文件的名称。
显示被隐藏的文件
默认情况下,ls
命令不会显示隐藏文件。在Linux中,隐藏文件是任何以点(.
)开头的文件。
要显示所有的文件,包括隐藏的文件,请使用-a
选项。
ls -la ~/
输出
drwxr-x--- 10 linuxize linuxize 4096 Feb 12 16:28 .
drwxr-xr-x 18 linuxize linuxize 4096 Dec 26 09:21 ..
-rw------- 1 linuxize linuxize 1630 Nov 18 2017 .bash_history
drwxr-xr-x 2 linuxize linuxize 4096 Jul 20 2018 bin
drwxr-xr-x 2 linuxize linuxize 4096 Jul 20 2018 Desktop
drwxr-xr-x 4 linuxize linuxize 4096 Dec 12 2017 .npm
drwx------ 2 linuxize linuxize 4096 Mar 4 2018 .ssh
对输出结果进行排序
正如我们已经提到的,默认情况下,ls
命令是按字母顺序排列文件的。
--sort
选项允许你按扩展名、大小、时间和版本对输出结果进行排序。
--sort=extension
(或-X
)--按扩展名的字母顺序排序。--sort=size
(或-S
)--按文件大小排序。--sort=time
(或-t
)--按修改时间排序。--sort=version
(或-v
)--版本号的自然排序。
如果你想以相反的排序顺序获得结果,请使用-r
选项。
例如,如果要按修改时间对/var
目录中的文件进行排序,你可以使用相反的排序顺序。
ls -ltr /var
值得一提的是,ls
命令并不显示目录内容占用的总空间。要得到一个目录的大小,请使用du
命令。
递归地列出子目录
-R
选项告诉ls
命令以递归的方式显示子目录的内容。
ls -R
总结
ls
命令列出了有关文件和目录的信息。
关于ls
的更多信息,请访问GNU Coreutils页面或在你的终端输入man ls
。
如果你有任何问题或反馈意见,请随时留言。