ls
命令在第三章中有简要介绍。它不仅列出文件和目录,还可以提供关于这些文件和目录的重要细节。与ls
一起使用的最常见选项之一是-l
,它显示一个长列表格式。以下是一个例子。
$ ls
Desktop Documents Downloads Music to-do.txt
$ ls -l
total 20
drwxrwxr-x 2 jason users 4096 May 3 08:33 Desktop
drwxrwxr-x 2 jason users 4096 May 3 08:35 Documents
drwxrwxr-x 2 jason users 4096 May 3 08:38 Downloads
drwxrwxr-x 3 jason users 4096 Jun 21 21:16 Music
-rw-r--r-- 1 jason users 73 Jun 22 19:34 to-do.txt
$
ls -l
提供的信息以代表文件或目录权限的一系列字符开始。权限将包含在第 6 章中。权限字符串后面的数字表示指向文件或目录的链接数。接下来,显示所有者,后跟组名。然后显示文件大小。提供的时间戳表示修改时间。最后一项是文件或目录本身的名称。
$ ls -l to-do.txt
-rw-r--r-- 1 jason users 73 Jun 22 19:34 to-do.txt
---------- - ----- ----- -- ------------ ---------
| | | | | | |
| | | | | | File Name
| | | | | |
| | | | | +----- Modification Time
| | | | |
| | | | +------------- Size in bytes
| | | |
| | | +------------------ Group
| | |
| | +------------------------ User (owner)
| |
| +---------------------------- Number of Links
|
+---------------------------------- Permissions
默认情况下,ls
不显示以句点开头的文件或目录。在 Linux 中,这样的文件被认为是隐藏的。要使用ls
显示隐藏文件,使用-a
选项包括所有项目。要以长列表格式显示所有项目,请使用-l
和-a
。请记住,选项可以组合使用。这三个命令是等价的:ls -l -a
、ls -la
和ls -al
。
$ ls
Desktop Documents Downloads Music to-do.txt
$ ls -a
. .. .bash_history .bash_logout .bashrc Desktop Documents Downloads Music .profile .ssh to-do.txt
$ ls -a -l
total 48
drwxr-xr-x 7 jason users 4096 Jun 22 20:36 .
drwxr-xr-x 6 root root 4096 May 4 10:26 ..
-rw------- 1 jason users 3738 Jun 22 19:37 .bash_history
-rw-r--r-- 1 jason users 220 Mar 30 2013 .bash_logout
-rw-r--r-- 1 jason users 3650 Jun 22 19:41 .bashrc
drwxrwxr-x 2 jason users 4096 May 3 08:33 Desktop
drwxrwxr-x 2 jason users 4096 May 3 08:35 Documents
drwxrwxr-x 2 jason users 4096 May 3 08:38 Downloads
drwxrwxr-x 3 jason users 4096 Jun 21 21:16 Music
-rw-r--r-- 1 jason users 675 Mar 30 2013 .profile
drwx------ 2 jason users 4096 May 3 12:44 .ssh
-rw-r--r-- 1 jason users 73 Jun 22 19:34 to-do.txt
$ ls -al
total 48
drwxr-xr-x 7 jason users 4096 Jun 22 20:36 .
drwxr-xr-x 6 root root 4096 May 4 10:26 ..
-rw------- 1 jason users 3738 Jun 22 19:37 .bash_history
-rw-r--r-- 1 jason users 220 Mar 30 2013 .bash_logout
-rw-r--r-- 1 jason users 3650 Jun 22 19:41 .bashrc
drwxrwxr-x 2 jason users 4096 May 3 08:33 Desktop
drwxrwxr-x 2 jason users 4096 May 3 08:35 Documents
drwxrwxr-x 2 jason users 4096 May 3 08:38 Downloads
drwxrwxr-x 3 jason users 4096 Jun 21 21:16 Music
-rw-r--r-- 1 jason users 675 Mar 30 2013 .profile
drwx------ 2 jason users 4096 May 3 12:44 .ssh
-rw-r--r-- 1 jason users 73 Jun 22 19:34 to-do.txt
$ ls -la
total 48
drwxr-xr-x 7 jason users 4096 Jun 22 20:36 .
drwxr-xr-x 6 root root 4096 May 4 10:26 ..
-rw------- 1 jason users 3738 Jun 22 19:37 .bash_history
-rw-r--r-- 1 jason users 220 Mar 30 2013 .bash_logout
-rw-r--r-- 1 jason users 3650 Jun 22 19:41 .bashrc
drwxrwxr-x 2 jason users 4096 May 3 08:33 Desktop
drwxrwxr-x 2 jason users 4096 May 3 08:35 Documents
drwxrwxr-x 2 jason users 4096 May 3 08:38 Downloads
drwxrwxr-x 3 jason users 4096 Jun 21 21:16 Music
-rw-r--r-- 1 jason users 675 Mar 30 2013 .profile
drwx------ 2 jason users 4096 May 3 12:44 .ssh
-rw-r--r-- 1 jason users 73 Jun 22 19:34 to-do.txt
要在ls
输出中将文件类型指示器附加到文件或目录的名称,请使用-F
选项。
$ ls
Desktop Documents Downloads link-to-to-do Music program to-do.txt
$ ls -F
Desktop/ Documents/ Downloads/ link-to-to-do@ Music/ program* to-do.txt
$ ls -lF
total 24
drwxrwxr-x 2 jason users 4096 May 3 08:33 Desktop/
drwxrwxr-x 2 jason users 4096 May 3 08:35 Documents/
drwxrwxr-x 2 jason users 4096 May 3 08:38 Downloads/
lrwxrwxrwx 1 jason users 9 Jun 22 21:01 link-to-to-do -> to-do.txt
drwxrwxr-x 3 jason users 4096 Jun 21 21:16 Music/
-rwxr-xr-x 1 jason users 13 Jun 22 21:02 program*
-rw-r--r-- 1 jason users 73 Jun 22 19:34 to-do.txt
$
表 2:文件类型指示器
标志 | 文件类型 |
---|---|
/ |
目录 |
@ |
符号链接。->符号后面的文件是链接的目标。 |
* |
可执行脚本或程序 |
= |
(电源)插座 |
> |
门 |
| |
命名管道 |
符号链接,有时称为符号链接或链接,指向实际文件或目录的位置。符号链接只是一个指针,但是您可以像操作实际的文件或目录一样操作它。符号链接通常用于创建长名称或长路径的快捷方式。符号链接的另一个常见用途是指向应用的当前版本,如下例所示。
$ cd /opt/nginx/
$ ls -F
1.6.0/ 1.7.1/ 1.7.2/ current@
$ ls -lF
total 12
drwxr-xr-x 2 root root 4096 Jun 22 21:12 1.6.0/
drwxr-xr-x 2 root root 4096 Jun 22 21:11 1.7.1/
drwxr-xr-x 2 root root 4096 Jun 22 21:11 1.7.2/
lrwxrwxrwx 1 root root 5 Jun 22 21:12 current -> 1.7.2/
$
要按时间对ls
命令的输出进行排序,请使用-t
选项。这将首先显示最近修改的项目。如果你想颠倒顺序,使用-r
。当您有一个包含许多文件的目录时,这可能会派上用场。当你按时间倒过来排序时,旧文件将从屏幕顶部滚下,而最新的文件将显示在你的提示的正上方。
$ ls -t
program link-to-to-do to-do.txt Music Downloads Documents Desktop
$ ls -lt
total 24
-rwxr-xr-x 1 jason users 13 Jun 22 21:02 program
lrwxrwxrwx 1 jason users 9 Jun 22 21:01 link-to-to-do -> to-do.txt
-rw-r--r-- 1 jason users 73 Jun 22 19:34 to-do.txt
drwxrwxr-x 3 jason users 4096 Jun 21 21:16 Music
drwxrwxr-x 2 jason users 4096 May 3 08:38 Downloads
drwxrwxr-x 2 jason users 4096 May 3 08:35 Documents
drwxrwxr-x 2 jason users 4096 May 3 08:33 Desktop
$ ls -lrt
total 24
drwxrwxr-x 2 jason users 4096 May 3 08:33 Desktop
drwxrwxr-x 2 jason users 4096 May 3 08:35 Documents
drwxrwxr-x 2 jason users 4096 May 3 08:38 Downloads
drwxrwxr-x 3 jason users 4096 Jun 21 21:16 Music
-rw-r--r-- 1 jason users 73 Jun 22 19:34 to-do.txt
lrwxrwxrwx 1 jason users 9 Jun 22 21:01 link-to-to-do -> to-do.txt
-rwxr-xr-x 1 jason users 13 Jun 22 21:02 program
$
要执行递归列表,请使用-R
选项。
$ ls -R
.:
Desktop Documents Downloads link-to-to-do Music program to-do.txt
./Desktop:
./Documents:
cat.jpg report.txt
./Downloads:
./Music:
JohnColtrane
./Music/JohnColtrane:
giant-steps.mp3
$
要实现同样的目标,但以更具视觉吸引力的方式,使用tree
命令。要仅查看目录结构,请使用tree -d
。对于彩色输出,使用tree -C
。默认情况下并不总是安装tree
命令,因此您可能需要依赖ls
命令。
$ tree
.
|-- Desktop
|-- Documents
| |-- cat.jpg
| |-- report.txt
|-- Downloads
|-- link-to-to-do -> to-do.txt
|-- Music
| |-- JohnColtrane
| |-- giant-steps.mp3
|-- program
|-- to-do.txt
5 directories, 6 files
$ tree -d
.
|-- Desktop
|-- Documents
|-- Downloads
|-- Music
|-- JohnColtrane
5 directories
$
当对目录运行ls
命令时,显示目录的内容。要让ls
仅对目录进行操作,请使用-d
选项。
$ tree Music/
Music/
|-- JohnColtrane
|-- giant-steps.mp3
1 directory, 1 file
$ ls Music/
JohnColtrane
$ ls -l Music/
total 4
drwxrwxr-x 2 jason users 4096 Jun 22 21:39 JohnColtrane
$ ls -d Music/
Music/
$ ls -ld Music/
drwxrwxr-x 3 jason users 4096 Jun 21 21:16 Music/
$
要为ls
命令的输出着色,请使用--color
选项。很像-F
选项,这个选项允许区分文件类型。
$ ls --color
Desktop Documents Downloads link-to-to-do Music program to-do.txt
以下是本章涵盖的ls
选项的摘要。尽管ls
有更多的选项,但这几个选项将涵盖最常见的用例。
表 3:常用ls
选项
[计]选项 | 描述 |
---|---|
-a |
显示所有文件,包括隐藏文件。 |
--color |
给输出着色。 |
-d |
列出目录而不是目录内容。 |
-l |
使用长列表格式。 |
-r |
颠倒顺序。 |
-R |
递归列出文件。 |
-t |
按时间排序。 |
即使文件名和目录名中允许有空格,如果可能的话,也可以更容易地避免空格。不要使用空格,考虑使用连字符或下划线。另一个好的选择是使用 CamelCase。例如,不要给一个文件命名my to do list
,而要命名为my-to-do-list
、my_to_do_list
,甚至MyToDoList
。
即使您选择避免在文件名中使用空格,您也可能会遇到由其他人创建的包含空格的文件名。对名称中有空格的文件进行操作的两种方法是使用引号或转义。要对名为my to do list
的文件进行操作,请用引号括起来,如:“my to do list
”。要转义文件名,请在空格前加一个反斜杠,如:my\ to\ do\ list
。除了用于单个字符之外,转义就像使用引号一样。
如果您不确定如何转义文件或目录名,请使用-b
选项让ls
显示给您。引用和转义不仅适用于空格,还适用于其他特殊字符,包括|
、&
、'
、;
、(
、)
、<
、>
、space
和tab
。
$ ls
my to do list
$ ls -l
total 4
-rw-r--r-- 1 jason users 73 Jun 22 22:16 my to do list
$ ls -l my to do list
ls: cannot access my: No such file or directory
ls: cannot access to: No such file or directory
ls: cannot access do: No such file or directory
ls: cannot access list: No such file or directory
$ ls -l "my to do list"
-rw-r--r-- 1 jason users 73 Jun 22 22:16 my to do list
$ ls -l my\ to\ do\ list
-rw-r--r-- 1 jason users 73 Jun 22 22:16 my to do list
$ ls -lb
total 4
-rw-r--r-- 1 jason users 73 Jun 22 22:16 my\ to\ do\ list
$