• 理解 Linux 中 `ls` 的输出


    ls 的输出会因各 Linux 版本变种而略有差异,这里只讨论一般情况下的输出。

    下面是来自 man page 关于 ls 的描述:

    $ man ls
           ls - list directory contents

    列出文件夹中的内容。

    但一般我们会配合着 -l 参数使用,将输出展示成列表形式。

    ls 的 man page 中搜索 -l 可看到该参数的意义:

           -l     use a long listing format

    列表形式下看到的输出大概成这样:

    -rwxrw-r--    10    root   root 2048    Jan 13 07:11 afile.exe

    各列的含义

    -rwxrw-r--    10    root   root 2048    Jan 13 07:11 afile.exe
    ?UUUGGGOOOS   00  UUUUUU GGGGGG ####    ^-- 修改日期及文件或文件夹名
    ^ ^  ^  ^ ^    ^      ^      ^    ^
    | |  |  | |    |      |      |    --- 文件大小,单位为字节(byte)
    | |  |  | |    |      |      -------- 所有者所处的分组
    | |  |  | |    |      --------------- 所有者名称
    | |  |  | |    ---------------------- 包含的项目(item)数量
    | |  |  | --------------------------- 额外的权限(`.`,`+`,`s` 等,为空表示没有)
    | --------------------------------- 分别对应 [U]ser, [G]roup, and [O]thers 三种账户的读,写,可执行权限
    ------------------------------------- 标识文件类型
    

    文件权限/file permissions

    包含三部分:

    • 第一位标识文件类型,
      • -:文件。
      • d:文件夹(directory)。
      • l:软链(symlink)。
    • 后面的值三个一组,xxx xxx xxx。分别对应了 usergroupother 的权限。其中每一组包含三位,每一位则表示具体的读写及可执行权限,如果是字母表示有该权限, - 表示没有相应的权限。
      • r:读取权限/readable。
      • w:写入权限/writable。
      • x:可执行权限/executable,即将文件作为可执行文件运行。
    • 最后位可选,表示还有额外的权限控制,如果没有则为空,参见这里的解释

    其中,

    • user 即文件所属的用户,它的所有者,也可理解成其创建者,如果该文件没有被修改过权限的话。
    • group 即用户所属的分组。
    • other 表示既不是主人也不属于 user 所处的分组的其他任何身份。

    所以连起来的话,-rwxrw-r-- 表示该项是个文件,其所有者拥有全部三种权限(rwx),和所有者同在一个分组下的用户没有可执行的权限(rw-),其他用户只读(r--)。

    Tips: 系统会为文件默认赋予权限,但可通过 chmod (change mode)命令来手动改变文件的权限。

    one more thing

    有趣的是,权限除了使用 rwx 字母的方式表示,还可使用八进制(octal)数字来表示。

    • 0:无权限 -
    • 1:可执行 x
    • 2:写权限 w
    • 3:可写和可执行 wx
    • 4:读权限 r
    • 5:可读可执行 rx
    • 6:读写 rw
    • 7:读写及可执行 rwx

    数字形式的权限通常用于 chmod 命令,方便修改文件的权限。比如将文件设置对用户有全部权限(对应数字 7),分组可读可执行(5),其他只读(4):

    $ chmod 754 somefile.js

    你当然还是可以使用字母的方式来进行设置的,

    $ chmod u=rwx,g=rx,o=r somefile.js

    细心的你可能发现了,无论哪种权限组合,都可以通过三种其他的权限其数字相加而得到,

    • 比如 7 表示读写及可执行,7 = 4(读) + 2 (写) + 1 (可执行)
    • 再比如只读权限 4 = 4(读) + 0 (写) + 0 (可执行)

    这便是其设计其妙之处,所以你应该理解为何 0~7 对应的是上面列出的权限。方便之处在于,只需要记住 4,2,1 分别对应读,写,可执行。其他权限通过相加计算即可。

    链接数量/number of links

    表示包含的项目数量。如果该项是文件,则无疑是 1。如果该项是文件夹,表示文件夹下还包含多少个文件或文件夹。

    所属用户/owner name

    文件的所有者。

    所属分组/owner group

    所有者所处的分组名。

    文件大小/file size

    文件或文件夹的大小,单位为字节(byte)。通过参数可配置输出为更加容易理解的形式,比如 -h (--human-readable):

    -rw-rw-r--   1 liuwayong liuwayong 1.6K Mar 30 18:18 app.js

    修改日期/time of last modification

    最后的修改日期。

    文件或目录名/file/directory name

    文件或文件夹的名称。如果是软链接,会显示出其所指向的位置。

    lrwxrwxrwx  1 root      root        16 Aug  2  2018 videodata -> /data/videodata/

    相关资料

  • 相关阅读:
    日志
    mysql锁
    慢查询
    auto_increment
    脚本
    服务器元数据
    复制表及表数据
    临时表
    (一)校园信息通微信小程序从前端到后台整和笔记
    OpenCart框架运行流程介绍opencart资料链接
  • 原文地址:https://www.cnblogs.com/Wayou/p/understanding_output_of_linux_ls.html
Copyright © 2020-2023  润新知