您的位置:首页 > 运维架构 > Linux

ls命令详解

2016-10-08 21:19 190 查看
沟通交流共同学习可加QQ:2206208995 QQ群: 392081935 微信号:ITYWJK 微信公众号:IT运维极客
座右铭:通过共享学习,走过一个从SB到NB的蜕变之路

ls命令是linux下最常用的命令。ls命令就是list的缩写,缺省下ls用来打印出当前目录的清单,如果ls指定其他目录,那么就会显示指定目录里的文件及文件夹清单。

ls 命令格式:ls [选项] [目录名]
ls 命令的参数选项说明:
-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-A 显示除 “.”和“..”外的所有文件。
-b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出。
-c 输出文件的 i 节点的修改时间,并以此排序。
-d 将目录象文件一样显示,而不是显示其下的文件。
-e 输出时间的全部信息,而不是输出简略信息。
-f -U 对输出的文件不排序。
-h 做单位转换(默认为k),以人们容易标示的单位显示;不加h为bit
-i 输出文件的 i 节点的索引信息,每个文件都有一个数字标示符,Inode = Index Node,即文件的节点,也叫索引节点
-k 以 k 字节的形式表示文件的大小。
-l 列出文件的详细信息。
-m 横向输出文件名,并以“,”作分格符。
-n 用数字的 UID,GID 代替名称。
-o 显示文件的除组信息外的详细信息。
-p -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。
-q 用?代替不可输出的字符。
-r 对目录反向排序。
-R 列出所有子目录下的文件。
-s 在每个文件名后输出该文件的大小。
-t 以时间排序。
-u 以文件上次被访问的时间排序。
-x 按列输出,横向排序。
-B 不输出以 “~”结尾的备份文件。
-C 按列输出,纵向排序。
-G 输出文件的组的信息。
-L 列出链接文件名而不是链接到的文件。
-N 不限制文件长度。
-Q 把输出的文件名用双引号括起来。
-S 以文件大小排序。
-X 以文件的扩展名(最后一个 . 后的字符)排序。
-1 一行只输出一个文件。
–color=no 不显示彩色文件名
–help 在标准输出上显示帮助信息。
–version 在标准输出上输出版本信息并退出。
例:
ls显示文件信息的说明:
[root@]# ls -lhta
drwxr-xr-x 2 mailbackup mailbackup 24K Oct 23 02:02 qumailxxx
第1字段: 文件属性字段
第一个字母d意味着内容是目录或者文件。如果是'-'(减号),这意味着它的内容是文件。当它是l(小写l字符),意味这内容是链接文件。

文件类型:

-:普通文件 (f)
d: 目录文件
b: 块设备文件 (block)
c: 字符设备文件 (character)
l: 符号链接文件(symbolic link file)
p: 命令管道文件(pipe)
s: 套接字文件(socket)
下面的9个字符是关于文件权限。前3个rwx字符是文件的拥有者的权限,第二组3rwx是文件的所有组的权限,最后的rwx是对其他人访问文件的权限。

文件权限:r:可用,可以用cat、more等

w:可写,可编辑于删除
x:提交内核执行
文件权限:r:可以是用ls列出内部所有文件
w:在目录创建文件
x:可以用cd切换,用ls -l查看。
用户:UID:/etc/passwd
组:GID:/etc/group
密码:/etc/shadow
组:/etc/gshadow
第2字段:文件硬链接数或目录子目录数
第3字段:文件拥有者
第4字段:文件拥有者所在的组
第5字段:文件文件大小(以字节为单位)
第6字段:文件创建月份
第7字段:文件创建日期
第8字段:文件创建时间
第9字段:文件名 (如果是一个符号链接,那么会有一个 “->” 箭头符号,后面跟一个它指向的文件)
只列出子目录
ls -F | grep /$
ls -l | grep “^d”|awk ‘{print $9}’ (常用)
显示彩色目录列表
打开/etc/bashrc, 加入如下一行:
alias ls ="ls -color"
下次启动bash时就可以像在Slackware里那样显示彩色的目录列表了, 其中颜色的含义如下:
1. 蓝色–>目录
2. 绿色–>可执行文件
3. 红色–>压缩文件
4. 浅蓝色–>链接文件
5. 灰色–>其他文件
ls命令常用例子
1. 不带参数运行ls
不带参数运行ls会只列出文件或者目录。看不到其他信息输出(译注:有时候你发现无参数的ls命令和这里描述的不同,那有可能是你的ls命令实际上带参数的ls别名)。
[root@jjxscs etc]# ls
abrt hosts.deny prelink.cache
acpi httpd prelink.conf
adjtime idmapd.conf prelink.conf.d
aliases init printcap
2. 使用长清单模式
使用-l字符(小写L字符),会显示当前目录内容的长列表。在接下来的例子中,我们会结合-l参数(这个参数经常使用)来得到更好的结果。
[root@jjxscs etc]# ls -al
总用量 2204
drwxr-xr-x. 120 root root 12288 9月 27 18:52 .
dr-xr-xr-x. 26 root root 4096 9月 27 16:44 ..
drwxr-xr-x. 3 root root 4096 9月 20 09:21 abrt
drwxr-xr-x. 4 root root 4096 9月 20 09:26 acpi
-rw-r--r--. 1 root root 46 9月 20 11:03 adjtime
3. 显示文件大小
以字节为单位看大小可能会不方便。6.5M读起来比6727680字节更简单。要这么做,我们可以使用-h与-l结合的参数。-h参数意味着便于人识别。
[root@jjxscs etc]# ls -lh
总用量 2.2M
drwxr-xr-x. 3 root root 4.0K 9月 20 09:21 abrt
drwxr-xr-x. 4 root root 4.0K 9月 20 09:26 acpi
-rw-r--r--. 1 root root 46 9月 20 11:03 adjtime
-rw-r--r--. 1 root root 1.5K 1月 12 2010 aliases
另外一个可以这么做的参数是--si。这个参数和-h参数类似,但是-si以1000为单位,而-h以1024为单位。
$ ls -si
[root@jjxscs etc]# ls -si
总用量 2184
392937 4 abrt 392511 44 mime.types
394495 4 acpi 392603 4 mke2fs.conf
393266 4 adjtime 392454 4 modprobe.d
392473 4 aliases 392985 4 modulefiles
4. 排序文件大小
在我们可以显示文件大小之后,我们希望以文件大小排序。我们可以使用-S参数来这么做。这列表会从大到校排序。
$ ls -lhS
[root@jjxscs etc]# ls -lhS
总用量 2.2M
-rw-r--r--. 1 root root 626K 8月 20 2013 services
-rw-r--r--. 1 root root 335K 9月 27 17:50 prelink.cache
-rw-r--r--. 1 root root 89K 9月 20 10:11 ld.so.cache
-rw-r--r--. 1 root root 87K 9月 20 09:28 termcap
5. 测量大小
ls可以通过使用-block-size=SIZE改单位大小。这里的SIZE是:
K = Kilobyte
M = Megabyte
G = Gigabyte
T = Terabyte
P = Petabyte
E = Exabyte
Z = Zettabyte
Y = Yottabyte
比如,我们希望使用MB作为单位大小。所以语法就会像这样:
[root@jjxscs etc]# ls -l --block-size=M
总用量 3M
drwxr-xr-x. 3 root root 1M 9月 20 09:21 abrt
drwxr-xr-x. 4 root root 1M 9月 20 09:26 acpi
-rw-r--r--. 1 root root 1M 9月 20 11:03 adjtime
-rw-r--r--. 1 root root 1M 1月 12 2010 aliases
-rw-r--r--. 1 root root 1M 9月 20 09:34 aliases.db
drwxr-xr-x. 2 root root 1M 9月 20 09:25 alsa
drwxr-xr-x. 2 root root 1M 9月 20 09:27 alternatives
6. 显示隐藏文件
在Linux中,以"."(点号)开头的文件是隐藏文件。为了在ls命令中显示它,我们可以使用-a选项。
[root@jjxscs ~]# ls -a
. .config .gstreamer-0.10 .pulse 视频
.. .cshrc .gtk-bookmarks .pulse-cookie 图片
.abrt .dbus .gvfs .recently-used.xbel 文档
7. 只列出目录条目
如果我们希望只列出目录,我们可以使用-d选项。
$ ls -d */
[root@jjxscs etc]# ls -d */
abrt/ gconf/ obex-data-server/ rpm/
acpi/ gcrypt/ oddjob/ rsyslog.d/
alsa/ gdm/ oddjobd.conf.d/ rwtab.d/
alternatives/ ghostscript/ openldap/ samba/
8. 不打印所有者信息
要这么做,我们使用-g选项。
[root@jjxscs etc]# ls -g
总用量 2184
drwxr-xr-x. 3 root 4096 9月 20 09:21 abrt
drwxr-xr-x. 4 root 4096 9月 20 09:26 acpi
-rw-r--r--. 1 root 46 9月 20 11:03 adjtime
-rw-r--r--. 1 root 1512 1月 12 2010 aliases
-rw-r--r--. 1 root 12288 9月 20 09:34 aliases.db
9. 不打印组信息
-g隐藏了拥有者信息,—G会隐藏组信息。
[root@jjxscs etc]# ls -lG
总用量 2184
drwxr-xr-x. 3 root 4096 9月 20 09:21 abrt
drwxr-xr-x. 4 root 4096 9月 20 09:26 acpi
-rw-r--r--. 1 root 46 9月 20 11:03 adjtime
-rw-r--r--. 1 root 1512 1月 12 2010 aliases
-rw-r--r--. 1 root 12288 9月 20 09:34 aliases.db
10. 打印UID和GID
如果你想以数字方式列出项的所有者和所有组(即UID和GID),我们可以带-n选项使用ls命令。这里是个例子。
[root@jjxscs etc]# ls -n
总用量 2184
drwxr-xr-x. 3 0 0 4096 9月 20 09:21 abrt
drwxr-xr-x. 4 0 0 4096 9月 20 09:26 acpi
-rw-r--r--. 1 0 0 46 9月 20 11:03 adjtime
-rw-r--r--. 1 0 0 1512 1月 12 2010 aliases
-rw-r--r--. 1 0 0 12288 9月 20 09:34 aliases.db
从上面的例子中,我们知道用户pungki的UID是100,GID是1000,而root组的GID是0。
11. 不带颜色打印
一些Linux发行版已经对ls命令启用彩色。这会使ls以各种颜色打印列表。如果你不想要这样,你可以使用 --color=never 参数。
$ ls --color=never

12. 打印每个文件的索引号
为了打印索引或者大家俗称的inode号,我们可以使用-i选项。索引号会显示在第一列。
[root@jjxscs etc]# ls -li
总用量 2184
392937 drwxr-xr-x. 3 root root 4096 9月 20 09:21 abrt
394495 drwxr-xr-x. 4 root root 4096 9月 20 09:26 acpi
393266 -rw-r--r--. 1 root root 46 9月 20 11:03 adjtime
392473 -rw-r--r--. 1 root root 1512 1月 12 2010 aliases
396392 -rw-r--r--. 1 root root 12288 9月 20 09:34 aliases.db
13. 增加 / (斜线) 标记目录
要这么做,使用-p选项。
$ ls -p
[root@jjxscs etc]# ls -p
abrt/ hosts.deny prelink.cache
acpi/ httpd/ prelink.conf
adjtime idmapd.conf prelink.conf.d/
14. 排序时反转顺序
你或许需要在列出条目时反转顺序。要这么做,你可以使用-r选项。
[root@jjxscs etc]# ls -r
yum.repos.d portreserve host.conf
yum.conf popt.d hal
yum polkit-1 gtk-2.0
15. 递归列出子目录
带-R参数后,你可以列出包含它子目录的目录。
[root@jjxscs dev]# ls -R |more
./bus:
usb

./bus/usb:
001
002

./bus/usb/001:
001
16. 扩展名排序
你可以使用-X参数或者--sort=extension来通过扩展名来排序(译注:这样对于筛选不同类型的文件很有用)。
$ ls -lX

$ ls --sort=extension
[root@jjxscs etc]# ls -lX
总用量 2184
drwxr-xr-x. 3 root root 4096 9月 20 09:21 abrt
drwxr-xr-x. 4 root root 4096 9月 20 09:26 acpi
-rw-r--r--. 1 root root 46 9月 20 11:03 adjtime
-rw-r--r--. 1 root root 1512 1月 12 2010 aliases
drwxr-xr-x. 2 root root 4096 9月 20 09:25 alsa
17. 通过修改时间列出
使用-t选项会按修改时间排序,新的文件在前。
$ ls -lt
[root@jjxscs etc]# ls -lt
总用量 2184
drwxr-xr-x. 2 root root 4096 9月 27 20:56 yum.repos.d
-rw-r--r--. 1 root root 2703 9月 27 18:52 bashrc
-rw-r--r--. 1 root root 342262 9月 27 17:50 prelink.cache
-rw-r--r--. 1 root root 654 9月 27 17:25 mtab
18. 列出你的主目录
要列出你的主目录,你可以用"~"(波浪号)来代表它。这样你就不必输入完整的目录名。让我们假设家文件名为/home/pungki,那么波浪号就对/home/pungki有意义了。
$ ls ~
[root@jjxscs etc]# ls ~
anaconda-ks.cfg install.log install.log.syslog 公共的 模板 视频 图片 文档 下载 音乐 桌面
19. 列出父目录
无论你在那个目录,你可以列出父目录而不必输入完整路径。这是个例子。
$ ls ../
这回列出1层之上的目录内容。
$ ls ../../
[root@jjxscs etc]# ls ../
bin cgroup etc lib lost+found misc net proc sbin srv tmp var
boot dev home lib64 media mnt opt root selinux sys usr
20. 打印ls命令版本
使用--version参数打印它。
$ ls --version
[root@jjxscs etc]# ls --version
ls (GNU coreutils) 8.4
Copyright (C) 2010 Free Software Foundation, Inc.
许可证:GPLv3+:GNU 通用公共许可证第3 版或更新版本<http://gnu.org/licenses/gpl.html>。
本软件是自由软件:您可以自由修改和重新发布它。
在法律范围内没有其他保证。

由Richard M. Stallman 和David MacKenzie 编写。
总结
这些是在日常操作中会使用到的参数。当然你总可以输入man ls 或者 ls --help 来查询ls的手册页
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ls linux命令