linux ls命令详解


ls为list的缩写,列出文件或者目录信息。ls命令的常用格式如下所示:

              [root@initroot ~]# ls [-aAdfFhilnrRSt] 文件或目录名...
              [root@initroot ~]# ls [--color={never,auto,always}] 文件或目录名...
              [root@initroot ~]# ls [--full-time] 文件或目录名...
            
可以看到,ls命令有非常多的选项和参数:
-a :列出包括隐藏文件(.开头的文件)在内的全部文件,为常用选项;
-A :列出包括隐藏文件(.开头的文件)在内的全部文件,但不包括.和..这两个目录;
-d :仅列出目录本身,而不是列出目录内的文件,该选项为常用选项;
-f :ls默认会以文件名排序,-f选项可直接列出文件而不以文件名排序;
-F :在文件名后面附加类型信息,例如:*代表可执行文件; /代表目录; =代表socket文件; |代表FIFO文件;
-h :ls默认以字节为单位显示文件大小,-h选项可以将文件大小以KB、MB、GB等用户较易读的单位方式显示;
-i :显示inode节点号,inode的意义下一章将会介绍;
-l :显示文件的详细属性信息,为常用选项;
-n :-l选项以名称的形式显示文件的所有者和所属用户组,-n可以显示文件所有者和所属用户组的ID号,即UID和GID
-r :将排序按默认排序反向输出;
-R :递归选项,连同子目录内容一起列出来,该目录下的所有文件都会显示出来;
-S :以文件容量大小排序,而不是按文件名排序;
-t :依时间排序输出,而不是按文件名排序。
--color=never :不显示颜色信息,颜色可以用来标记文件类型特性;
--color=always :显示颜色信息;
--color=auto :让系统按照默认设置自行判断是否显示颜色信息;
--full-time :显示完整时间模式,包含年、月、日、时、分;
--time={atime,ctime} :输出access时间(atime)或改变权限属性时间(ctime)而非内容变更时间(modification time)。 ls -l命令默认显示的时间是mtime,可以通过--time选项指定要显示的文件时间。--time=atime显示atime,--time=ctime显示ctime。 关于文件时间的概念可以参考:文件时间

ls选项看似很多,其实经常用的也就几个选项:-a、-l、-d、-h。 ls默认只显示文件名,文件名带有颜色信息,并且按照文件名排序。 加上-l或者-n选项就可以列出文件的详细信息了,当然我们经常用的还是-l选项了。加上-a就可以列出包括隐藏文件在内的所有文件了。 实际应用中,我们经常将-a和-l选项连在一起使用,例如:ls -al是最常用的命令形式:

              [root@initroot ~]# ls -al
              total 92
              dr-xr-x---. 10 root root  4096 Dec 17 19:52 .
              dr-xr-xr-x. 18 root root  4096 Aug  6 17:44 ..
              -rw-------   1 root root 14589 Jan  7 12:32 .bash_history
              -rw-r--r--.  1 root root    18 Dec 29  2013 .bash_logout
              -rw-r--r--   1 root root   213 Aug  6 19:16 .bash_profile
              -rw-r--r--.  1 root root   176 Dec 29  2013 .bashrc
              drwx------   3 root root  4096 Oct 15  2017 .cache
              drwx------   3 root root  4096 Aug  6 19:24 .config
              -rw-r--r--.  1 root root   100 Dec 29  2013 .cshrc
              drwxr-xr-x   3 root root  4096 Dec 17 19:52 kblogdepository
              -rw-------   1 root root  2430 Oct 30 22:32 nohup.out
              drwxr-xr-x   5 root root  4096 Nov 19 23:27 .npm
              drwxr-xr-x  29 root root  4096 Aug  6 19:32 .npminstall_tarball
              drwxr-xr-x   2 root root  4096 Oct 15  2017 .pip
              drwxr-----   3 root root  4096 Nov  2 23:09 .pki
              -rw-r--r--   1 root root    64 Oct 15  2017 .pydistutils.cfg
              drwx------   2 root root  4096 Aug  6 22:17 .ssh
              -rw-r--r--.  1 root root   129 Dec 29  2013 .tcshrc
              -rw-------   1 root root  5842 Nov 29 15:27 .viminfo
            [root@initroot ~]#
            
以上命令列出当前工作目录下的所有文件信息,输出的字段信息详细解释可参考 linux文件属性与权限

列出所有文件的详细信息,但是不显示颜色信息,并且在文件名后显示文件类型信息:
[root@initroot ~]# ls -alF --color=never
total 92
dr-xr-x---. 10 root root  4096 Dec 17 19:52 ./
dr-xr-xr-x. 18 root root  4096 Aug  6 17:44 ../
-rw-------   1 root root 14589 Jan  7 12:32 .bash_history
-rw-r--r--.  1 root root    18 Dec 29  2013 .bash_logout
-rw-r--r--   1 root root   213 Aug  6 19:16 .bash_profile
-rw-r--r--.  1 root root   176 Dec 29  2013 .bashrc
drwx------   3 root root  4096 Oct 15  2017 .cache/
drwx------   3 root root  4096 Aug  6 19:24 .config/
-rw-r--r--.  1 root root   100 Dec 29  2013 .cshrc
drwxr-xr-x   3 root root  4096 Dec 17 19:52 kblogdepository/
-rw-------   1 root root  2430 Oct 30 22:32 nohup.out
drwxr-xr-x   5 root root  4096 Nov 19 23:27 .npm/
drwxr-xr-x  29 root root  4096 Aug  6 19:32 .npminstall_tarball/
drwxr-xr-x   2 root root  4096 Oct 15  2017 .pip/
drwxr-----   3 root root  4096 Nov  2 23:09 .pki/
-rw-r--r--   1 root root    64 Oct 15  2017 .pydistutils.cfg
drwx------   2 root root  4096 Aug  6 22:17 .ssh/
-rw-r--r--.  1 root root   129 Dec 29  2013 .tcshrc
-rw-------   1 root root  5842 Nov 29 15:27 .viminfo

            
可以看到目录文件的后面加上了/,*代表可执行文件; /代表目录; =代表socket文件; |代表FIFO文件。关于文件类型的详细信息可以参考: linux文件和目录树结构
找出/etc下面不含子目录容量最大的文件:
[root@initroot ~]# ls -ldSr /etc/*
...省略...
-rw-r--r--  1 root root    10550 Jan 25  2018 /etc/login.defs
drwxr-xr-x  2 root root    12288 Oct  3 13:00 /etc/alternatives
-rw-r--r--  1 root root    12288 Jul 28  2019 /etc/aliases.db
-rw-r--r--  1 root root    12636 May 22  2018 /etc/drirc
-rw-r--r--  1 root root    14867 Oct 13  2016 /etc/ltrace.conf
-rw-r--r--  1 root root    19183 Dec 26  2016 /etc/services
-rw-r--r--  1 root root    24301 Jul 15  2016 /etc/mime.types
-rw-r--r--  1 root root    25341 Aug 29  2018 /etc/brltty.conf
-rw-r--r--  1 root root    42192 Oct 25 08:50 /etc/mailcap
-rw-r--r--  1 root root   105060 Feb  8 22:42 /etc/ld.so.cache
              
显示文件的完整时间信息:
[root@initroot ~]# ls -al --full-time
total 92
dr-xr-x---. 10 root root  4096 2019-12-17 19:52:02.249260369 +0800 .
dr-xr-xr-x. 18 root root  4096 2019-08-06 17:44:27.696855703 +0800 ..
-rw-------   1 root root 14589 2020-01-07 12:32:47.777317545 +0800 .bash_history
-rw-r--r--.  1 root root    18 2013-12-29 10:26:31.000000000 +0800 .bash_logout
-rw-r--r--   1 root root   213 2019-08-06 19:16:02.342574926 +0800 .bash_profile
-rw-r--r--.  1 root root   176 2013-12-29 10:26:31.000000000 +0800 .bashrc
drwx------   3 root root  4096 2017-10-15 23:24:07.543094665 +0800 .cache
drwx------   3 root root  4096 2019-08-06 19:24:03.275758535 +0800 .config
-rw-r--r--.  1 root root   100 2013-12-29 10:26:31.000000000 +0800 .cshrc
drwxr-xr-x   3 root root  4096 2019-12-17 19:52:31.045727535 +0800 kblogdepository
-rw-------   1 root root  2430 2019-10-30 22:32:48.557570646 +0800 nohup.out
drwxr-xr-x   5 root root  4096 2019-11-19 23:27:34.141307214 +0800 .npm
drwxr-xr-x  29 root root  4096 2019-08-06 19:32:20.167798791 +0800 .npminstall_tarball
drwxr-xr-x   2 root root  4096 2017-10-15 23:24:59.173081672 +0800 .pip
drwxr-----   3 root root  4096 2019-11-02 23:09:20.312375617 +0800 .pki
-rw-r--r--   1 root root    64 2017-10-15 23:24:59.171081785 +0800 .pydistutils.cfg
drwx------   2 root root  4096 2019-08-06 22:17:42.331936356 +0800 .ssh
-rw-r--r--.  1 root root   129 2013-12-29 10:26:31.000000000 +0800 .tcshrc
-rw-------   1 root root  5842 2019-11-29 15:27:56.136328392 +0800 .viminfo
            
可以看到完整的文件时间显示。
更多关于ls命令的选项我们就不在这里列出来,大家可以在自己的电脑上每个选项都自己动手试试。 值得注意的是,这些文件属性信息记录在哪里呢?这就是我们下一章节 linux磁盘与文件系统管理 会讲到的inode节点了。可以用-i选项显示inode节点号。
另外,很多linux发行版默认为用户提供了几个和ls命令有关的命令别名,通过alias命令可以查看系统中所有的命令别名:
[root@initroot ~]# alias
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
            
后面四个都是和ls命令相关的命令别名l、la、ll、ls,其中最常用的是ll了。
关于命令别名参考: linux命令详解

initroot编辑整理,转载请注明www.initroot.com

100次点赞 100次阅读