• ls命令


    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

    如果是符号链接,会有"->"符号,跟着它指向的文件名

  • 相关阅读:
    CSS开发中常用技巧总结
    Linq的分组功能
    深入理解 C# 协变和逆变
    js数组删除数组元素!
    关于 Photoshop 蒙版和 Alpha 通道
    jQuery数组处理详解(含实例演示)
    多媒体指令(灰度像素最大值)
    多媒体指令(图像均值模糊)
    matlab练习程序(立体相关块匹配)
    matlab练习程序(steerable filters)
  • 原文地址:https://www.cnblogs.com/qmfsun/p/3813586.html
Copyright © 2020-2023  润新知