ls(list)
命令可以说是Linux下最常用的命令之一
#ls -l;列出文件的详细信息
#ll
以上两个命令一样,ll是ls -l的简写
#ls -al;列出目录下的所有文件,包括以 . 开头的隐藏文件。
#ls -R ;列出所有子目录下的文件
#ls -lh ;列出文件的大小,单位为K
#ls -l | less; 分屏显示,能用pgup,pgdw 翻页,但不能在当前位置退出
#ls usr/bin/*.pl;显示usr/bin目录下的以.pl结尾的文件
#ls -ltr;逆序显示文件,可以测试显示日志
例一:列出/home/peidachang文件夹下的所有文件和目录的详细资料
多个参数可以写在一起,也可以单个的分开写
#ls -l -R /home/peidachang;(#ls -lR /home/peidachang;效果完全一样)
例二:列出当前目录中所有以“t”开头的目录的详细内容,可以使用如下命令:
#ls -l t*
只列出常用的参数:
-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-l 列出文件的详细信息。
-R 列出所有子目录下的文件。
-d 将目录象文件一样显示,而不是显示其下的文件。
-e 输出时间的全部信息,而不是输出简略信息。
-k 以 k 字节的形式表示文件的大小。
-m 横向输出文件名,并以“,”作分格符。
-p -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通
文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套
接字(sockets)。
-s 在每个文件名后输出该文件的大小。
-A 显示除 “.”和“..”外的所有文件。
-S 以文件大小排序。
-1 一行只输出一个文件。
--color=no 不显示彩色文件名
只列出子目录
1. ls -F | grep /$ 或者 alias sub = "ls -F | grep /$"(linux)
2. ls -l | grep "^d" 或者 ls -lL | grep "^d" (Solaris)
计算当前目录下的文件数和目录数
下面命令可以分别计算当前目录下的文件和目录个数:
#ls -l * |grep "^-"|wc -l ---文件个数
#ls -l * |grep "^d"|wc -l ---目录个数
计算当前目录下的文件数量
#ls -|*|grep "^-"| wc -|
显示彩色目录列表
打开/etc/bashrc, 加入如下一行:
alias ls="ls --color"
下次启动bash时就可以像在Slackware里那样显示彩色的目录列表了, 其中颜色的含义如下:
1. 蓝色-->目录
2. 绿色-->可执行文件
3. 红色-->压缩文件
4. 浅蓝色-->链接文件
5. 灰色-->其他文件
#ls -tl --time-style=full-iso sshd
#ls -ctl --time-style=long-iso
#ll --time=atime test;查看访问时间
$ll --full-time //显示完整的时间(年,月,日,星期,时,分,秒)
说明:mtime:文件修改时间
atime:访问时间
ctime:状态时间,权限和属性改了
ls 命令的含义是list显示当前目录中的文件名字。注意不加参数它显示除隐藏文件外的所有文件及目录的名字。
1)ls –a 显示当前目录中的所有文件,包含隐藏文件;注意隐藏文件是在文件名字以“.”(英文句号)开头的文件。
# ls –a
. .gnome2 .nautilus
.. .gnome2_private oracle_rpm
.bash_profile .gtkrc-1.2-gnome2 tnsnames.ora
.bashrc .ICEauthority types.h
2)ls –l 显示文件及其详细信息。
# ls –l
total 5
-rw-r--r-- 1 root root 1668 Oct 3 2007 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 Nov 6 00:04 aa
显示的文件详细信息分别代表什么呢?以上面蓝色部分为例。
total 5 代表当前目录下文件大小的总和为5K(每个目录的大小都按4K算)
drwxr-xr-x 第一个字符有3种情况:“-”表示普通文件,“d”代表目录,“l”代表连接文件,“b”代表设备文件。
后面的9个字符每3个为一组,分别代表文件所有者、文件所有者所在用户组、其它用户对文件拥有的权限。每组中3个字符分别代表读、写、执行的权限,若没有其中的任何一个权限则用“-”表示。执行的权限有两个字符可选“x”代表可执行,“s”代表套接口文件。
紧接着的数字2代表 “aa”这个目录下的目录文件数目(这个数目=隐藏目录数目+普通目录数目)。我们进入“aa”目录用命令 ls –al (为了看到隐藏文件我们加上-a这个参数)
# ls -al
total 8
drwxr-xr-x 2 root root 4096 Nov 6 00:04 .
drwxr-x--- 14 root root 4096 Nov 6 00:04 ..
(上面的第3行中的2代表当前目录中有子目录2个,即.和..
上面的第4行中的14代表这个目录的上一层目录中有14个子目录。)
再接下来的root代表这个文件(目录)的属主为 用户root
再接下来的root代表这个文件(目录)所属的用户组为 组root
4096 代表文件的大小(字节数),目录的大小总是为4096字节。
Nov 6 00:04 代表文件(目录)的修改时间。
aa代表文件(目录)在名字。
3)文件名颜色的含义
默认色代表普通文件。 例:install.log
绿色代表可执行文件。 例:rc.news
红色代表tar包文件。 例:vim-7.1.tar.bz2
蓝色代表目录文件。 例:aa
水红代表图象文件。 例:Sunset.jpg
青色代表链接文件。 例:rc4.d (此类文件相当于快捷方式)
黄色代表设备文件。 例:fd0
4)几个比较常用的参数。
-t 按最后修改时间排序。
-S 按文件大小排序。(大写的S)
-r 排序时按倒序。
-h 显示文件大小时增加可读性 (例:1K 234M 2G)
如果这个aa是个普通文件,2就代表这个文件有2个别名(这个文件被人创建了一个硬链接文件)
ls -l 列表信息详解
[root@localhost ~]# ls -l
总计 152
-rw-r--r-- 1 root root 2915 08-03 06:16 a
-rw------- 1 root root 1086 07-29 18:35 anaconda-ks.cfg
…………………………………………
第1行:总计(total)
Total后面的数字是指当前目录下所有文件所占用的空间总和。使用ls –lh可查看,也可使用ls –alh查看
第1字段: 文件属性字段
-rw-r--r-- 1 root root 762 07-29 18:19 exit
文件属性字段总共有10个字母组成;第一个字符表示文件类型。
-表示该文件是一个普通文件
普通文件分为三种:
文本文件:ASCI码
二进制文件:可执行文件,相当于windows下exe文件
数据文件:处理数据应用
d表示该文件是一个目录,字母"d",是dirtectory(目录)的缩写
注意:目录或者是特殊文件,这个特殊文件存放其他文件或目录的相关信息
l表示该文件是一个链接文件。字母"l"是link(链接)的缩写,类似于windows下的快捷方式,表示只是一个符号文件,实际指向另外一个文件
b的表示块设备文件(block),一般置于/dev目录下,设备文件是普通文件和程序访问硬件设备的入口,是 很特殊的文件。没有文件大小,只有一个主设备号和一个辅设备号。一次传输数据为一整块的被称为块设备,如硬盘、光盘等。最小数据传输单位为一个数据块(通 常一个数据块的大小为512字节)
c表示该文件是一个字符设备文件(character),一般置于/dev目录下,一次传输一个字节的设备被称为字符设备,如键盘、字符终端等,传输数据的最小单位为一个字节
设备文件(linux上的硬件)分为两种
区块设备文件,block,以b打头,主要是磁盘
字符设备文件:以character,以c打头,主要是鼠标,键盘
p表示该文件为管道文件,pipe的缩写。与shell编程有关的文件
s表示该文件为sock文件,sock的缩写,即套接字文件。与shell编程有关的文件
链接文件分为硬链接或符号链接两种。
硬链接:多个指向同一文件。硬链接文件大小完全相同,如有多个硬链接,所链接的文件只是一个文件大小。
同一个文件所有的文件都是等价的,操作系统不区分链接创建的先后顺序,若一个文件存在两个链接,那么除去一个文件还可以通过另外一个文件来访问该文件,也可以除去创建链接时用到的文件,但只要还有一个链接存在,就可通过该连接访问文件。
符号链接(软链接):建立一个独立的文件,这个文件会让数据的读取指向它链接的文件内容。类似windows快捷方式。
第1字段后9个字母表示该文件或目录的权限位。
r表是读 (Read) 、w表示写 (Write) 、x表示执行 (eXecute)
前三个表示文件拥有者的权限,中间三个表示文件所属组拥有的权限,最后三个表示其他用户拥有的权限。
SUID和GUID解析:
s:4;g:2;o:1
4777即rwsrwxrwx。6777即rwsrwsrwx
第2字段:文件硬链接数
-rw-r--r-- 1 root root 762 07-29 18:19 exit
如果一个文件不是目录,此时这一字段表示这个文件所具有的硬链接数
第2字段的值为1,说明文件exit只有exit这一个文件名。即只有一个指向该链接的硬链接。
如果使用ln,做一个指向该文件的硬链接再查看该文件,该文件的第2字段就会变成2
[root@localhost ~]# ln exit aexit
[root@localhost ~]# ls -l
总计 160
-rw-r--r-- 2 root root 762 07-29 18:19 aexit
-rw-r--r-- 2 root root 762 07-29 18:19 exit
此时exit 和aexit称为互为硬链接。同指向一个文件,无论是修改哪一个文件,另一个里也做相应的变化,即同一文件的不同文件名
互为硬链接的文件具有相同的文件节点。
[root@localhost ~]# ls -i aexit exit
162302 aexit 162302 exit
软链接设置格式:
Ln –s 源文件 目标链接文件
# ln -s exit bexit
# ls -l
lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit
-rw-r--r-- 1 root root 762 07-29 18:19 exit
注意:软链接时文件节点号不一样;
[root@localhost ~]# ls -i bexit exit
161765 bexit 162302 exit
如果知道一个文件有多个文件名(链接文件)如何查找他的其他文件名的路径?
使用ls -i 获得其节点号,find查找。
[root@localhost ~]# ls -i /etc/sysconfig/network-scripts/ifcfg-eth0
452946 /etc/sysconfig/network-scripts/ifcfg-eth0 #节点号为 452946
[root@localhost ~]# find /etc -inum 452946
/etc/sysconfig/network-scripts/ifcfg-eth0
第2字段: 链接占用的节点
lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit
该字段文件占用一个节点,属于软链接(符号链接)
如果是目录,则第2字段表示该目录所含子目录的个数
新建空目录,此目录的第二字段就是2,表示该目录下有两个子目录。
因为每一个目录都有一个指向它本身的子目录"." 和指向它上级目录的子目录"..",此默认子目录是隐藏的。
每次在目录下新建一个子目录,该目录第2字段的值就增1,但是新建一个普通文件该字段值不增加。
第3字段:文件(目录)拥有者
lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit
该字段表示该文件拥有者是谁。只有文件的拥有者才具有改动文件属性的权利。root具有改动任何文件属性的权利。对于目录,只有拥有该目录的用户,或者具有写权限的用户才有在目录下创建文件的权利。
如果某一用户被删除,而该用户家目录还存在,ls -l 查看该文件将显示一个代表用户存在前ID号的数字。
创建用户test,将其加入wang用户组,su切换:
[root@localhost ~]# useradd test
[root@localhost ~]# usermod -g wang test #创建用户test,并将其加入到用户组wang中
[root@localhost ~]# su test
[test@localhost root]$ cd /home/test
[test@localhost ~]$ touch testing
[test@localhost ~]$ ls -l testing
-rw-r--r-- 1 test wang 0 08-03 18:02 testing #最后用ls -l 看到第三字段的文件拥有者为test
[test@localhost ~]$ su root #删除用户test
[root@localhost ~]# userdel test
[root@localhost ~]# cd /home/test #进入test的家目录,查看刚刚创建的文件testing。
[root@localhost test]# ls -l
总计 4
-rw-r--r-- 1 504 wang 0 08-03 18:02 testing
第三字段变成数字,此数字是原用户test的ID号。因为文件系统对每个文件记录文件所有者的ID,而非用户名。
第4字段:文件(目录)拥有者所在的组
lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit
一个用户可以加入很多个组,但是其中有一个是主组,就是显示在第4字段的名称。
useradd -g指定该用户所在的主组,-G指定其他组
Useradd –g 组名 用户名
第5字段: 文件所占用的空间(以字节为单位)
lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit
第5字段表示文件大小,如果是目录,表示该目录大小。注意是目录本身大小,而非目录及其下面的文件的总大小。
第6字段:文件(目录)最近访问(修改)时间
lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit
可通过touch修改创建时间 # touch exit
把exit创建时间修改当前时间,文件还有最后访问时间,最后修改时间等属性。
可以用ls其它参数显示出来。
第7字段:文件名
lrwxrwxrwx 1 root root 4 08-03 08:27 bexit -> exit
如果是符号链接,会有"->"符号,跟着它指向的文件名