理解 Linux 中 `ls` 的输出

简介: 理解 Linux 中 ls 的输出ls 的输出会因各 Linux 版本变种而略有差异,这里只讨论一般情况下的输出。下面是来自 man page 关于 ls 的描述:$ man ls ls - list directory contents列出文件夹中的内容。

理解 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。分别对应了 user,group 与 other 的权限。其中每一组包含三位,每一位则表示具体的读写及可执行权限,如果是字母表示有该权限, - 表示没有相应的权限。
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/
相关资料
What do the fields in ls -al output mean?
'+' and 's' in permission strings
What is the default size unit in linux ls -l command
The Chmod Command and Linux File Permissions Explained
原文地址https://www.cnblogs.com/Wayou/p/understanding_output_of_linux_ls.html

相关文章
|
8月前
|
Shell Linux API
【Shell 命令集合 磁盘管理 】Linux 列出目录中的文件和子目录 ls命令使用教程
【Shell 命令集合 磁盘管理 】Linux 列出目录中的文件和子目录 ls命令使用教程
133 1
|
5月前
|
Linux
Linux下使用ls查看文件颜色全部为白色的解决方法,以及Linux中文件颜色介绍
Linux下使用ls查看文件颜色全部为白色的解决方法,以及Linux中文件颜色介绍
209 2
|
6月前
|
Linux
Linux部署04-ls命令的参数和选项,主体,参数,选项,ls / 查看根目录下的文件夹,-a的意思是列出全部选项 ls -a home全部文件,.代表着隐藏的文件夹,-l 选项,以列表竖向的形式展
Linux部署04-ls命令的参数和选项,主体,参数,选项,ls / 查看根目录下的文件夹,-a的意思是列出全部选项 ls -a home全部文件,.代表着隐藏的文件夹,-l 选项,以列表竖向的形式展
|
8月前
|
Linux
【Linux】深入理解ls命令
【Linux】深入理解ls命令
|
5月前
|
Linux
在Linux中,ls命令有哪些常用的选项?
在Linux中,ls命令有哪些常用的选项?
|
7月前
|
Linux Shell UED
探索 Linux 命令 `dircolors`:自定义 `ls` 命令的颜色输出
`dircolors` 是 Linux 中用于自定义 `ls` 命令颜色输出的工具,它读取配置文件(默认 `/etc/DIR_COLORS` 或通过 `LS_COLORS` 环境变量)并生成 shell 变量。
|
6月前
|
存储 Linux
Linux文件的上和下,FinalShell文件右键可下文件,先选择root文件夹,然后把他文件往里面拖动,就可以下载了,命令下载,ls -l可以看当前文件目录,sz 文件名可下载,tab补,rz出上
Linux文件的上和下,FinalShell文件右键可下文件,先选择root文件夹,然后把他文件往里面拖动,就可以下载了,命令下载,ls -l可以看当前文件目录,sz 文件名可下载,tab补,rz出上
|
6月前
|
Linux
Linux部署03---ls命令入门 ls直接用命令是列出目录下的内容,ls命令等同于双击打开文件夹,FinalShell默认的是在home目录下,工作目录
Linux部署03---ls命令入门 ls直接用命令是列出目录下的内容,ls命令等同于双击打开文件夹,FinalShell默认的是在home目录下,工作目录
|
6月前
|
Linux
Linux02---命令基础 Linux命令基础, ls命令入门,ls命令参数和选项,命令行是一种以纯字符操作系统的方式,command命令本身,options命令的细节行为,parameter命令的
Linux02---命令基础 Linux命令基础, ls命令入门,ls命令参数和选项,命令行是一种以纯字符操作系统的方式,command命令本身,options命令的细节行为,parameter命令的
|
7月前
|
存储 数据挖掘 Linux
探索Linux的ls命令:深入解析与实用指南
**探索Linux的`ls`命令:简明指南** `ls`命令用于列出目录内容,是Linux用户的基础工具。它提供灵活的参数定制输出,如 `-l` 显示详细信息,`-a` 显示隐藏文件,`-h` 以易读格式显示大小,`-R` 递归列出子目录。结合其他命令和管道,`ls`能用于数据分析。注意权限和使用最佳实践,如避免多余参数,谨慎使用通配符,并利用`man ls`查阅手册以深入学习。善用`ls`能提升Linux操作效率。