Linux命令-ls

Posted by 周思进 on February 4, 2020

ls是Linux系统下很常用的一个命令,不过我平常用的都是一些很基础的选项,查看man手册,ls支持的参数选项还是挺多的,下面整理一些觉得会比较常用的选项。

ls不带选项默认显示如下:

[email protected]:/media/psf/Home/work/test/ls$ ls
dirfile  file1  file2  linkfile


-1(是数字1)

如果想一行显示一个文件,可以使用该选项,显示如下:

[email protected]:/media/psf/Home/work/test/ls$ ls -1
dirfile
file1
file2
linkfile


-a

ls命令不带任何选项参数,默认是不显示隐藏的目录文件及普通文件的(以字符’.’开头的文件),该选项可以查看到隐藏的文件

[email protected]:/media/psf/Home/work/test/ls$ ls -a
.  ..  dirfile  file1  file2  .hide  linkfile


-A
-a选项会显示’.’ ,’..’这两个目录文件,如果想显示除这两个文件外的隐藏文件,可以使用该选项

[email protected]:/media/psf/Home/work/test/ls$ ls -A
dirfile  file1  file2  .hide  linkfile


-l

该选项可以查看文件的详细信息,是一个比较常用的选项,显示如下:

[email protected]:/media/psf/Home/work/test/ls$ ls -lA
total 0
drwxr-xr-x 1 sijin sijin   64 Feb  4 11:36 dirfile
-rw-rw-r-- 1 sijin sijin    5 Feb  4 11:30 file1
-rw-rw-r-- 1 sijin sijin    9 Feb  4 11:30 file2
-rw-rw-r-- 1 sijin sijin 2048 Feb  4 11:33 .hide
lrwxr-xr-x 1 sijin sijin    5 Feb  4 11:37 linkfile -> file1

第一列显示的是文件属性,由10个字母组成,第1个字母表示的是文件类型,如目录文件则是字母’d’,普通文件就是’-‘,链接文件就是’l’
第二列显示的是文件的硬链接数
第三列和第四列显示的是文件拥有者和其所在的组
第五列显示的是文件大小,默认单位字节
第六、七、八列显示的文件最近修改时间
第九列显示的是文件名,如果是软链接,可以看到会链接到对应的文件


-h

默认文件大小以字节为单位,对于大文件几百兆、上G大小的,则没有那么直观可读,该选项可转成直观可读的大小格式

[email protected]:/media/psf/Home/work/test/ls$ ls -lhA
total 0
drwxr-xr-x 1 sijin sijin   64 Feb  4 11:36 dirfile
-rw-rw-r-- 1 sijin sijin   10 Feb  4 14:42 file1
-rw-rw-r-- 1 sijin sijin    9 Feb  4 11:30 file2
-rw-rw-r-- 1 sijin sijin 2.0K Feb  4 11:33 .hide
lrwxr-xr-x 1 sijin sijin    5 Feb  4 11:37 linkfile -> file1

需要说明这里显示的文件大小是从文件头到文件尾的长度大小,考虑空洞文件情况,并不一定是实际占用磁盘的大小。


-t

依据修改时间排序,最近修改的放前面
默认是按文件名称进行排序

[email protected]:/media/psf/Home/work/test/ls$ ls -lAt
total 0
-rw-rw-r-- 1 sijin sijin   10 Feb  4 14:42 file1
lrwxr-xr-x 1 sijin sijin    5 Feb  4 11:37 linkfile -> file1
drwxr-xr-x 1 sijin sijin   64 Feb  4 11:36 dirfile
-rw-rw-r-- 1 sijin sijin 2048 Feb  4 11:33 .hide


-u

显示的是最后访问时间
结合’-lt’选项可以根据最后访问时间排序显示

下面示例在通过vim打开访问 .hide文件不做任何修改退出后,可以看到-u选项则显示的是访问时间

[email protected]:/media/psf/Home/work/test/ls$ ls -lAt
total 0
-rw-rw-r-- 1 sijin sijin   10 Feb  4 14:42 file1
lrwxr-xr-x 1 sijin sijin    5 Feb  4 11:37 linkfile -> file1
drwxr-xr-x 1 sijin sijin   64 Feb  4 11:36 dirfile
-rw-rw-r-- 1 sijin sijin 2048 Feb  4 11:33 .hide
[email protected]:/media/psf/Home/work/test/ls$ ls -lAtu
total 0
-rw-rw-r-- 1 sijin sijin 2048 Feb  4 16:28 .hide
-rw-rw-r-- 1 sijin sijin   10 Feb  4 14:42 file1
lrwxr-xr-x 1 sijin sijin    5 Feb  4 11:37 linkfile -> file1
drwxr-xr-x 1 sijin sijin   64 Feb  4 11:36 dirfile


-c

显示的是文件状态最后改变时间
一般情况下文件的最后修改时间和状态改变时间一致,下面例子修改了一个目录的访问权限,使修改时间和状态改变时间不一致。

[email protected]:/media/psf/Home/work/test/ls$ ls -lAt
total 0
-rw-rw-r-- 1 sijin sijin   10 Feb  4 14:42 file1
lrwxr-xr-x 1 sijin sijin    5 Feb  4 11:37 linkfile -> file1
drwxr-xr-x 1 sijin sijin   64 Feb  4 11:36 dirfile
-rw-rw-r-- 1 sijin sijin 2048 Feb  4 11:33 .hide
[email protected]:/media/psf/Home/work/test/ls$ ls -lAtc
total 0
-rw-rw-r-- 1 sijin sijin   10 Feb  4 14:42 file1
lrwxr-xr-x 1 sijin sijin    5 Feb  4 11:37 linkfile -> file1
drwxr-xr-x 1 sijin sijin   64 Feb  4 11:36 dirfile
-rw-rw-r-- 1 sijin sijin 2048 Feb  4 11:33 .hide
[email protected]:/media/psf/Home/work/test/ls$ chmod 777 dirfile/
[email protected]:/media/psf/Home/work/test/ls$ ls -lAtc
total 0
drwxrwxrwx 1 sijin sijin   64 Feb  4 16:32 dirfile
-rw-rw-r-- 1 sijin sijin   10 Feb  4 14:42 file1
lrwxr-xr-x 1 sijin sijin    5 Feb  4 11:37 linkfile -> file1
-rw-rw-r-- 1 sijin sijin 2048 Feb  4 11:33 .hide
[email protected]:/media/psf/Home/work/test/ls$ ls -lAt
total 0
-rw-rw-r-- 1 sijin sijin   10 Feb  4 14:42 file1
lrwxr-xr-x 1 sijin sijin    5 Feb  4 11:37 linkfile -> file1
drwxrwxrwx 1 sijin sijin   64 Feb  4 11:36 dirfile
-rw-rw-r-- 1 sijin sijin 2048 Feb  4 11:33 .hide


-S

按文件大小排序

[email protected]:/media/psf/Home/work/test/ls$ ls -lAS
total 0
-rw-rw-r-- 1 sijin sijin 2048 Feb  4 11:33 .hide
drwxrwxrwx 1 sijin sijin   64 Feb  4 11:36 dirfile
-rw-rw-r-- 1 sijin sijin   10 Feb  4 14:42 file1
lrwxr-xr-x 1 sijin sijin    5 Feb  4 11:37 linkfile -> file1


-r

上面提到的各种排序操作,如果想反转顺序,可以使用该选项

[email protected]:/media/psf/Home/work/test/ls$ ls -lASr
total 0
lrwxr-xr-x 1 sijin sijin    5 Feb  4 11:37 linkfile -> file1
-rw-rw-r-- 1 sijin sijin   10 Feb  4 14:42 file1
drwxrwxrwx 1 sijin sijin   64 Feb  4 11:36 dirfile
-rw-rw-r-- 1 sijin sijin 2048 Feb  4 11:33 .hide


-b

将不可输出的字符以转义的形式输出 有些路径中间目录会带空格,如果直接复制使用,进行cd操作是会失败的,需要在空格前面带\,-b显示就默认带这些转义字符

[email protected]:/media/psf/Home/work/test/ls$ ls 
dirfile  file1  linkfile  中文 目录
[email protected]:/media/psf/Home/work/test/ls$ ls -b
dirfile  file1  linkfile  中文\ 目录


-i

显示文件对应的inode节点号,如果两个文件的inode号一样,则本质上是同一个数据文件,在文章Shell命令-ln链接有提到过。