ls命令实战

时间:2023-02-26 07:57:05

1. ls命令的介绍

1.1 ls命令的介绍

ls是最常被使用到的Linux命令之一,来自于英文单词list的缩写,也正如list单词的英文意思,其功能是列举出指定目录下的文件名称及其属性。

学习过程中,每一个单词都值得记住,比如list,通过专业累计本专业的英语单词算一个捷径吧。

list [美 /lɪst] 列表,目录,清单。

ls命令就是list的缩写,列出当前或指定目录位置的文件。

默认不加参数的情况下,ls命令会列出当前工作目录中的文件信息,经常与cd和pwd命令搭配使用。

当然带上参数后,我们则可以做更多的事情,作为最基础、最频繁使用的命令,有必要仔细了解下其常用功能。

1.2 常用参数

常用参数我们可以使用 --help来查看

基本的语法为: ls --help

这样查出来的参数比较多,我们选择几个常见的参数来做成表格:

ls命令实战

在 --hlep中我们看到的都是英文,但表格中是我们翻译过来的汉语,如果你喜欢英文的描述可以参看下面的几个参数 :

-d, --directory list directories themselves, not their contents

-h, --human-readable 与-l 一起,以易于阅读的格式输出文件大小

-n, --numeric-uid-gid 类似 -l,但列出UID 及GID 号

-r, --reverse 逆序排列

2. 命令参数案例

2.1 输出当前目录中的文件(默认不含隐藏文件)

默认不含隐藏文件,所以此时不需要加任何参数,直接使用ls命令。

[root@master-21 ~]# ls
anaconda-ks.cfg dir1.bak dir3 dir5 docker-ce.repo.bak
dir1 dir2 dir4 docker-ce.repo ks.cfg

隐藏文件指的是以. 开头的文件, 可以看到上述代码中并没有隐藏文件。如果我要输出隐藏文件该如何设置呢?

2.2 输出当前目录中的文件(含隐藏文件)

当要包含隐藏文件的时候需要加 -a参数。

代码如下:

[root@master-21 ~]# ls -a
. .cshrc docker-ce.repo .tcshrc
.. dir1 docker-ce.repo.bak .viminfo
anaconda-ks.cfg dir1.bak ks.cfg .vnc
.bash_history dir2 .mysql_history .xauthgDXgko
.bash_logout dir3 .pki .Xauthority
.bash_profile dir4 .rediscli_history
.bashrc dir5 .ssh

加了-a参数后,会显示所有的隐藏文件,如果你想创建隐藏文件,也需要使用. 开头,比如touch .a.txt 这样就创建了一个a.txt的隐藏文件

2.3 输出文件的长格式,包含属性详情信息

长格式我们需要使用 -l参数,这里l是L的小写字母,避免写错。

代码如下:

[root@master-21 ~]# ls -l
总用量 16
-rw-------. 1 root root 1352 8月 16 23:00 anaconda-ks.cfg
drwxr-xr-x 2 root root 6 11月 30 19:17 dir1
drwxr-xr-x 2 root root 6 12月 5 23:03 dir1.bak
drwx------ 2 root root 6 11月 30 19:17 dir2

与不加-l相比,多了文件类型,权限以及所有者,所有组等等信息。

2.4 输出指定目录中的文件列表

输出指定目录中的文件列表,需要跟上指定的目录目录。 当我们想要判断一个目录中有没有文件,或者不想登陆目录直接查看目录中的文件内容,就可以使用这种方式。

[root@master-21 ~]# ls /var/lib
alternatives games misc os-prober rpm-state unbound
authconfig gssproxy mysql Pegasus rsyslog virt-who

当然这里也可以显示格式,直接加上 -l即可。

2. 5.输出文件名称及inode属性块号码:

输出inode号码,需要使用-i参数, 我们常说,系统识别的不是文件名而是inode, 文件名存在于目录中,而inode是在文件中的stat信息里。

[root@master-21 ~]# ls -i /var/lib
16786291 alternatives 17052462 machines 55578998 rpcbind
50727424 authconfig 19208 misc 16777291 rpm

如果文件被删除,也通常是释放了inode号,而非真正把数据删除了。

2. 6. 搭配通配符一起使用,输出指定目录中所有以sd开头的文件名称

通配符的使用方法比较多,* 表示匹配所有,有时候我们忘记了sd文件后面的内容,或者想查找sd开头的文件,就可以使用通配符。

[root@master-21 ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdb1

可以看到,当我们使用了*之后,所有的sd开头的文件就全部出来了

2. 7. 依据文件大小进行排序,输出指定目录中文件属性详情信息

S 参数,是从大到小排序, 我们想对文件进行排序,而且是安装从大到小的循序排列,就可以使用S。

[root@master-21 ~]# ls -Sl /var/lib
总用量 8
drwxr-x--x 7 mysql mysql 4096 12月 5 10:20 mysql
drwxr-xr-x. 2 root root 4096 12月 5 10:21 rpm
drwx------. 2 root root 234 12月 5 10:20 NetworkManager

......省略部分输出......

如果反过来,我们要安装从小到大排序改怎么做呢?

这里有个-r参数: -r, --reverse 逆序排列

所以就可以改成:

​[root@mufenggrow ~]# ls -Slr​

如果这样的排序文件大小看着不舒服,也可以加一个h参数,让文件大小的显示更人性化一点:

ls命令实战

3. ls -l 参数输出的信息解读

3.1 图示

我们可以看到,ls -l 会输出一个长格式,这个长格式中,包含了文件字符类型,权限,所有者,所有组,创建时间,文件名等,如下图:

-rw-------. 1 root root 1680 9月  19 12:16 anaconda-ks.cfg
-rw-r--r--. 1 root root 1728 9月 19 12:55 initial-setup-ks.cfg

3.2 文件类型举例

第一个字符文件类型中:
d:目录文件 directory
l: 链接文件
b:块设备文件
c:字符设备文件
p:管道文件
-:  表示普通文件

3.3 通过颜色来判断文件类型

inux系统中不同的颜色代表了不同的文件类型,但我们只能做为参考,不能作为判断的依据

颜色代表的内容如下:

ls命令实战

如果想要判断一个文件的类型,通常我们会用ls -l 来判断,除此之外,我们也可以用file来判断 文件类型:

file后面直接跟文件名即可:

[root@mufenggrow ~]# touch a.txt
[root@mufenggrow ~]# file a.txt
a.txt: empty

关于file命令更详细的介绍,我们将在后面的文章中展开。 本文主要介绍ls命令。

总结

ls命令的使用比较频繁,各种参数比较多,还是得下功夫记熟, 尤其是排序参数容易混淆。