ls 指令 list files
ls 指令 list files
|
|
-
-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
查看文件的详细信息,ll
是ls -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
等) -
浅蓝色–>链接文件(仅指软链接,不包括硬链接)
-
灰色–> 普通文件
-
亮黄色–>设备文件
带颜色版本的解释: