ls 指令 list files

警告
本文最后更新于 2023-10-22,文中内容可能已过时。

ls 指令 list files

1
ls [选项] [目录或是文件...]
  • -a 显示所有文件及目录 ( . 开头的隐藏文件也会列出)

  • -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出,ls -l 可直接用 ll代替

  • -h 一般和 -l 一起使用:-lh 能够更以更友好的方式显示文件大小

  • -r 将文件以相反次序显示 (原定依英文字母次序)

  • -t:将文件依建立时间之先后次序列出(按照创建时间倒叙排列,越晚创建的越在前面)

  • -A-a ,但不列出 .(目前目录) 及 ..(父目录)

  • -F:在列出的文件名称后加一符号;*:表示可执行的普通文件;/:表示目录;@:表示符号链接;|:表示 FIFOs;=:表示套接字 (sockets)。

  • -R 若目录下有文件,则以下之文件亦皆依序列出

常用参数 -a -l -h -F -R


[目录或是文件...]部分的解析:

命令中...的意思是可以有多个,后文中的每个命令都适用,一般情况下,大多数的命令都默认支持多个参数,即批量操作

ls 默认输出当前路径下的文件和目录,如果为空即指当前目录

如果后面跟了指定的目录(可以有多个),则输出指定目录中的文件,注意,目录参数可以包含通配符,ls 会输出所有匹配目录下的文件

如果后面跟的是文件(可以有多个),则输出制定的文件名。

在查看此目录下是否有这个文件的时候会这么干,

除此之外,一般也会用通配符,会输出当前目录下所有名称匹配的文件,比如ls -a *abc*

如果想要递归所有的子目录查询名称匹配的文件或文件夹,ls 做不到这一点,得用 find 命令,比如find . -name '*abc*'

关于 find 命令,请查看《find 指令》


我们通常用ls -l查看文件的详细信息,llls -l的别名(alias)。通过alias命令查看:

关于alias命令,请看《alias 别名》

ll或者ls -l的输出结果:

下面来分析输出内容

第一列是文件类型 + 权限属性

第一个字母是文件类型:

  • “-“表示普通文件;

  • “d"表示目录;

  • “l"表示链接文件;(仅指软链接,不包括硬链接)

  • “p"表示管理文件;

  • “b"表示块设备文件;比如硬盘,在 /dev 目录下可以看到这个类型的文件

  • sda 就是我们一开始设置的硬盘分区

  • “c"表示字符设备文件;比如鼠标,键盘,在 /dev 目录下可以看到很多这个类型的文件,/dev下几乎都是 c 类型的文件

  • “s"表示套接字文件;

后面 9 个字母三个为一段,分别对应 owner(所有者)、group(文件所在的组的其他用户)、others(其他组的用户)的权限。在chmod命令的参数中,ower 的权限使用 u 表示,u 为单词 user 的缩写,估计是为了跟 other 区分开,group 的权限用 g 表示,others 的权限用 o 表示:

  • r(Read,读取权限):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。即可ls

  • w(Write,写入权限):对文件而言,具有新增文件内容、修改文件内容的权限,但是没有删除文件的权限;对目录来说,有删除(rm -r)文件夹的权限(不需要看用户在此文件夹所在文件夹的权限),具有重命名和移动修改文件夹(mv)的权限,具有创建、删除(rm)、重命名或移动目录内文件(mv)的权限。(所以删除文件,看的是用户在文件所处文件夹的权限

  • x(eXecute,执行权限):对文件而言,具有执行文件的权限;对目录来说,该用户具有进入目录的权限。即cd。当一个用户只有 x 权限没有 r 权限的时候,就会很奇妙,你可以cd进这个文件夹,但是没有权限看内容(执行ls报错),

还有两个不常见的权限:

  • s 或 S(SUID,Set UID):可执行的文件搭配这个权限,便能得到特权,执行此文件的时候,操作者就会暂时变成该文件的所有者,能任意存取该文件的所有者能使用的全部系统资源,设想 root 创建的文件开了这个权限,会有什么后果:执行这个文件的操作者就会短暂获取 root 权限。请注意具备 SUID 权限的文件,黑客经常利用这种权限,以 SUID 配上 root 帐号拥有者,无声无息地在系统中开扇后门,供日后进出使用。others 无法开启 s 权限,group 可以开启,开启之后文件名会有一个淡黄色的底色,owner 可以开启,开启之后会有一个红色的底色。

  • t 或 T(Sticky):/tmp/var/tmp目录供所有用户暂时存取文件,亦即每位用户皆拥有完整的权限进入该目录,去浏览、删除和移动文件。这到底是个什么权限?TODO

第二列是目录/链接个数

对于目录文件,表示它的第一级子目录的个数。注意此处看到的值要减 2 才等于该目录下的子目录的实际个数。因为要加上.目录和..目录。在 linux 下,.目录表示当前目录,..目录表示上一级目录。

对于其他文件,表示指向它的链接(仅仅包含硬链接,不包含软链接)文件的个数。

第三列第四列表示文件的所有者和文件所在的组,

第五列表示文件或者文件夹大小

如果是文件,则表示该文件的大小,单位为字节。

如果是目录,则表示该目录符所占的大小,并不表示该目录下所有文件的大小。

第六列表示文件最后的修改日期

第七列表示文件名称

其中文件名的颜色也值得一说,

  • 蓝色–>目录

  • 绿色–>可执行文件(有 x 权限)

  • 红色–>压缩文件(后缀为.zip.gz等)

  • 浅蓝色–>链接文件(仅指软链接,不包括硬链接)

  • 灰色–> 普通文件

  • 亮黄色–>设备文件

带颜色版本的解释:

0%