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/

相关资料

理解 Linux 中 `ls` 的输出的更多相关文章

  1. [转帖]C语言计算时间函数 & 理解linux time命令的输出中“real”“user”“sys”的真正含义

    C语言计算时间函数 & 理解linux time命令的输出中“real”“user”“sys”的真正含义 https://blog.csdn.net/willyang519/article/d ...

  2. linux中 ls |wc -l

      linux中 ls |wc -l_百度知道 答 205行,205个字,1920个字节,wc -l只输出文件行数

  3. linux中ls命令详解 (转)

    -a -- 全部(all).列举目录中的全部文件,包括隐藏文件(.filename).位于这个列表的起首处的 .. 和 . 依次是指父目录和你的当前目录.      -l -- 长(long).列举目 ...

  4. 如何理解 Linux 中的 load averages

    原文:https://mp.weixin.qq.com/s?src=11&timestamp=1533697106&ver=1047&signature=poqrJFfcNAB ...

  5. Linux中ls命令用法

    ls 命令的含义是list显示当前目录中的文件名字.注意不加参数它显示除隐藏文件外的所有文件及目录的名字. 1)ls –a 显示当前目录中的所有文件,包含隐藏文件 命令: aijian.shi@U-a ...

  6. Linux命令 ls -l 输出内容含义详解

    Linux命令 ls -l s输出内容含义详解   1. ls  只显示文件名或者文件目录 2. ls -l(这个参数是字母L的小写,不是数字1) 用来查看详细的文件资料 在某个目录下键入ls -l可 ...

  7. linux中ls命令使用选项

    ls:英文全名:List即列表的意思 -a 列出目录下的所有文件,包括以 . 开头的隐含文件.-b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出.-c 输出文件的 i 节 ...

  8. Linux中带颜色输出的printf使用简介(\033)

    昨晚懒得FQ, 百度了一下linux中printf输出颜色的方法, 结果搜索结果质量让人倍感伤心. 越来越不想用bd了.还是Google一下吧, 手气真好, 第一个内容就很清楚明了! 我还是直接简单翻 ...

  9. 深入理解Linux中内存管理

    前一段时间看了<深入理解Linux内核>对其中的内存管理部分花了不少时间,但是还是有很多问题不是很清楚,最近又花了一些时间复习了一下,在这里记录下自己的理解和对Linux中内存管理的一些看 ...

随机推荐

  1. FPGA学习笔记(五)—— 组合逻辑电路功能的描述

    设计方法:    分析真值表规律        两种描述方式: 方式1:用assign描述,用阻塞赋值= 方式2:用always@(*)描述,用非阻塞赋值<=      选择功能的三种描述方式: ...

  2. Java基本类型和引用类型

      8种基本类型 一.4种整型     byte      1字节           -128--127     short     2 字节         -32,768 -- 32,767   ...

  3. mysql千万级大数据SQL查询优化

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  4. BZOJ_1798_[AHOI2009]维护序列_线段树

    BZOJ_1798_[AHOI2009]维护序列_线段树 题意:老师交给小可可一个维护数列的任务,现在小可可希望你来帮他完成. 有长为N的数列,不妨设为a1,a2,…,aN .有如下三种操作形式: ( ...

  5. css3波纹特效、H5实现动态波浪

    css3实现动态波纹特效,由于css3里面有过渡和动画效果,现在利用css3实现动态波浪效果就很简单了,直接使用transform来实现就ok, 使得translateX 产生偏移就可以不断实现循环动 ...

  6. 什么是语义化的HTML?为什么要做到语义化?

    一.什么是语义化的HTML? 语义化的HTML就是写出的HTML代码,符合内容的结构化(内容语义化),选择合适的标签(代码语义化),能够便于开发者阅读和写出更优雅的代码的同时让浏览器的爬虫和机器很好地 ...

  7. Python 实现文件复制、删除

    Python 实现文件复制.删除  转载至:http://www.cnblogs.com/sld666666/archive/2011/01/05/1926282.html 用python实现了一个小 ...

  8. 原型模式--java代码实现

    原型模式 原型模式,属于对象创建型模式中的一种.通过复制原型对象的方法来创建一个对象实例,且该对象与原对象有相同的数据结构和值.类似我们在备份数据库信息的时候,将数据库中表的结构和数据的一同备份,生成 ...

  9. sun.misc.Unsafe 详解

    原文地址 译者:许巧辉 校对:梁海舰 Java是一门安全的编程语言,防止程序员犯很多愚蠢的错误,它们大部分是基于内存管理的.但是,有一种方式可以有意的执行一些不安全.容易犯错的操作,那就是使用Unsa ...

  10. Spark学习之数据读取与保存总结(二)

    8.Hadoop输入输出格式 除了 Spark 封装的格式之外,也可以与任何 Hadoop 支持的格式交互.Spark 支持新旧两套Hadoop 文件 API,提供了很大的灵活性. 要使用新版的 Ha ...