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​​ 命令查看 |


相关推荐
_清浅2 小时前
计算机网络【第二章-物理层】
服务器·网络·计算机网络
**之火2 小时前
中止 Web 请求新方式 - AbortController API
开发语言·前端·javascript
技术猴小猴2 小时前
如何使用Python实现UDP广播
开发语言·python·udp
我要成为c嘎嘎大王2 小时前
【Linux】进程的概念和状态
linux·运维·服务器
峥嵘life3 小时前
Android16 adb投屏工具Scrcpy介绍
android·开发语言·python·学习·web安全·adb
jndingxin3 小时前
算法面试(6)------mAP 是什么?如何计算?P-R 曲线怎么看?
开发语言·算法
0xCode 小新3 小时前
【C语言内存函数完全指南】:memcpy、memmove、memset、memcmp 的用法、区别与模拟实现(含代码示例)
linux·c语言·人工智能·深度学习·机器学习·容器·内存函数
EEE1even3 小时前
VScode通过跳板机连接内网服务器
服务器·ide·vscode
hweiyu003 小时前
Linux 命令:scp
linux·运维·服务器