Linux学习笔记6--ls命令
语 法:ls [-1aAbBcCdDfFgGhHiklLmnNopqQrRsStuUvxX][-I <范本样式>][-T <跳格字数>][-w <每列字符数>][--block-size=<区块大小>][--color=<使用时机>][--format=<列表格式>][--full-time][--help][--indicator-style=<标注样式>][--quoting-style=<引号样式>][--show-control-chars][--sort=<排序方式>][--time=<时间戳记>][--version][文件或目录...]
补充说明:执行ls指令可列出目录的内容,包括文件和子目录的名称。
参 数:
-1 每列仅显示一个文件或目录名称。
-a或--all 下所有文件和目录。
-A或--almost-all 显示所有文件和目录,但不显示现行目录和上层目录。
-b或--escape 显示脱离字符。
-B或--ignore-backups 忽略备份文件和目录。
-c 以更改时间排序,显示文件和目录。
-C 以又上至下,从左到右的直行方式显示文件和目录名称。
-d或--directory 显示目录名称而非其内容。
-D或--dired 用Emacs的模式产生文件和目录列表。
-f 此参数的效果和同时指定"aU"参数相同,并关闭"lst"参数的效果。
-F或--classify 在执行文件,目录,Socket,符号连接,管道名称后面,各自加上"*","/","=","@","|"号。
-g 次参数将忽略不予处理。
-G或--no-group 不显示群组名称。
-h或--human-readable 用"K","M","G"来显示文件和目录的大小。
-H或--si 此参数的效果和指定"-h"参数类似,但计算单位是1000Bytes而非1024Bytes。
-i或--inode 显示文件和目录的inode编号。
-I<范本样式>或--ignore=<范本样式> 不显示符合范本样式的文件或目录名称。
-k或--kilobytes 此参数的效果和指定"block-size=1024"参数相同。
-l 使用详细格式列表。
-L或--dereference 如遇到性质为符号连接的文件或目录,直接列出该连接所指向的原始文件或目录。
-m 用","号区隔每个文件和目录的名称。
-n或--numeric-uid-gid 以用户识别码和群组识别码替代其名称。
-N或--literal 直接列出文件和目录名称,包括控制字符。
-o 此参数的效果和指定"-l" 参数类似,但不列出群组名称或识别码。
-p或--file-type 此参数的效果和指定"-F"参数类似,但不会在执行文件名称后面加上"*"号。
-q或--hide-control-chars 用"?"号取代控制字符,列出文件和目录名称。
-Q或--quote-name 把文件和目录名称以""号标示起来。
-r或--reverse 反向排序。
-R或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
-s或--size 显示文件和目录的大小,以区块为单位。
-S 用文件和目录的大小排序。
-t 用文件和目录的更改时间排序。
-T<跳格字符>或--tabsize=<跳格字数> 设置跳格字符所对应的空白字符数。
-u 以最后存取时间排序,显示文件和目录。
-U 列出文件和目录名称时不予排序。
-v 文件和目录的名称列表以版本进行排序。
-w<每列字符数>或--width=<每列字符数> 设置每列的最大字符数。
-x 以从左到右,由上至下的横列方式显示文件和目录名称。
-X 以文件和目录的最后一个扩展名排序。
--block-size=<区块大小> 指定存放文件的区块大小。
--color=<列表格式> 培植文件和目录的列表格式。
--full-time 列出完整的日期与时间。
--help 在线帮助。
--indicator-style=<标注样式> 在文件和目录等名称后面加上标注,易于辨识该名称所属的类型。
--quoting-syte=<引号样式> 把文件和目录名称以指定的引号样式标示起来。
--show-control-chars 在文件和目录列表时,使用控制字符。
--sort=<排序方式> 配置文件和目录列表的排序方式。
--time=<时间戳记> 用指定的时间戳记取代更改时间。
--version 显示版本信息。
练习:
每列仅显示一个文件或目录名称
[root@CentOS4 /]# ls -l
total 152
drwxr-xr-x 2 root root 4096 Sep 6 22:09 bin
drwxr-xr-x 3 root root 4096 Sep 6 22:07 boot
drwxr-xr-x 9 root root 6500 Sep 23 19:08 dev
drwxr-xr-x 81 root root 8192 Sep 23 19:08 etc
drwxr-xr-x 3 root root 4096 Sep 6 22:25 home
drwxr-xr-x 2 root root 4096 Feb 22 2005 initrd
drwxr-xr-x 12 root root 4096 Sep 6 22:14 lib
drwx------ 2 root root 16384 Sep 7 05:58 lost+found
drwxr-xr-x 4 root root 4096 Sep 23 19:08 media
drwxr-xr-x 2 root root 4096 May 3 13:14 misc
drwxr-xr-x 2 root root 4096 Feb 22 2005 mnt
... ...
列出目录下的所有文件。
[root@CentOS4 /]# ls -a
. bin etc lib misc proc selinux tmp
.. boot home lost+found mnt root srv usr
.autofsck dev initrd media opt sbin sys var
[root@CentOS4 /]# ls -A
显示所有文件和目录,但不显示现行目录和上层目录
.autofsck boot etc initrd lost+found misc opt root selinux sys usr
bin dev home lib media mnt proc sbin srv tmp var
显示脱离字符
[root@CentOS4 /]# ls -b
bin dev home lib media mnt proc sbin srv tmp var
boot etc initrd lost+found misc opt root selinux sys usr
-b原文的意思:
-b, --escape
print octal escapes for nongraphic characters
--block-size=SIZE
use SIZE-byte blocks
可以这样理解:把文件名中不可输出的字符使用反斜杠加字符编号(就像在c语言里一样)的形式列出。
以更改时间排序,显示文件和目录
[root@CentOS4 /]# ls -l -c
total 152
drwxr-xr-x 2 root root 4096 Sep 6 22:09 bin
drwxr-xr-x 3 root root 4096 Sep 6 22:07 boot
drwxr-xr-x 9 root root 6500 Sep 23 19:08 dev
drwxr-xr-x 81 root root 8192 Sep 23 19:08 etc
drwxr-xr-x 3 root root 4096 Sep 6 22:25 home
drwxr-xr-x 2 root root 4096 Sep 6 22:04 initrd
drwxr-xr-x 12 root root 4096 Sep 6 22:14 lib
drwx------ 2 root root 16384 Sep 7 05:58 lost+found
drwxr-xr-x 4 root root 4096 Sep 23 19:08 media
drwxr-xr-x 2 root root 4096 Sep 6 22:08 misc
drwxr-xr-x 2 root root 4096 Sep 6 22:04 mnt
drwxr-xr-x 2 root root 4096 Sep 6 22:04 opt
dr-xr-xr-x 69 root root 0 Sep 24 2007 proc
drwxr-x--- 14 root root 4096 Sep 19 22:22 root
drwxr-xr-x 2 root root 8192 Sep 6 22:09 sbin
E文中对 -c说明是这样:
-c with -lt: sort by, and show, ctime (time of last modification
of file status information) with -l: show ctime and sort by
name otherwise: sort by ctime
-C list entries by columns
-c 输出文件的i节点的修改时间,并以此排序
[root@CentOS4 /]# ls -c -l
... ...
drwxr-xr-x 2 root root 4096 Sep 6 22:04 opt
dr-xr-xr-x 69 root root 0 Sep 24 2007 proc
drwxr-x--- 14 root root 4096 Sep 19 22:22 root
drwxr-xr-x 2 root root 8192 Sep 6 22:09 sbin
drwxr-xr-x 1 root root 0 Sep 24 2007 selinux
drwxr-xr-x 2 root root 4096 Sep 6 22:04 srv --不一样的行
drwxr-xr-x 9 root root 0 Sep 24 2007 sys
drwxrwxrwt 6 root root 4096 Sep 23 19:34 tmp
drwxr-xr-x 14 root root 4096 Sep 6 22:06 usr
drwxr-xr-x 19 root root 4096 Sep 6 22:11 var
以又上至下,从左到右的直行方式显示文件和目录名称。
[root@CentOS4 /]# ls -C -l
... ...
drwxr-xr-x 2 root root 4096 Feb 22 2005 opt
dr-xr-xr-x 69 root root 0 Sep 24 2007 proc
drwxr-x--- 14 root root 4096 Sep 19 22:22 root
drwxr-xr-x 2 root root 8192 Sep 6 22:09 sbin
drwxr-xr-x 1 root root 0 Sep 24 2007 selinux
drwxr-xr-x 2 root root 4096 Feb 22 2005 srv --不一样的行
drwxr-xr-x 9 root root 0 Sep 24 2007 sys
drwxrwxrwt 6 root root 4096 Sep 23 19:34 tmp
drwxr-xr-x 14 root root 4096 Sep 6 22:06 usr
drwxr-xr-x 19 root root 4096 Sep 6 22:11 var
我对这-c 与-C参数很模糊,真不知道怎么样区分他们好。不管这么多先继续。
显示当前目录下的目录名称,而非其内容
[root@CentOS4 /]# ls -d
.
用Emacs的模式产生文件和目录列表
[root@CentOS4 /]# ls -D
bin dev home lib media mnt proc sbin srv tmp var
boot etc initrd lost+found misc opt root selinux sys usr
[root@CentOS4 /]# ls -l
total 152
drwxr-xr-x 2 root root 4096 Sep 23 20:16 bin
drwxr-xr-x 3 root root 4096 Sep 6 22:07 boot
drwxr-xr-x 9 root root 6500 Sep 23 19:08 dev
drwxr-xr-x 81 root root 8192 Sep 23 20:16 etc
drwxr-xr-x 3 root root 4096 Sep 6 22:25 home
drwxr-xr-x 2 root root 4096 Feb 22 2005 initrd
对列表进行说明:
第1列包含类型(1bit)+用户所有者权限(3bit)+工作组权限(3bit)+其他用户或权限(3bit),总共10bit:
文件数据类型:
- 表示普通文件,即除以下说明外的所有文件
d 表示目录
l 表示符号链结文件
p 表示管道文件
s 表示Socket文件
c 表示字符设备文件
b 表示块设备文件
文件权限:
r 只读
w 可写
x 可执行
t 粘贴位
- 此位无权限,如r-x即可表示没有写的权限
s 设置了suid,或sgid,例如-rwsrwx 表示所有者被设置了suid位
,而drwxrwsr表示工作组被设置了spid位
S 设置了suid,或sgid,但此位不具有执行权限,如-rwSrwr-x表示文件的
拥有者对文件设置了suid,但对文件不具有执行的权限。
第2列:硬链接数。
第3列:UID,默认用户名表示
第4列:GID,默认以工作组名表示。
第5列:文件或目录大小
第6列:修改文件或目录的日期
第7列:文件或目录名
参考资料:
《Linux常用命令大全》 Chinaitlab
《Linux系统开发员》