马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
一、ll 到底是什么
先说一个容易搞错的事实:ll 不是 Linux 的基本命令,它只是 ls -l 的一个别名。
有些发行版(比如 Ubuntu 的部分场景)默认并不带 ll,直接敲会提示命令找不到,得写全 ls -l。想长期省事,就自己配一个别名。
怎么配
打开 ~/.bashrc,找到被注释掉的那行:
#alias ll='ls -l'
把前面的 # 去掉:
alias ll='ls -l'
改完必须关掉当前终端重开才能生效(也可以用 source ~/.bashrc 临时生效一下)。
注意:上面改的只是当前普通用户。切到 root 后如果又提示找不到,是因为你只改了个人用户的设置——对 root 也做同样的操作即可,比如编辑 /root/.bashrc。
由此还能举一反三:任何命令都能通过修改 ~/.bashrc 加别名,比如 alias ll='ls -lh'(顺手带人读单位)、alias ll='ls -alh'(连隐藏文件一起看)。 aliases 段一般放在 .bashrc 靠后的位置,改之前 `grep alias ~/.bashrc` 看一眼已有的,免得覆盖。
二、ll 输出的每一列怎么看
看一条典型输出:
drwxr-xr-x 2 root root 48 2023-11-20 16:34 test/
这条输出其实有七到九列,从前往后拆开讲。
第 1 列:文件属性(10 个字符)
第一个字符表示文件类型:
-:普通文件
d:目录(directory 的缩写)
l:符号链接(软链接)
b:块设备文件(如磁盘 /dev/sda)
c:字符设备文件(如终端 /dev/tty)
- 其他还有
p 命名管道、s 本地套接字
后面 9 个字符分 3 组,每组 3 位,依次是 owner / group / others 的读、写、执行权限。以 -rwxr-xr-x 为例:
rwx (Owner) r-x (Group) r-x (Other)
意思是:属主可读可写可执行、属组可读不可写可执行、其他人可读不可写可执行。
另外要留意一点:某些程序在"执行"这一位上显示的不是 x 而是 s,这就是 SUID/SGID 位(setuid/setgid)——执行该程序的人会临时获得与属主(通常是 root)相同的权限,常见于 passwd 这类系统管理程序。看到 s 别以为是坏了。
第 2 列:硬链接数
普通文件自然是 1;目录这一列是该目录下的子条目数(含 . 和 ..)。这一列是判断有没有硬链接、目录里东西多不多的直观指标。
第 3 列:属主
文件或目录的拥有者。你待在自己 Home 里看,这一列基本都是你自己的账号名。
第 4 列:属组
所属的用户组。一个用户可以属于多个组,不过大部分人只属于一个;只有管理员想给特殊权限时才会额外加组。
第 5 列:文件大小
默认单位是字节(byte)。空目录通常显示 1024(目录本身占一个块)。想换成直观单位可以加 -h:
1G = 1024M = 1024*1024 KB = 1024*1024*1024 B
第 6 列:最后修改时间
格式是"月 日 时:分",例如 Nov 20 16:34。想看精确到秒的完整时间用 ls -l --time-style=full-iso,或者直接用 stat 文件名 看 atime/mtime/ctime。
第 7 列(及以后):文件名
还想看隐藏文件(以 . 开头的)就加 -a。
三、补充说明:后面那些看不见的列
新一点的发行版(RHEL/CentOS 7+ 等)在 ls -l 输出里还会多几个你可能没注意的标记:
- SELinux 上下文:文件名后面跟一个
. 或空格再带一串 unconfined_u bject_r:admin_home_t:s0,那是 SELinux 的 context,关掉 SELinux 或者用 ls -Z 才常见。
- ACL 标记:权限位末尾出现
+,表示这个文件还配了访问控制列表(setfacl),权限不止 UGO 那九位。用 getfacl 文件名 看。
四、ll 显示的大小是什么单位
ll 默认显示的是字节(B)。文件一大,屏幕上就是一串长数字,不好读。加 -h(human-readable)就行:
ls -alh
# 或者用自己的别名
alias ll='ls -alh'
-h 之后会用 G、M、K 来显示,比如 4.0K、512M、2.1G。-a 显示隐藏文件,-l 长格式,-h 人类可读——三个单字母组合起来是最高频的用法。
五、ls 常用参数速查
| 参数 | 作用 |
-l | 长格式,显示权限、属主、大小、时间 |
-a | 显示包括 . 和 .. 在内的隐藏文件 |
-h | 文件大小用 K/M/G 显示(通常配 -l 用) |
-t | 按修改时间排序,最新的在前 |
-r | 倒序(配合 -t 看最旧的) |
-S | 按文件大小排序,大的在前(找大文件必备) |
-R | 递归列出子目录 |
-i | 显示 inode 号 |
-F | 给不同类型加标记:目录加 /、可执行加 *、链接加 @ |
-k | 大小按 KB 显示 |
六、几个实战组合
ls -lrt # 按时间倒序,看最近被改过的文件(最旧在最前)
ls -lhS # 按大小排序,找当前目录最大的几个文件
ls -la ~ # 看 Home 下所有文件(含隐藏),排查 .ssh/.bashrc 有没有
ls -l -d /etc/nginx # 只显示目录本身而不是里面的内容(-d 看属性用)
ls -l --time-style=long-iso # 时间显示成 2023-11-20 16:34
找"哪个目录最占地方"时,ls -lhS 只能看一层,真要排全盘得用 du -sh * 或 ncdu,那是后话了。
小结
ll 就是 ls -l 的别名,在 ~/.bashrc 里把 #alias ll='ls -l' 的 # 去掉即可,root 要单独配一份。
输出七列的含义:①权限 10 字符(类型 + owner/group/others 的 rwx,s 是 SUID/SGID)②硬链接数 ③属主 ④属组 ⑤大小(默认字节)⑥最后修改时间 ⑦文件名。实际使用记住三连击 ls -alh:长格式 + 含隐藏 + 人读单位,再加一个 -S 按大小排,日常排障基本够用。
(本文由 qidao123.com企服评测-应用市场 编辑提示整理:示例基于 GNU coreutils 的 ls,适用于 Ubuntu / Debian / CentOS / openEuler 等主流发行版。) |