Linux ls 命令进阶:从隐藏文件到递归显示,成为文件浏览大师

哎呦 资料合集

链接:https://pan.quark.cn/s/770d9387db5f

你好,Linux世界的探索者!你已经掌握了 ​​ls -l​​ 的基本用法,能够看懂文件的"体检报告"。但是,​​ls​​ 命令的强大之处远不止于此。它就像一把瑞士军-刀,拥有众多锋利的"刀片"(参数),能帮你应对各种复杂的文件浏览场景。

今天,我们将深入探索 ​​ls​​ 命令的几个核心进阶参数:​​-a​​、​​-R​​、​​-h​​ 和 ​​-d​​。通过丰富的实战案例,你将学会如何查看隐藏文件、递归遍历目录树、人性化地显示文件大小,并最终成为一名真正的文件浏览大师!

一、 揭开神秘面纱:​​-a​​ 参数与隐藏文件

在Linux中,有些重要的配置文件默认是"隐身"的,以防止用户误操作。这些文件被称为隐藏文件。

隐藏规则 :非常简单,任何以 ​​.​​ (点) 开头的文件或目录,都会被视为隐藏文件。

代码案例:创建并查看隐藏文件

复制代码
# 1. 准备一个干净的演示环境
mkdir /tmp/ls_advanced_demo && cd /tmp/ls_advanced_demo

# 2. 创建一个普通文件和一个隐藏文件
touch normal_file.txt
touch .hidden_file.txt

# 3. 创建一个普通目录和一个隐藏目录
mkdir normal_dir
mkdir .hidden_dir

# 4. 直接使用 ls -l 查看,你看到了什么?
ls -l

运行结果:

复制代码
total 4
drwxr-xr-x 2 user user 4096 Nov 21 18:05 normal_dir
-rw-r--r-- 1 user user    0 Nov 21 18:05 normal_file.txt

结果分析 :默认情况下,​​ls​​ 只会显示非隐藏的文件和目录。​​.hidden_file.txt​​ 和 ​​.hidden_dir​​ 仿佛消失了一样。

现在,让我们请出 ​​-a​​ (all) 参数:

复制代码
# 使用 ls -la 查看所有文件
ls -la

运行结果:

复制代码
total 12
drwxr-xr-x 4 user user 4096 Nov 21 18:05 .
drwxr-xr-x 3 user user 4096 Nov 21 18:05 ..
drwxr-xr-x 2 user user 4096 Nov 21 18:05 .hidden_dir
-rw-r--r-- 1 user user    0 Nov 21 18:05 .hidden_file.txt
drwxr-xr-x 2 user user 4096 Nov 21 18:05 normal_dir
-rw-r--r-- 1 user user    0 Nov 21 18:05 normal_file.txt

结果分析 :​​-a​​ 参数让所有隐藏的文件和目录都现出了原形!同时,它还显示了两个特殊的隐藏目录:

  • ​.​:代表当前目录。
  • ​..​:代表上级目录。
二、 深入探索目录树:​​-R​​ 递归显示

当你想查看一个目录及其所有子目录的完整结构时,​​-R​​ (Recursive) 参数就派上用场了。

代码案例:构建并递归显示目录树

复制代码
# 1. 在 normal_dir 中创建一些内容
touch normal_dir/file1.txt
mkdir normal_dir/sub_dir
touch normal_dir/sub_dir/file2.txt

# 2. 使用 ls -R 查看
ls -R

运行结果:

复制代码
.:
normal_dir  normal_file.txt

./normal_dir:
file1.txt  sub_dir

./normal_dir/sub_dir:
file2.txt

结果分析 :​​ls -R​​ 清晰地展示了当前目录 (​​.​​)、​​normal_dir​​ 目录以及 ​​sub_dir​​ 目录下的所有内容,形成了一个直观的树状结构。

参数组合 :​​-R​​ 可以和其他参数完美结合,例如 ​​ls -Ral​​ 会递归地显示所有文件(包括隐藏文件)的详细信息。

三、 让数字更友好:​​-h​​ 人性化显示

面对一长串字节数,比如 ​​1048576​​,你可能需要反应一下才知道它是1MB。​​-h​​ (human-readable) 参数可以自动将文件大小转换为K、M、G等更易读的单位。

代码案例:创建大文件并对比显示效果

复制代码
# 使用 dd 命令创建一个 5MB 的文件
dd if=/dev/zero of=large_file.dat bs=1M count=5

# 1. 使用 ls -l 查看,大小以字节显示
ls -l large_file.dat

# 2. 使用 ls -lh 查看,大小自动转换单位
ls -lh large_file.dat

运行结果:

复制代码
# 不使用 -h
-rw-r--r-- 1 user user 5242880 Nov 21 18:20 large_file.dat

# 使用 -h
-rw-r--r-- 1 user user 5.0M Nov 21 18:20 large_file.dat

结果分析 :​​5.0M​​ 显然比 ​​5242880​​ 更加直观和友好。在日常工作中,强烈推荐使用 ​​ls -lh​​ 或 ​​ll -h​​。

四、 聚焦目录本身:​​-d​​ 参数

这是一个非常实用但容易被忽略的参数。当你对一个目录使用 ​​ls -l​​ 时,它默认显示的是目录内部的内容 。但如果你只想查看目录本身的属性 (比如权限、所有者),就需要 ​​-d​​ (directory) 参数。

代码案例:对比查看目录

复制代码
# 1. 不使用 -d,查看 normal_dir 的内容
ls -l normal_dir

# 2. 使用 -d,只查看 normal_dir 自身的属性
ls -ld normal_dir

运行结果:

复制代码
# ls -l normal_dir 的结果
total 4
-rw-r--r-- 1 user user    0 Nov 21 18:15 file1.txt
drwxr-xr-x 2 user user 4096 Nov 21 18:15 sub_dir

# ls -ld normal_dir 的结果
drwxr-xr-x 3 user user 4096 Nov 21 18:15 normal_dir

结果分析 :区别一目了然!前者列出了 ​​file1.txt​​ 和 ​​sub_dir​​,而后者只显示了 ​​normal_dir​​ 这一行信息。在你需要检查某个目录的权限时,​​ls -ld​​ 是你的不二之选。

五、 更高效的别名:​​ll​​, ​​la​​, ​​l​

很多Linux发行版为了提高效率,预设了一些 ​​ls​​ 的别名:

  • ​ll​:通常等价于 ​ls -alF​​ls -l​,显示详细信息(有时包含隐藏文件和文件类型标识)。
  • ​la​:通常等含于 ​ls -A​,显示隐藏文件,但不包括 ​.​​..​
  • ​l​:一些系统中可能等价于 ​ls -CF​

你可以通过 ​​alias​​ 命令查看你系统中具体的别名设置。

六、 知识小结

|--------------------------|-----------------------------------------------------------------------------|-------------------------------------------------|
| 知识点 | 核心内容 | 考试重点/易混淆点 |
| ​ls​ 常用参数 | ​​-l​​​(详细), ​​-a​​​(所有), ​​-R​​​(递归), ​​-h​​​(人性化), ​​-d​​(目录本身) | 参数可以任意组合,顺序不重要,如 ​​ls -lahR​​ |
| 隐藏文件机制 | 以 ​​.​​ 开头的文件/目录即为隐藏文件 | 必须使用 ​​-a​​​ 或 ​​-A​​ 才能查看,与Windows的属性隐藏不同 |
| 目录属性查看 | ​​-d​​ 参数用于查看目录本身的属性,而非其内容 | ​​ls -l mydir​​​ vs ​​ls -ld mydir​​ 是常见面试题 |
| 文件大小显示 | 默认以字节显示,​​-h​​ 参数自动转换单位(K/M/G) | ​​4.0K​​​ 等价于 ​​4096​​ 字节 |
| 快捷命令别名 | ​​ll​​​ 通常是 ​​ls -l​​​ 或 ​​ls -alF​​ 的别名,极大提高效率 | 不同系统别名可能不同,可用 ​​alias​​ 命令查看 |


相关推荐
大树883 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
LDR0063 小时前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术3 小时前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园3 小时前
C++20 Modules 模块详解
java·开发语言·spring
霸道流氓气质3 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush43 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5204 小时前
Linux 11 动态监控指令top
linux
小宇宙Zz4 小时前
Maven依赖冲突
java·服务器·maven
swordbob4 小时前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio