一、引言
在 Linux 系统中,ls
命令是一个使用频率极高的基础命令,它的主要功能是列出指定目录下的文件和子目录信息。无论是系统管理员进行日常的文件管理,还是普通用户查看文件列表,ls
命令都发挥着至关重要的作用。本文将对 ls
命令及其各种参数进行详细解析,帮助读者全面掌握该命令的使用方法。
二、ls
命令参数及含义
参数 | 含义 |
---|---|
-a | 用于显示所有文件,即便是以“.”开头的具有隐藏属性的文件,也会一并展示出来。 |
-A | 可显示所有文件,但会排除“.”和“..”这两个特殊的目录标识,不将它们呈现出来。 |
-b | 采用八进制的方式来表示那些非可打印的字符,以便对文件内容进行特殊展示。 |
-C | 以列格式来显示文件信息,这是系统默认的一种文件显示格式。 |
-d | 此参数会将目录本身作为展示对象,而不会展示目录内部所包含的具体文件及子目录内容。 |
-f | 会忽略诸如“-l”“-a”等其他选项的作用,直接按照文件名的顺序对文件进行罗列显示。 |
-F | 在每个文件名的末尾添加特定符号,以此来明确标识文件的类型。比如,用“/”标识该文件为目录,用“*”标识该文件为可执行文件。 |
-G | 在Mac系统环境下,使用此参数会禁止对输出内容应用颜色格式,使输出呈现为常规样式。 |
-h | 需与“-l”参数配合使用,能够将文件的大小数值转换为更便于人类阅读理解的格式,如KB、MB、GB等。 |
-H | 当文件存在符号链接时,此参数会通过符号链接的指向关系,递归地显示相关的文件信息。 |
-i | 为每个文件显示其对应的inode号,inode号是文件在文件系统中的唯一标识。 |
-I | 依据特定的文件名模式进行筛选,跳过那些与之匹配的文件,使这些文件不显示在输出结果中。 |
-l | 以详细信息的形式展示文件,涵盖文件的权限设置、链接数量、所有者信息、文件大小以及最后修改时间等多方面内容。 |
-L | 对于存在符号链接的情况,会递归地列出符号链接实际指向的文件的详细信息。 |
-m | 在输出文件信息时,采用逗号作为分隔符来间隔各个文件,这种方式比较适合输出内容相对短小的场景。 |
-n | 显示文件的UID(用户标识符)和GID(组标识符),而非通常显示的用户名和组名,以数字形式呈现文件的归属信息。 |
-N | 输出的文件名不会进行转义处理,保持文件名的原始状态进行展示。 |
-o | 与“-l”参数共同使用时,会显示文件的相关信息,但不会显示文件所属的组信息,对显示内容进行了一定的精简。 |
-p | 在目录名的后面添加“/”符号,用以清晰标识该文件为目录类型。 |
-q | 当遇到无法正常显示的字符(比如非打印字符)时,会用问号“?”来替代显示,以保证输出的完整性。 |
-Q | 将文件名用双引号包围起来进行显示,这种方式有助于明确文件名的边界,特别是对于包含特殊字符的文件名。 |
-r | 对文件的排序结果进行反向处理,若同时结合其他排序选项,最终的排序结果将按照逆序呈现。 |
-R | 递归地遍历并列出所有子目录中的文件,将整个目录结构下的文件信息完整展示出来。 |
-s | 显示每个文件所占用的磁盘块数量,反映文件在磁盘存储上的空间占用情况。 |
-S | 按照文件的大小对文件进行排序,方便用户快速找到较大或较小的文件。 |
-t | 依据文件的修改时间对文件进行排序,默认情况下,最新修改的文件会排在前面。 |
-u | 按照文件的最后访问时间对文件进行排序,能直观地反映出文件最近被访问的先后顺序。 |
-U | 若文件系统支持,会按照文件的创建时间对文件进行排序,展示文件的创建先后顺序。 |
-v | 按照自然顺序对文件进行排序,尤其适用于文件名中包含数字的情况,使排序结果更符合人类的阅读习惯。 |
-w | 可以设置输出内容的列宽,根据实际需求调整显示的布局,使输出更加美观和易读。 |
-x | 按行的顺序对文件进行排序显示,与列格式显示相对,以不同的布局展示文件信息。 |
-X | 按照文件的扩展名对文件进行排序,方便用户对同一类型的文件进行集中查看和管理。 |
-Z | 显示文件的SELinux安全上下文,提供关于文件安全属性的详细信息,用于安全管理和审计。 |
–color | 采用不同的颜色来显示不同类型的文件,通过颜色区分使文件类型更加一目了然。 |
–help | 显示该命令的帮助信息,为用户提供关于命令参数和使用方法的详细说明。 |
–time | 允许用户指定要显示的文件时间的具体类型,比如修改时间、访问时间等,满足不同的查看需求。 |
–version | 显示“ls”命令的版本信息,让用户了解当前使用的命令版本情况。 |
三、命令详情和示例
以下是 ls
命令的参数以用途+示例的说明:
ls -a
- 用途: 用于显示所有文件,包括以“.”开头的具有隐藏属性的文件。方便用户查看目录下的所有内容,不会遗漏隐藏文件。
- 示例: 假设当前目录下有一个隐藏文件
.hidden.txt
和一个普通文件normal.txt
,执行ls
命令只会显示normal.txt
,而执行ls -a
命令则会同时显示.hidden.txt
和normal.txt
。
ls -A
- 用途: 可显示所有文件,但会排除“.”和“..”这两个特殊的目录标识。当用户只想查看目录下的实际文件和子目录,而不希望看到这两个特殊标识时,可使用该参数。
- 示例: 假设当前目录下有文件
file1.txt
、file2.txt
以及子目录subdir
,还有“.”和“..”标识,执行ls -A
会显示file1.txt
、file2.txt
、subdir
,而不会显示“.”和“..”。
ls -b
- 用途: 采用八进制的方式来表示那些非可打印的字符,便于对文件内容中特殊字符的查看和分析。
- 示例: 若文件
test.txt
中包含非可打印字符,执行ls -b
时,会将这些非可打印字符以八进制形式展示在文件名或文件内容相关信息中。
ls -C
- 用途: 以列格式来显示文件信息,这是系统默认的一种文件显示格式,整齐排列文件,方便查看。
- 示例: 当目录下有多个文件
file1.txt
、file2.txt
、file3.txt
等,执行ls -C
会将这些文件以列的形式展示,比如:
file1.txt file2.txt file3.txt
ls -d
- 用途: 此参数会将目录本身作为展示对象,而不展示目录内部所包含的具体文件及子目录内容。用于查看目录属性,而不深入目录内部。
- 示例: 若有目录
mydir
,执行ls -d mydir
只会显示mydir
目录本身的信息,而不会显示mydir
内的文件和子目录。
ls -f
- 用途: 会忽略诸如“-l”“-a”等其他选项的作用,直接按照文件名的顺序对文件进行罗列显示。当用户希望快速按照文件名顺序查看文件,不被其他参数干扰时使用。
- 示例: 假设当前目录下有文件
file1.txt
、file2.txt
,同时设置了ls -l -a
这样的参数组合,执行ls -f
会忽略-l
和-a
的效果,仅按文件名顺序显示file1.txt
、file2.txt
。
ls -F
- 用途: 在每个文件名的末尾添加特定符号,以此来明确标识文件的类型。比如,用“/”标识该文件为目录,用“*”标识该文件为可执行文件,帮助用户快速识别文件类型。
- 示例: 若目录下有文件
script.sh
(可执行文件)、mydir
(目录)、file.txt
(普通文件),执行ls -F
会显示script.sh* mydir/ file.txt
。
ls -G
- 用途: 在Mac系统环境下,使用此参数会禁止对输出内容应用颜色格式,使输出呈现为常规样式。当用户不希望输出带有颜色,或者在某些不支持颜色显示的环境中使用。
- 示例: 在Mac系统中,原本执行
ls
可能会以不同颜色显示不同类型文件,执行ls -G
后,所有文件的显示将没有颜色区分。
ls -h
- 用途: 需与“-l”参数配合使用,能够将文件的大小数值转换为更便于人类阅读理解的格式,如KB、MB、GB等。方便用户直观了解文件大小。
- 示例: 若文件
bigfile
的大小为 10485760 字节,执行ls -l
可能显示为10485760
字节,而执行ls -lh
则会显示为10M
。
ls -H
- 用途: 当文件存在符号链接时,此参数会通过符号链接的指向关系,递归地显示相关的文件信息。用于查看符号链接所指向的一系列文件信息。
- 示例: 若有符号链接
symlink
指向target_file
,target_file
又有其他相关链接,执行ls -H symlink
会递归显示symlink
及所指向的一系列文件信息。
ls -i
- 用途: 为每个文件显示其对应的inode号,inode号是文件在文件系统中的唯一标识,可用于文件系统的管理和排查问题。
- 示例: 假设当前目录下有文件
file1.txt
和file2.txt
,执行ls -i
会显示类似如下内容:
其中123456 file1.txt 789012 file2.txt
123456
和789012
分别是file1.txt
和file2.txt
的 inode 号。
ls -I
- 用途: 依据特定的文件名模式进行筛选,跳过那些与之匹配的文件,使这些文件不显示在输出结果中。用于过滤掉不希望看到的文件。
- 示例: 若当前目录下有文件
file1.txt
、file2.txt
、temp_file.txt
,执行ls -I "temp_*.txt"
会跳过temp_file.txt
,只显示file1.txt
和file2.txt
。
ls -l
- 用途: 以详细信息的形式展示文件,涵盖文件的权限设置、链接数量、所有者信息、文件大小以及最后修改时间等多方面内容。全面了解文件的详细属性。
- 示例: 执行
ls -l
可能会显示类似如下内容:
-rw-r--r-- 1 user group 1024 Jan 1 10:00 file1.txt
表示文件
file1.txt
的权限为-rw-r--r--
,链接数为 1,所有者为user
,所属组为group
,大小为 1024 字节,最后修改时间为 1 月 1 日 10:00。ls -L
- 用途: 对于存在符号链接的情况,会递归地列出符号链接实际指向的文件的详细信息。深入查看符号链接所指向文件的详细内容。
- 示例: 若有符号链接
symlink
指向target_file
,执行ls -L symlink
会显示target_file
的详细信息,如权限、大小、修改时间等。
ls -m
- 用途: 在输出文件信息时,采用逗号作为分隔符来间隔各个文件,这种方式比较适合输出内容相对短小的场景,使文件列表更清晰。
- 示例: 若目录下有文件
file1.txt
、file2.txt
、file3.txt
,执行ls -m
会显示file1.txt,file2.txt,file3.txt
。
ls -n
- 用途: 显示文件的UID(用户标识符)和GID(组标识符),而非通常显示的用户名和组名,以数字形式呈现文件的归属信息。用于系统管理和查看文件的数字标识归属。
- 示例: 执行
ls -n
可能会显示类似如下内容:
其中-rw-r--r-- 1 1000 1000 1024 Jan 1 10:00 file1.txt
1000
分别是 UID 和 GID。
ls -N
- 用途: 输出的文件名不会进行转义处理,保持文件名的原始状态进行展示。对于包含特殊字符的文件名,能准确显示其原始样子。
- 示例: 若有文件名包含特殊字符如
file with space.txt
,执行ls -N
会准确显示file with space.txt
,而不是进行转义处理。
ls -o
- 用途: 与“-l”参数共同使用时,会显示文件的相关信息,但不会显示文件所属的组信息,对显示内容进行了一定的精简。当用户只关心文件的部分属性,不关注组信息时使用。
- 示例: 执行
ls -l
会显示文件的权限、链接数、所有者、组、大小、修改时间等信息,执行ls -lo
则会显示除组信息外的其他信息,如:
-rw-r--r-- 1 user 1024 Jan 1 10:00 file1.txt
ls -p
- 用途: 在目录名的后面添加“/”符号,用以清晰标识该文件为目录类型,方便用户区分目录和文件。
- 示例: 若目录下有文件
file1.txt
和目录mydir
,执行ls -p
会显示file1.txt mydir/
。
ls -q
- 用途: 当遇到无法正常显示的字符(比如非打印字符)时,会用问号“?”来替代显示,以保证输出的完整性。
- 示例: 若文件
file.txt
中包含无法正常显示的字符,执行ls -q
时,文件名或相关信息中这些字符会被显示为“?”。
ls -Q
- 用途: 将文件名用双引号包围起来进行显示,这种方式有助于明确文件名的边界,特别是对于包含特殊字符的文件名。
- 示例: 若有文件名
file with "quotes".txt
,执行ls -Q
会显示"file with \"quotes\".txt"
。
ls -r
- 用途: 对文件的排序结果进行反向处理,若同时结合其他排序选项,最终的排序结果将按照逆序呈现。用于改变文件的排序顺序。
- 示例: 若目录下有文件
file1.txt
、file2.txt
、file3.txt
,执行ls
可能按文件名顺序显示,执行ls -r
则会按逆序显示为file3.txt
、file2.txt
、file1.txt
。
ls -R
- 用途: 递归地遍历并列出所有子目录中的文件,将整个目录结构下的文件信息完整展示出来。用于查看整个目录树的文件内容。
- 示例: 若有目录
parent
下有子目录child1
和child2
,child1
下有file1.txt
,child2
下有file2.txt
,执行ls -R parent
会显示parent
目录下的内容,以及child1
和child2
子目录下的内容。
ls -s
- 用途: 显示每个文件所占用的磁盘块数量,反映文件在磁盘存储上的空间占用情况。用于了解文件的磁盘空间占用。
- 示例: 执行
ls -s
可能会显示类似如下内容:
表示2 file1.txt 4 file2.txt
file1.txt
占用 2 个磁盘块,file2.txt
占用 4 个磁盘块。
ls -S
- 用途: 按照文件的大小对文件进行排序,方便用户快速找到较大或较小的文件。
- 示例: 若目录下有文件
small_file.txt
(大小 100 字节)、big_file.txt
(大小 1000 字节),执行ls -S
会先显示big_file.txt
,再显示small_file.txt
。
ls -t
- 用途: 依据文件的修改时间对文件进行排序,默认情况下,最新修改的文件会排在前面。用于按文件修改时间查看文件顺序。
- 示例: 若有文件
file1.txt
(修改时间较早)、file2.txt
(修改时间较新),执行ls -t
会先显示file2.txt
,再显示file1.txt
。
ls -T
- 用途: 用于控制“-l”参数显示文件信息时的时间格式,可根据需求调整时间的展示样式。
- 示例: 执行
ls -l
显示的时间格式可能是默认的,执行ls -lT
可以按照设置的时间格式显示文件的修改时间等时间信息。
ls -u
- 用途: 按照文件的最后访问时间对文件进行排序,能直观地反映出文件最近被访问的先后顺序。
- 示例: 若有文件
file1.txt
(最近访问时间较早)、file2.txt
(最近访问时间较新),执行ls -u
会先显示file2.txt
,再显示file1.txt
。
ls -U
- 用途: 若文件系统支持,会按照文件的创建时间对文件进行排序,展示文件的创建先后顺序。
- 示例: 若有文件
file1.txt
(创建时间较早)、file2.txt
(创建时间较新),执行ls -U
会先显示file1.txt
,再显示file2.txt
。
ls -v
- 用途: 按照自然顺序对文件进行排序,尤其适用于文件名中包含数字的情况,使排序结果更符合人类的阅读习惯。
- 示例: 若有文件
file1.txt
、file10.txt
、file2.txt
,执行ls -v
会按照file1.txt
、file2.txt
、file10.txt
的顺序显示,而不是按字符顺序显示为file1.txt
、file10.txt
、file2.txt
。
ls -w
- 用途: 可以设置输出内容的列宽,根据实际需求调整显示的布局,使输出更加美观和易读。
- 示例: 执行
ls -w 80
可以将输出内容的列宽设置为 80 个字符,文件信息会按照这个列宽进行排列显示。
ls -x
- 用途: 按行的顺序对文件进行排序显示,与列格式显示相对,以不同的布局展示文件信息。
- 示例: 若目录下有文件
file1.txt
、file2.txt
、file3.txt
,执行ls -x
会按行显示,如:file1.txt file2.txt file3.txt
ls -X
- 用途: 按照文件的扩展名对文件进行排序,方便用户对同一类型的文件进行集中查看和管理。
- 示例: 若目录下有文件
file1.txt
、file2.jpg
、file3.txt
,执行ls -X
会先显示file1.txt
、file3.txt
,再显示file2.jpg
。
ls -Z
- 用途: 显示文件的SELinux安全上下文,提供关于文件安全属性的详细信息,用于安全管理和审计。
- 示例: 执行
ls -Z
可能会显示类似如下内容:
-rw-r--r--. 1 user group unconfined_u:object_r:user_home_t:s0 file1.txt
其中
unconfined_u:object_r:user_home_t:s0
是文件file1.txt
的 SELinux 安全上下文信息。ls --color
- 用途: 采用不同的颜色来显示不同类型的文件,通过颜色区分使文件类型更加一目了然。
- 示例: 执行
ls --color
后,目录可能以蓝色显示,可执行文件可能以绿色显示,普通文件可能以默认颜色显示等。
ls --help
- 用途: 显示该命令的帮助信息,为用户提供关于命令参数和使用方法的详细说明。
- 示例: 执行
ls --help
会在终端显示ls
命令的各种参数介绍和使用示例等帮助内容。
ls --time
- 用途: 允许用户指定要显示的文件
四、常用命令组合
ls -al
- 用途:同时显示所有文件(包括隐藏文件)以及文件的详细信息,涵盖权限、链接数、所有者、文件大小、最后修改时间等。
- 说明:
-a
用于显示所有文件,-l
用于展示详细信息,两者结合能全面展示目录下文件的全貌。 - 示例:在用户主目录下执行
ls -al
,输出样例如下:
total 80 drwxr-xr-x 6 user user 4096 Feb 15 10:00. drwxr-xr-x 10 root root 4096 Feb 10 09:30.. -rw------- 1 user user 2345 Feb 12 14:30.bash_history -rw-r--r-- 1 user user 220 Feb 10 09:30.bash_logout -rw-r--r-- 1 user user 3771 Feb 10 09:30.bashrc drwxr-xr-x 2 user user 4096 Feb 15 10:05 Documents
ls -lh
- 用途:以人类可读的方式显示文件详细信息,文件大小会以KB、MB等格式展示。
- 说明:
-l
展示详细信息,-h
配合-l
将文件大小转换为更易读的格式,方便直观了解文件大小。 - 示例:在
/usr/local
目录下执行ls -lh
,输出样例如下:
total 128M drwxr-xr-x 3 root root 4.0K Feb 15 11:00 apache-tomcat-9.0.71 -rw-r--r-- 1 root root 100M Feb 10 12:00 apache-tomcat-9.0.71.tar.gz drwxr-xr-x 5 root root 4.0K Feb 15 10:50 mysql
ls -R
- 用途:递归列出所有子目录中的文件,展示整个目录树结构下的文件信息。
- 说明:可以深入遍历指定目录及其所有子目录,将所有文件罗列出来。
- 示例:执行
ls -R /etc/apt
,输出样例如下:
/etc/apt: preferences preferences.d sources.list sources.list.d /etc/apt/preferences.d: # 这里没有文件,所以无输出 /etc/apt/sources.list.d: docker.list google-chrome.list
ls -tSr
- 用途:先按文件大小排序,再按修改时间排序,最后结果反向显示。
- 说明:
-S
按文件大小排序,-t
按修改时间排序,-r
使结果反向,这样能按从大到小、从旧到新的顺序展示文件。 - 示例:在
/var/log
目录下执行ls -tSr
,输出样例如下:
-rw-r--r-- 1 root root 10M Feb 5 10:00 old_big.log -rw-r--r-- 1 root root 5M Feb 8 14:00 middle_big.log -rw-r--r-- 1 root root 1M Feb 10 09:00 new_small.log
ls -l --color=always
- 用途:始终以彩色格式显示文件详细信息,通过颜色区分不同类型文件。
- 说明:
-l
展示详细信息,--color=always
确保无论输出环境如何,都以彩色显示,增强文件类型辨识度。 - 示例:在
/bin
目录下执行ls -l --color=always
,输出样例(这里用文字描述颜色区分,实际显示有颜色):
-rwxr-xr-x 1 root root 123456 Feb 15 10:00 [绿色]ls[正常颜色] drwxr-xr-x 2 root root 4096 Feb 15 11:00 [蓝色]systemd[正常颜色] -rw-r--r-- 1 root root 512 Feb 10 09:30 [白色]bash.bashrc[正常颜色]
ls -d -l
- 用途:显示目录本身的详细信息,而不是目录中的内容。
- 说明:
-d
指定显示目录本身,-l
展示详细信息,两者结合可获取目录自身的权限、所有者等属性。 - 示例:执行
ls -d -l /var/www
,输出样例如下:
drwxr-xr-x 3 root root 4096 Feb 15 11:00 /var/www
ls -I "*.log" -l
- 用途:显示除了以
.log
结尾的文件外的其他文件详细信息。 - 说明:
-I "*.log"
跳过所有以.log
结尾的文件,-l
展示剩余文件的详细信息。 - 示例:在
/var/log
目录下执行ls -I "*.log" -l
,输出样例如下:
total 8 drwxr-xr-x 2 root root 4096 Feb 15 10:00 archive drwxr-xr-x 2 root root 4096 Feb 15 10:05 backups
文章来源: https://study.disign.me/article/202508/14.linux-ls.md
发布时间: 2025-02-21
作者: 技术书栈编辑
- 用途:显示除了以