每天一个Linux命令--(1):ls命令
ls:
ls 指令是Linux下最常用的指令之一。ls命令就是list的缩写,缺省下ls用来打印出当前目录的清单,如果ls指定其他目录,那么就会显示指定目录里的文件及文件夹清单。 通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。ls 命令在日常的linux操作中用的很多!
1.格式:
ls [选项] [目录名]
2.功能:
列出当前目录或目标目录中所有的子目录和文件
3.常用参数:
-
-a , -all 列出目录下的所有文件,包括以 . 开头的隐含文件
-
-A 同 -a,但是不列出 .(表示当前目录)和 . . (表示当前目录的父目录)
-
-c
-
配合 -lt:根据 ctime 排序及显示 ctime (文件状态最后更改的时间)
-
配合 -l:显示 ctime 但根据名称排序否则:根据 ctime 排序
-
-C 每栏由上至下列出项目
-
- - color [=WHEN] 控制是否使用色彩分辨文件。WHEN 可以是neve、always或auto其中之一
-
-d - -directory 将目录象文件一样显示,而不是显示其下的文件。
-
-f 对输出的文件不进行排序,-aU 选项生效,-lst 选项失效
-
-F 目录于名称后加"/", 可执行档于名称后加"*" ,引用后面加@
-
--classify
append indicator (one of */=>@|) to entries -
--file-type
likewise, except do not append `*’ -
--format=WORD
across -x, commas -m, horizontal -x, long -l,single-column -1, verbose -l, vertical -C
-
-
-g 类似 -l,但不列出"所有者(用户)"
-
-G,
--no-group
不列出任何有关组的信息 -
-h,
--human-readable
以容易理解的格式列出文件大小 (例如 1K 234M 2G)
[weblogic@web-mod project]$ ll
total 6400
-rw-r--r-- 1 weblogic weblogic 6531699 May 16 09:21 apache-tomcat-apache-tomcat-6.0.33.tar.gz
-rw-rw-r-- 1 weblogic weblogic 488 Jun 6 17:00 newname.md
drwxr-xr-x 9 weblogic weblogic 4096 May 16 10:55 tomcat
[weblogic@web-mod project]$ ll -h
total 6.3M
-rw-r--r-- 1 weblogic weblogic 6.3M May 16 09:21 apache-tomcat-apache-tomcat-6.0.33.tar.gz
-rw-rw-r-- 1 weblogic weblogic 488 Jun 6 17:00 newname.md
drwxr-xr-x 9 weblogic weblogic 4.0K May 16 10:55 tomcat
-
--si
类似 -h,但文件大小取 1000 的次方而不是 1024 -
-H,
--dereference-command-line
使用命令列中的符号链接指示的真正目的地 -
--indicator-style=
方式 指定在每个项目名称后加上指示符号<方式>:none (默认),classify (-F),file-type (-p) -
-i,
--inode
印出每个文件的 inode 号 [1]
-
-I,
--ignore=
样式 不印出任何符合 shell 万用字符<样式>的项目 -
-k 即 –block-size=1K,以 k 字节的形式表示文件的大小。
[weblogic@web-mod project]$ ls -l
total 6400
-rw-r--r-- 1 weblogic weblogic 6531699 May 16 09:21 apache-tomcat-apache-tomcat-6.0.33.tar.gz
-rw-rw-r-- 1 weblogic weblogic 488 Jun 6 17:00 newname.md
drwxr-xr-x 9 weblogic weblogic 4096 May 16 10:55 tomcat
[weblogic@web-mod project]$ ls -lk
total 6400
-rw-r--r-- 1 weblogic weblogic 6379 May 16 09:21 apache-tomcat-apache-tomcat-6.0.33.tar.gz
-rw-rw-r-- 1 weblogic weblogic 1 Jun 6 17:00 newname.md
drwxr-xr-x 9 weblogic weblogic 4 May 16 10:55 tomcat
-
-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。
-
-L,
--dereference
当显示符号链接的文件信息时,显示符号链接所指示的对象而并非符号链接本身的信息
[tomcat@web-mod ~]$ ll
total 129332
drwxrwxr-x 5 tomcat tomcat 4096 Jun 11 2014 log
lrwxrwxrwx 1 tomcat tomcat 18 Apr 16 2014 tomcat -> /usr/local/tomcat/
[tomcat@web-mod ~]$ ll -L
total 129336
drwxrwxr-x 5 tomcat tomcat 4096 Jun 11 2014 log
drwxr-xr-x 9 tomcat tomcat 4096 Apr 16 2014 tomcat
-
-m 所有项目以逗号分隔,并填满整行行宽
-
-o 类似 -l,显示文件的除组信息外的详细信息。
-
-r, –reverse 依相反次序排列
-
-R,
--recursive
同时列出所有子目录层 (这个好用) -
-s,
--size
以块大小为单位列出所有文件的大小 -
-S 根据文件大小排序
-
```–sort=WORD`` 以下是可选用的 WORD 和它们代表的相应选项:
-
extension -X status -c
-
none -U time -t
-
size -S atime -u
-
time -t access -u
-
version -v use -u
-
-
-
-t 以文件修改时间排序
-
-u
-
配合 -lt:显示访问时间而且依访问时间排序
-
配合 -l:显示访问时间但根据名称排序
-
否则:根据访问时间排序
-
-
-U 不进行排序;依文件系统原有的次序列出项目
-
-v 根据版本进行排序 (不太明白什么版本)
-
-w,
--width=COLS
自行指定屏幕宽度而不使用目前的数值 -
-x 逐行列出项目而不是逐栏列出
-
-X 根据扩展名排序
-
-1 每行只列出一个文件
SELinux options :
-
--help
显示此帮助信息并离开 -
--version
显示版本信息并离开 -
--lcontext
显示安全上下文。启用-l
,对于大多数显示线可能会太宽。
[tomcat@web-mod ~]$ ls
log MobileWallet_WebService.zip mobilewallet.zip tomcat
[tomcat@web-mod ~]$ ls --lcontext
total 129332
drwxrwxr-x 5 user_u:object_r:user_home_t:s0 tomcat tomcat 4096 Jun 11 2014 log
-rw-r--r-- 1 user_u:object_r:user_home_t:s0 tomcat tomcat 73417912 Jun 11 2014 MobileWallet_WebService.zip
-rw-r--r-- 1 user_u:object_r:user_home_t:s0 tomcat tomcat 58839406 Jun 11 2014 mobilewallet.zip
lrwxrwxrwx 1 user_u:object_r:user_home_t:s0 tomcat tomcat 18 Apr 16 2014 tomcat -> /usr/local/tomcat/
-
-Z
--context
适合大部分的显示器显示安全上下文。只显示模式、用户、组、安全上下文和文件名。 -
--scontext
只显示安全上下文和文件名
4.常用范例:
-
例一:列出 /home/tomcat 文件夹下的所有文件和目录的详细资料
命令:ls -l -R /home/tomcat
命令:ls -lR /home/tomcat
ls:命令关键字,-l -R:参数,/home/tomcat:命令操作对象
参数可以选用多个组合使用。
如果在home目录下 可以写成ls -lR tomcat
如果不在home目录下,需要给出操作对象的完整路径 -
例二:列出当前目录中所有以“t”开头的目录的详细内容,可以使用如下命令:
命令:ls -l t*
可以查看当前目录下文件名以“t”开头的所有文件的信息。其实,在命令格式中,方括号内的内容都是可以省略的,对于命令ls而言,如果省略命令参数和操作对象,直接输入“ ls ”,则将会列出当前工作目录的内容清单。 -
例三:只列出文件下的子目录,例如列出 home/tomcat 下的子目录
命令:ls -F /home/tomcat | grep /$
(这里不加$也可以)
输入:
[tomcat@web-mod ~]$ ls #查看所有
log MobileWallet_WebService.zip mobilewallet.zip samsungkey tomcat
[tomcat@web-mod ~]$ ls -F /home/tomcat | grep /$ #列出 home/tomcat 下的子目录
log/
samsungkey/
列出 /home/tomcat 文件下面的子目录详细情况
命令:ls -l /home/tomcat | grep "^d"
(刚学习,"^d",这个还不是特别的明白)
[tomcat@web-mod ~]$ ls -l /home/tomcat | grep "^d"
drwxrwxr-x 5 tomcat tomcat 4096 Jun 11 2014 log
drwxrwxr-x 2 weblogic weblogic 4096 Jun 11 2014 samsungkey
-
列出目前工作目录下所有名称是w 开头的档案,愈新的排愈后面,可以使用如下命令:
命令:ls -ltr w*
结果:
[tomcat@web-mod tomcat]$ ll
total 136
drwxr-xr-x 2 tomcat tomcat 4096 Jun 11 2014 bin
drwxr-xr-x 2 tomcat tomcat 4096 Jun 26 2014 conf
drwxr-xr-x 2 tomcat tomcat 4096 Apr 16 2014 lib
-rw-r--r-- 1 tomcat tomcat 37951 Aug 16 2011 LICENSE
drwxr-xr-x 2 tomcat tomcat 4096 Jun 27 2014 logs
-rw-r--r-- 1 tomcat tomcat 558 Aug 16 2011 NOTICE
-rw-r--r-- 1 tomcat tomcat 8676 Aug 16 2011 RELEASE-NOTES
-rw-r--r-- 1 tomcat tomcat 6670 Aug 16 2011 RUNNING.txt
drwxr-xr-x 2 tomcat tomcat 4096 Apr 16 2014 temp
drwxr-xr-x 3 tomcat tomcat 4096 Jun 26 2014 webapps
drwxr-xr-x 3 tomcat tomcat 4096 Jun 11 2014 work
[tomcat@web-mod tomcat]$ ls -ltr w* #命令在这里
work:
total 8
drwxrwxr-x 3 tomcat tomcat 4096 Jun 11 2014 Catalina
webapps:
total 8
drwxr-xr-x 4 tomcat tomcat 4096 Jun 26 2014 mobilewallet
-
例五:列出目前工作目录下所有档案及目录;目录于名称后加"/", 可执行档于名称后加 " * "
命令:ls -F
输出:
[tomcat@web-mod tomcat]$ ls -F
bin/ conf/ lib/ LICENSE logs/ NOTICE RELEASE-NOTES RUNNING.txt temp/ webapps/ work/
-
例六:计算当前目录下的文件数和目录数
命令:ls -l | grep "^d"|wc -l
--目录个数ls -l | grep "^-"|wc -l
--文件个数 -
例七:在ls中列出文件的绝对路径
命令:ls | sed "s:^:`pwd`/:"
结果:
[tomcat@web-mod tomcat]$ ls | sed "s:^:`pwd`/:"
/home/tomcat/tomcat/bin
/home/tomcat/tomcat/conf
/home/tomcat/tomcat/lib
/home/tomcat/tomcat/LICENSE
/home/tomcat/tomcat/logs
/home/tomcat/tomcat/NOTICE
/home/tomcat/tomcat/RELEASE-NOTES
/home/tomcat/tomcat/RUNNING.txt
/home/tomcat/tomcat/temp
/home/tomcat/tomcat/webapps
/home/tomcat/tomcat/work
-
例八:列出当前目录下的所有文件(包括隐藏文件)的绝对路径, 对目录不做递归
命令:find $PWD -maxdepth 1 | xargs ls -ld
输出:
[tomcat@web-mod tomcat]$ find $PWD -maxdepth 1 | xargs ls -ld #命令
drwxr-xr-x 9 tomcat tomcat 4096 Apr 16 2014 /usr/local/tomcat
drwxr-xr-x 2 tomcat tomcat 4096 Jun 11 2014 /usr/local/tomcat/bin
drwxr-xr-x 2 tomcat tomcat 4096 Jun 26 2014 /usr/local/tomcat/conf
drwxr-xr-x 2 tomcat tomcat 4096 Apr 16 2014 /usr/local/tomcat/lib
-rw-r--r-- 1 tomcat tomcat 37951 Aug 16 2011 /usr/local/tomcat/LICENSE
drwxr-xr-x 2 tomcat tomcat 4096 Jun 27 2014 /usr/local/tomcat/logs
-rw-r--r-- 1 tomcat tomcat 558 Aug 16 2011 /usr/local/tomcat/NOTICE
-rw-r--r-- 1 tomcat tomcat 8676 Aug 16 2011 /usr/local/tomcat/RELEASE-NOTES
-rw-r--r-- 1 tomcat tomcat 6670 Aug 16 2011 /usr/local/tomcat/RUNNING.txt
drwxr-xr-x 2 tomcat tomcat 4096 Apr 16 2014 /usr/local/tomcat/temp
drwxr-xr-x 3 tomcat tomcat 4096 Jun 26 2014 /usr/local/tomcat/webapps
drwxr-xr-x 3 tomcat tomcat 4096 Jun 11 2014 /usr/local/tomcat/work
在测试的时候遇到一个问题:
如果当前目录是对其他目录的引用链接那么使用以上命令就会出现一下问题。
[tomcat@web-mod ~]$ ll
lrwxrwxrwx 1 tomcat tomcat 18 Apr 16 2014 tomcat -> /usr/local/tomcat/ #当前目录的位置
[tomcat@web-mod tomcat]$ find $PWD -maxdepth 1 | xargs ls -ld
lrwxrwxrwx 1 tomcat tomcat 18 Apr 16 2014 /home/tomcat/tomcat -> /usr/local/tomcat/
-
例九:递归列出当前目录下的所有文件(包括隐藏文件)
命令:find $PWD | xargs ls -ld
这个会递归所有的文件 -
例十:指定文件时间输出格式
命令:ls -tl --time-style=full-iso
命令:ls -tl --time-style=long-iso
输出:
[tomcat@web-mod tomcat]$ ls -tl --time-style=full-iso
total 136
drwxr-xr-x 2 tomcat tomcat 4096 2014-06-27 00:00:58.000000000 +0800 logs
drwxr-xr-x 2 tomcat tomcat 4096 2014-06-26 22:47:58.000000000 +0800 conf
[tomcat@web-mod tomcat]$ ls -tl --time-style=long-iso
total 136
drwxr-xr-x 2 tomcat tomcat 4096 2014-06-27 00:00 logs
drwxr-xr-x 2 tomcat tomcat 4096 2014-06-26 22:47 conf
扩展:
打开/etc/bashrc, 加入如下一行:alias ls="ls --color"
下次启动bash时就可以像在Slackware里那样显示彩色的目录列表了, 其中颜色的含义如下:
-
蓝色–>目录
-
绿色–>可执行文件
-
红色–>压缩文件
-
浅蓝色–>链接文件
-
灰色–>其他文件
注:
ls作为linux的原始命令,是没有颜色之说的,不过现在多数环境下的ls都是包装过的,用ls时,都会有颜色区分。至于你说的-color,是错误的写法,应该是–color,color有三个取值{never, auto, always},也可以省略,如:ls --color=always。linux中参数有用’-‘和’–'的,前者一般用的一个字符,后者接全称,所以是–color,而不是-color.
我平时一般都使用ll
来解决所有的问题
本文参考博客:参考地址
-
储存文件元信息的区域就叫做inode,中文译名为"索引节点",每个inode都有一个号码,操作系统用inode号码来识别不同的文件。详情看文章:Linux的inode的理解 ↩