Linux命令之ls(文件与目录的查看)

本文将会学到的命令

  1. ls

ls(文件与目录的查看)

ls这个命令官方提供的可选参数太多,本文就列举了一些平时比较常用的几个参数进行讲解与说明,可以在文末查看该命令的全部参数。

比较常用参数有[-aAdfFhilnrRSt]

  1. -a :全部的文件,连同隐藏文件(开头为.的文件)一起列出来
  2. -A :全部的文件,连同隐藏文件,但是不包括.和…这两个目录
  3. -d :仅列出目录本身,而不是列出目录内的文件数据
  4. -f :直接列出结果,而不进行排序(ls默认会以文件名排序)
  5. -F:根据文件、目录等信息,给予附件数据结构,例如:*:代表可执行文件;/:代表目录;=:代表socket文件;|:代表FIFO文件
  6. -h:将文件容量以人类较易读的方式(如GB,KB等)列出来
  7. -i:列出inode号码
  8. -l:详细信息显示,包含文件的属性和权限等数据
  9. -n:列出UID和GID而非使用者与用户组的名称
  10. -r:将排序结果反向输出,例如:原本文件名由小到大,反向则由大到小
  11. -R:连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来
  12. -S:以文件容量大小排序,而不是用文件名排序
  13. -t:依时间排序,而不是用文件名排序

这里需要注意的是,当在一次查询中使用多个-S -t 等排序方式时,哪个参数写在后面那个参数生效

Linux命令之ls(文件与目录的查看)

Linux命令之ls(文件与目录的查看)

Linux命令之ls(文件与目录的查看)

Linux命令之ls(文件与目录的查看)

Linux命令之ls(文件与目录的查看)

最后还有两个特殊的参数–color与–full-time

–color:颜色显示

  1. never:不要依据文件特性给予颜色显示
  2. always:显示颜色
  3. auto:让系统自行依据设置来判断是否给予颜色

Linux命令之ls(文件与目录的查看)

–full-time:以完整时间模式输出

Linux命令之ls(文件与目录的查看)

最后来看一下官方文档

man ls
LS(1)                                                    General Commands Manual                                     LS(1)
NAME
       ls, dir, vdir - 列目录内容
提要
       ls [选项] [文件名...]
       POSIX 标准选项: [-CFRacdilqrtu1]
GNU 选项 (短格式):
       [-1abcdfgiklmnopqrstuxABCDFGLNQRSUX]  [-w  cols]  [-T  cols] [-I pattern] [--full-time] [--format={long,verbose,commas,across,vertical,single-column}] [--sort={none,time,size,extension}] [--time={atime,access,use,ctime,status}] [--color[={none,auto,always}]] [--help]
       [--version] [--]
描述( DESCRIPTION )
       程序ls先列出非目录的文件项,然后是每一个目录中的“可显示”文件。如果 没有选项之外的参数【译注:即文件名部分为空】出现,缺省为 "." (当前目录)。 选项“ -d ”使得目录与非目录项同样对待。除非“ -a ” 选项出现,文 件名以“.”开始的文件不属“可显示”文件。
       以当前目录为准,每一组文件(包括非目录文件项,以及每一内含文件的目录)分 别按文件名比较顺序排序。如果“ -l ”选项存在,每组文件前显示一摘要行: 给出该组文件长度之和(以 512 字节为单位)。
       输出是到标准输出( stdout )。除非以“ -C ”选项要求按多列输出,输出 将是一行一个。然而,输出到终端时,单列输出或多列输出是不确定的。可以分别 用选项“ -1 ” 或“ -C ”来强制按单列或多列输出。
       -C     多列输出,纵向排序。
       -F     每个目录名加“ / ”后缀,每个 FIFO 名加“ | ”后缀, 每个可运行名加“ * ”后缀。
       -R     递归列出遇到的子目录。
       -a     列出所有文件,包括以 "." 开头的隐含文件。
       -c     使用“状态改变时间”代替“文件修改时间”为依据来排序 (使用“ -t ”选项时)或列出(使用“ -l ”选项时)。
       -d     将目录名象其它文件一样列出,而不是列出它们的内容。
       -i     输出文件前先输出文件系列号(即  i  节点号:  i-node  number)。  -l  列出(以单列格式)文件模式(  file  mode  ),文件的链  接数,所有者名,组名,文件大小(以字节为单位),时间信   息,及文件名。缺省时,时间信息显示最近修改时间;可以以   选项“   -c   ”和“   -u
              ”选择显示其它两种时间信息。对于设 备文件,原先显示文件大小的区域通常显示的是主要和次要的 号(majorand minor device numbers)。
       -q     将文件名中的非打印字符输出为问号。(对于到终端的输出这是缺省的。)
       -r     逆序排列。
       -t     按时间信息排序。
       -u     使用最近访问时间代替最近修改时间为依据来排序(使用 “ -t ”选项时)或列出(使用“ -l ”选项时)。
       -1 单列输出。
GNU 细节
       如果标准输出是终端,将多列输出(纵向排序)。
       dir ( 也被安装为命令 d ) 等同于“ ls -C ”;即,文件
              缺省是多列输出,纵向排序。vdir ( 也被安装为命令 v ) 等同于“ ls -l ”; 即,文件缺省是按长格式输出。
GNU 选项
       -1, --format=single-column 一行输出一个文件(单列输出)。如标准输出不是到终端, 此选项就是缺省选项。
       -a, --all
              列出目录中所有文件,包括以“.”开头的文件。
       -b, --escape
              把文件名中不可输出的字符用反斜杠加字符编号(就象在 C 语言里一样)的形式列出。
       -c, --time=ctime, --time=status
              按文件状态改变时间(i节点中的ctime)排序并输出目录内 容。如采用长格式输出(选项“-l”),使用文件的状态改 变时间取代文件修改时间。【译注:所谓文件状态改变(i节 点中以ctime标志),既包括文件被修改,又包括文件属性( 如所有者、组、链接数等等)的变化】
       -d, --directory
              将目录名象其它文件一样列出,而不是列出它们的内容。
       -f     不排序目录内容;按它们在磁盘上存储的顺序列出。同时启 动“ -a ”选项,如果在“ -f ”之前存在“ -l ”、“ - -color ”或“ -s ”,则禁止它们。
       -g 忽略,为兼容UNIX用。
       -i, --inode
              在每个文件左边打印 i 节点号(也叫文件***和索引号: file serial number and index number)。i节点号在每个特定的文件系统中是唯一的。
       -k, --kilobytes
              如列出文件大小,则以千字节KB为单位。
       -l, --format=long, --format=verbose
              除每个文件名外,增加显示文件类型、权限、硬链接数、所 有者名、组名、大小( byte )、及时间信息(如未指明是 其它时间即指修改时间)。对于6个月以上的文件或超出未来 1 小时的文件,时间信息中的时分将被年代取代。
              每个目录列出前,有一行“总块数”显示目录下全部文件所 占的磁盘空间。块默认是 1024 字节;如果设置了 POSIXLY_CORRECT 的环境变量,除非用“ -k ”选项,则默认块大小是 512 字 节。每一个硬链接都计入总块数(因此可能重复计数),这无 疑是个缺点。
       列出的权限类似于以符号表示(文件)模式的规范。但是 ls
              在每套权限的第三个字符中结合了多位(  multiple  bits  )  的信息,如下:  s  如果设置了  setuid 位或 setgid 位,而且也设置了相应的可执行位。 S 如果设置了 setuid 位或 setgid 位,但是没有设置相应的可执行位。 t 如果设置了 sticky 位,而且也设置了相应的可执行位。 T
              如果设置了 sticky 位,但是没有设置相应的可执行位。 x 如果仅仅设置了可执行位而非以上四种情况。 - 其它情况(即可执行位未设置)。
       -m, --format=commas
              水平列出文件,每行尽可能多,相互用逗号和一个空格分隔。
       -n, --numeric-uid-gid
              列出数字化的 UID 和 GID 而不是用户名和组名。
       -o     以长格式列出目录内容,但是不显示组信息。等于使用“ --format=long --no-group ”选项。提供此选项是为了与其它版本的 ls 兼容。
       -p     在每个文件名后附上一个字符以说明该文件的类型。类似“ -F ”选项但是不 标示可执行文件。
       -q, --hide-control-chars
              用问号代替文件名中非打印的字符。这是缺省选项。
       -r, --reverse
              逆序排列目录内容。
       -s, --size
              在每个文件名左侧输出该文件的大小,以 1024 字节的块为单位。如果设置了 POSIXLY_CORRECT 的环境变量,除非用“ -k ”选项,块大小是 512 字节。
       -t, --sort=time
              按文件最近修改时间( i 节点中的 mtime )而不是按文件名字典序排序,新文件 靠前。
       -u, --time=atime, --time=access, --time=use
              类似选项“ -t ”,但是用文件最近访问时间( i 节点中的 atime )取代文件修 改时间。如果使用长格式列出,打印的时间是最近访问时间。
       -w, --width cols
              假定屏幕宽度是 cols ( cols 以实际数字取代)列。如未用此选项,缺省值是这 样获得的:如可能先尝试取自终端驱动,否则尝试取自环境变量 COLUMNS (如果设 置了的话),都不行则取 80 。
       -x, --format=across, --format=horizontal
              多列输出,横向排序。
       -A, --almost-all
              显示除 "."".." 外的所有文件。
-B, --ignore-backups
              不输出以“ ~ ”结尾的备份文件,除非已经在命令行中给出。
       -C, --format=vertical
              多列输出,纵向排序。当标准输出是终端时这是缺省项。使用命令名 dir 和 d 时, 则总是缺省的。
       -D, --dired
              当采用长格式(“ -l ”选项)输出时,在主要输出后,额外打印一行: //DIRED// BEG1 END1 BEG2 END2 ...
       BEGn 和 ENDn 是无符号整数,记录每个文件名的起始、结束位置在输出中的位置(
              字节偏移量)。这使得 Emacs 易于找到文件名,即使文件名包含空格或换行等非正 常字符也无需特异的搜索。
       如果目录是递归列出的(“ -R ”选项),每个子目录后列出类似一行:
              //SUBDIRED// BEG1 END1 ...  【译注:我测试了 TurboLinux4.0 和 RedHat6.1 ,发现它们都是在 “ //DIRED// BEG1... ”之后列出“ //SUBDIRED// BEG1 ... ”,也即只有一个 而不是在每个子目录后都有。而且“ //SUBDIRED// BEG1 ... ”列出的是各个子目 录名的偏移。】
       -F, --classify, --file-type
              在每个文件名后附上一个字符以说明该文件的类型。“ * ”表示普通的可执行文件; “ / ”表示目录;“ @ ”表示符号链接;“ | ”表示FIFOs;“ = ”表示套接字 (sockets) ;什么也没有则表示普通文件。
       -G, --no-group
              以长格式列目录时不显示组信息。
       -I, --ignorepattern
              除非在命令行中给定,不要列出匹配 shell 文件名匹配式( pattern ,不是指一般 表达式)的文件。在 shell 中,文件名以 "." 起始的不与在文件名匹配式 (pattern) 开头的通配符匹配。
       -L, --dereference
              列出符号链接指向的文件的信息,而不是符号链接本身。
       -N, --literal
              不要用引号引起文件名。
       -Q, --quote-name
              用双引号引起文件名,非打印字符以 C 语言的方法表示。
       -R, --recursive
              递归列出全部目录的内容。
       -S, --sort=size
              按文件大小而不是字典序排序目录内容,大文件靠前。
       -T, --tabsize cols
              假定每个制表符宽度是 cols 。缺省为 8。为求效率, ls 可能在输出中使用制表符。 若 cols 为 0,则不使用制表符。
       -U, --sort=none
              不排序目录内容;按它们在磁盘上存储的顺序列出。(选项“ -U ”和“ -f ”的不 同是前者不启动或禁止相关的选项。)这在列很大的目录时特别有用,因为不加排序 能显著的加快速度。
       -X, --sort=extension
              按文件扩展名(由最后的 "." 之后的字符组成)的字典序排序。没有扩展名的先列 出。
       --color[=when]
              指定是否使用颜色区别文件类别。环境变量 LS_COLORS 指定使用的颜色。如何设置 这个变量见 dircolors(1) 。 when 可以被省略,或是以下几项之一:
       none 不使用颜色,这是缺省项。
              auto 仅当标准输出是终端时使用。 always 总是使用颜色。指定 --color 而且省略 when 时就等同于 --color=always 。
       --full-time
              列出完整的时间,而不是使用标准的缩写。格式如同 date(1) 的缺省格式;此格式 是不能改变的,但是你可以用 cut(1) 取出其中的日期字串并将结果送至命令 “ date -d ”。
       输出的时间包括秒是非常有用的。( Unix 文件系统储存文件的时间信息精确到秒,
              因此这个选项已经给出了系统所知的全部信息。)例如,当你有一个 Makefile 文件 不能恰当的生成文件时,这个选项会提供帮助。