Linux下ls命令使用及参数用法详细解读

一、引言

在 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 命令的参数以用途+示例的说明:

  1. ls -a

    • 用途: 用于显示所有文件,包括以“.”开头的具有隐藏属性的文件。方便用户查看目录下的所有内容,不会遗漏隐藏文件。
    • 示例: 假设当前目录下有一个隐藏文件 .hidden.txt 和一个普通文件 normal.txt,执行 ls 命令只会显示 normal.txt,而执行 ls -a 命令则会同时显示 .hidden.txtnormal.txt
  2. ls -A

    • 用途: 可显示所有文件,但会排除“.”和“..”这两个特殊的目录标识。当用户只想查看目录下的实际文件和子目录,而不希望看到这两个特殊标识时,可使用该参数。
    • 示例: 假设当前目录下有文件 file1.txtfile2.txt 以及子目录 subdir,还有“.”和“..”标识,执行 ls -A 会显示 file1.txtfile2.txtsubdir,而不会显示“.”和“..”。
  3. ls -b

    • 用途: 采用八进制的方式来表示那些非可打印的字符,便于对文件内容中特殊字符的查看和分析。
    • 示例: 若文件 test.txt 中包含非可打印字符,执行 ls -b 时,会将这些非可打印字符以八进制形式展示在文件名或文件内容相关信息中。
  4. ls -C

    • 用途: 以列格式来显示文件信息,这是系统默认的一种文件显示格式,整齐排列文件,方便查看。
    • 示例: 当目录下有多个文件 file1.txtfile2.txtfile3.txt 等,执行 ls -C 会将这些文件以列的形式展示,比如:
    file1.txt  file2.txt  file3.txt
    
  5. ls -d

    • 用途: 此参数会将目录本身作为展示对象,而不展示目录内部所包含的具体文件及子目录内容。用于查看目录属性,而不深入目录内部。
    • 示例: 若有目录 mydir,执行 ls -d mydir 只会显示 mydir 目录本身的信息,而不会显示 mydir 内的文件和子目录。
  6. ls -f

    • 用途: 会忽略诸如“-l”“-a”等其他选项的作用,直接按照文件名的顺序对文件进行罗列显示。当用户希望快速按照文件名顺序查看文件,不被其他参数干扰时使用。
    • 示例: 假设当前目录下有文件 file1.txtfile2.txt,同时设置了 ls -l -a 这样的参数组合,执行 ls -f 会忽略 -l-a 的效果,仅按文件名顺序显示 file1.txtfile2.txt
  7. ls -F

    • 用途: 在每个文件名的末尾添加特定符号,以此来明确标识文件的类型。比如,用“/”标识该文件为目录,用“*”标识该文件为可执行文件,帮助用户快速识别文件类型。
    • 示例: 若目录下有文件 script.sh(可执行文件)、mydir(目录)、file.txt(普通文件),执行 ls -F 会显示 script.sh* mydir/ file.txt
  8. ls -G

    • 用途: 在Mac系统环境下,使用此参数会禁止对输出内容应用颜色格式,使输出呈现为常规样式。当用户不希望输出带有颜色,或者在某些不支持颜色显示的环境中使用。
    • 示例: 在Mac系统中,原本执行 ls 可能会以不同颜色显示不同类型文件,执行 ls -G 后,所有文件的显示将没有颜色区分。
  9. ls -h

    • 用途: 需与“-l”参数配合使用,能够将文件的大小数值转换为更便于人类阅读理解的格式,如KB、MB、GB等。方便用户直观了解文件大小。
    • 示例: 若文件 bigfile 的大小为 10485760 字节,执行 ls -l 可能显示为 10485760 字节,而执行 ls -lh 则会显示为 10M
  10. ls -H

    • 用途: 当文件存在符号链接时,此参数会通过符号链接的指向关系,递归地显示相关的文件信息。用于查看符号链接所指向的一系列文件信息。
    • 示例: 若有符号链接 symlink 指向 target_filetarget_file 又有其他相关链接,执行 ls -H symlink 会递归显示 symlink 及所指向的一系列文件信息。
  11. ls -i

    • 用途: 为每个文件显示其对应的inode号,inode号是文件在文件系统中的唯一标识,可用于文件系统的管理和排查问题。
    • 示例: 假设当前目录下有文件 file1.txtfile2.txt,执行 ls -i 会显示类似如下内容:
      
      123456 file1.txt  789012 file2.txt
      
      其中 123456789012 分别是 file1.txtfile2.txt 的 inode 号。
  12. ls -I

    • 用途: 依据特定的文件名模式进行筛选,跳过那些与之匹配的文件,使这些文件不显示在输出结果中。用于过滤掉不希望看到的文件。
    • 示例: 若当前目录下有文件 file1.txtfile2.txttemp_file.txt,执行 ls -I "temp_*.txt" 会跳过 temp_file.txt,只显示 file1.txtfile2.txt
  13. 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。

  14. ls -L

    • 用途: 对于存在符号链接的情况,会递归地列出符号链接实际指向的文件的详细信息。深入查看符号链接所指向文件的详细内容。
    • 示例: 若有符号链接 symlink 指向 target_file,执行 ls -L symlink 会显示 target_file 的详细信息,如权限、大小、修改时间等。
  15. ls -m

    • 用途: 在输出文件信息时,采用逗号作为分隔符来间隔各个文件,这种方式比较适合输出内容相对短小的场景,使文件列表更清晰。
    • 示例: 若目录下有文件 file1.txtfile2.txtfile3.txt,执行 ls -m 会显示 file1.txt,file2.txt,file3.txt
  16. ls -n

    • 用途: 显示文件的UID(用户标识符)和GID(组标识符),而非通常显示的用户名和组名,以数字形式呈现文件的归属信息。用于系统管理和查看文件的数字标识归属。
    • 示例: 执行 ls -n 可能会显示类似如下内容:
      
      -rw-r--r--  1 1000 1000  1024 Jan  1 10:00 file1.txt
      
      其中 1000 分别是 UID 和 GID。
  17. ls -N

    • 用途: 输出的文件名不会进行转义处理,保持文件名的原始状态进行展示。对于包含特殊字符的文件名,能准确显示其原始样子。
    • 示例: 若有文件名包含特殊字符如 file with space.txt,执行 ls -N 会准确显示 file with space.txt,而不是进行转义处理。
  18. ls -o

    • 用途: 与“-l”参数共同使用时,会显示文件的相关信息,但不会显示文件所属的组信息,对显示内容进行了一定的精简。当用户只关心文件的部分属性,不关注组信息时使用。
    • 示例: 执行 ls -l 会显示文件的权限、链接数、所有者、组、大小、修改时间等信息,执行 ls -lo 则会显示除组信息外的其他信息,如:
    -rw-r--r--  1 user  1024 Jan  1 10:00 file1.txt
    
  19. ls -p

    • 用途: 在目录名的后面添加“/”符号,用以清晰标识该文件为目录类型,方便用户区分目录和文件。
    • 示例: 若目录下有文件 file1.txt 和目录 mydir,执行 ls -p 会显示 file1.txt mydir/
  20. ls -q

    • 用途: 当遇到无法正常显示的字符(比如非打印字符)时,会用问号“?”来替代显示,以保证输出的完整性。
    • 示例: 若文件 file.txt 中包含无法正常显示的字符,执行 ls -q 时,文件名或相关信息中这些字符会被显示为“?”。
  21. ls -Q

    • 用途: 将文件名用双引号包围起来进行显示,这种方式有助于明确文件名的边界,特别是对于包含特殊字符的文件名。
    • 示例: 若有文件名 file with "quotes".txt,执行 ls -Q 会显示 "file with \"quotes\".txt"
  22. ls -r

    • 用途: 对文件的排序结果进行反向处理,若同时结合其他排序选项,最终的排序结果将按照逆序呈现。用于改变文件的排序顺序。
    • 示例: 若目录下有文件 file1.txtfile2.txtfile3.txt,执行 ls 可能按文件名顺序显示,执行 ls -r 则会按逆序显示为 file3.txtfile2.txtfile1.txt
  23. ls -R

    • 用途: 递归地遍历并列出所有子目录中的文件,将整个目录结构下的文件信息完整展示出来。用于查看整个目录树的文件内容。
    • 示例: 若有目录 parent 下有子目录 child1child2child1 下有 file1.txtchild2 下有 file2.txt,执行 ls -R parent 会显示 parent 目录下的内容,以及 child1child2 子目录下的内容。
  24. ls -s

    • 用途: 显示每个文件所占用的磁盘块数量,反映文件在磁盘存储上的空间占用情况。用于了解文件的磁盘空间占用。
    • 示例: 执行 ls -s 可能会显示类似如下内容:
      
      2 file1.txt  4 file2.txt
      
      表示 file1.txt 占用 2 个磁盘块,file2.txt 占用 4 个磁盘块。
  25. ls -S

    • 用途: 按照文件的大小对文件进行排序,方便用户快速找到较大或较小的文件。
    • 示例: 若目录下有文件 small_file.txt(大小 100 字节)、big_file.txt(大小 1000 字节),执行 ls -S 会先显示 big_file.txt,再显示 small_file.txt
  26. ls -t

    • 用途: 依据文件的修改时间对文件进行排序,默认情况下,最新修改的文件会排在前面。用于按文件修改时间查看文件顺序。
    • 示例: 若有文件 file1.txt(修改时间较早)、file2.txt(修改时间较新),执行 ls -t 会先显示 file2.txt,再显示 file1.txt
  27. ls -T

    • 用途: 用于控制“-l”参数显示文件信息时的时间格式,可根据需求调整时间的展示样式。
    • 示例: 执行 ls -l 显示的时间格式可能是默认的,执行 ls -lT 可以按照设置的时间格式显示文件的修改时间等时间信息。
  28. ls -u

    • 用途: 按照文件的最后访问时间对文件进行排序,能直观地反映出文件最近被访问的先后顺序。
    • 示例: 若有文件 file1.txt(最近访问时间较早)、file2.txt(最近访问时间较新),执行 ls -u 会先显示 file2.txt,再显示 file1.txt
  29. ls -U

    • 用途: 若文件系统支持,会按照文件的创建时间对文件进行排序,展示文件的创建先后顺序。
    • 示例: 若有文件 file1.txt(创建时间较早)、file2.txt(创建时间较新),执行 ls -U 会先显示 file1.txt,再显示 file2.txt
  30. ls -v

    • 用途: 按照自然顺序对文件进行排序,尤其适用于文件名中包含数字的情况,使排序结果更符合人类的阅读习惯。
    • 示例: 若有文件 file1.txtfile10.txtfile2.txt,执行 ls -v 会按照 file1.txtfile2.txtfile10.txt 的顺序显示,而不是按字符顺序显示为 file1.txtfile10.txtfile2.txt
  31. ls -w

    • 用途: 可以设置输出内容的列宽,根据实际需求调整显示的布局,使输出更加美观和易读。
    • 示例: 执行 ls -w 80 可以将输出内容的列宽设置为 80 个字符,文件信息会按照这个列宽进行排列显示。
  32. ls -x

    • 用途: 按行的顺序对文件进行排序显示,与列格式显示相对,以不同的布局展示文件信息。
    • 示例: 若目录下有文件 file1.txtfile2.txtfile3.txt,执行 ls -x 会按行显示,如:
      
      file1.txt
      file2.txt
      file3.txt
      
  33. ls -X

    • 用途: 按照文件的扩展名对文件进行排序,方便用户对同一类型的文件进行集中查看和管理。
    • 示例: 若目录下有文件 file1.txtfile2.jpgfile3.txt,执行 ls -X 会先显示 file1.txtfile3.txt,再显示 file2.jpg
  34. 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 安全上下文信息。

  35. ls --color

    • 用途: 采用不同的颜色来显示不同类型的文件,通过颜色区分使文件类型更加一目了然。
    • 示例: 执行 ls --color 后,目录可能以蓝色显示,可执行文件可能以绿色显示,普通文件可能以默认颜色显示等。
  36. ls --help

    • 用途: 显示该命令的帮助信息,为用户提供关于命令参数和使用方法的详细说明。
    • 示例: 执行 ls --help 会在终端显示 ls 命令的各种参数介绍和使用示例等帮助内容。
  37. ls --time

    • 用途: 允许用户指定要显示的文件

四、常用命令组合

  1. 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
    
  2. 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
    
  3. 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
    
  4. 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
    
  5. 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[正常颜色]
    
  6. ls -d -l

    • 用途:显示目录本身的详细信息,而不是目录中的内容。
    • 说明-d指定显示目录本身,-l展示详细信息,两者结合可获取目录自身的权限、所有者等属性。
    • 示例:执行ls -d -l /var/www,输出样例如下:
    drwxr-xr-x 3 root root 4096 Feb 15 11:00 /var/www
    
  7. 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

    作者: 技术书栈编辑