跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

Linux 文件系统基础操作与路径管理

Linux 文件系统基础操作涵盖目录查看、文件管理及路径导航。核心命令包括 ls 用于列出文件及权限详情,pwd 显示当前路径,cd 切换目录。文件操作涉及 touch 创建或更新时间戳,mkdir 创建目录,rmdir 和 rm 删除空目录或强制删除文件。stat 和 file 分别用于查看详细属性及检测文件类型。路径分为绝对路径(从根目录开始)和相对路径(基于当前位置),配合 .、..、~ 等特殊符号可高效导航。掌握这些基础操作是进行系统管理和脚本编写的前提,需注意 rm -rf 的危险性及权限控制。

独立开发者发布于 2026/3/16更新于 2026/10/24140 浏览
Linux 文件系统基础操作与路径管理

一、目录与文件查看:探索文件系统

1. ls 命令:查看文件列表(重要)

ls(list 的缩写)是 Linux 中最常用的命令之一,用于显示目录或文件的信息。其灵活的参数组合能满足各种查看需求:

# 显示当前目录下的文件和目录
ls
# 以列表形式显示详细信息(包含权限、所有者、时间等)
ls -l
# 显示所有文件,包括隐藏文件(以.开头的文件)
ls -a
# 同时显示详细信息和隐藏文件
ls -la
# 查看目录属性而非内容
ls -d 目录名

参数详解:

  • -l:long list format,显示详细信息,包括:
    • 权限(如 -rwxr-xr--)
    • 硬链接数
    • 所有者
    • 所属组
    • 大小(默认字节,可加 -h 转为人类可读格式)
    • 修改时间
    • 文件名
  • -a:all,显示所有文件,包括 .(当前目录)和 ..(上级目录)
  • -h:human-readable,文件大小以 K/M/G 为单位显示
  • -t:按修改时间排序,最新的在前
  • -R:recursive,递归显示子目录内容

实战示例:

# 查看/etc 目录下的所有文件,按大小排序
ls -lSh /etc
# 查看当前目录下所有以.sh 结尾的文件
ls *.sh
# 查看/usr/bin 目录的属性
ls -ld /usr/bin

ls -l 可以简写为 ll。

重要概念:

  • 文件类型标识:ls -l 输出的第一个字符表示文件类型:
    • -:普通文件
    • d:目录
    • l:符号链接(软链接)
    • b:块设备文件(如硬盘)
    • c:字符设备文件(如键盘、串口)
  • 隐藏文件:Linux 中以.开头的文件为隐藏文件,常用于存储配置文件(如 .bashrc)
2. pwd:显示当前所在位置

pwd(print working directory)命令用于显示当前工作目录的绝对路径,是路径操作的基础:

# 显示当前路径
pwd
# 示例输出:/home/user/docs/project

路径格式特点:

  • Linux 使用 / 作为路径分隔符,与 Windows 的 \ 不同
  • 路径中每个 / 分隔的部分必须是一个目录,除了最后的文件名
  • 根目录用单个 / 表示,是文件系统的顶级目录

应用场景:

  • 不确定当前位置时快速定位
  • 构建绝对路径时获取当前目录前缀
  • 与其他命令结合使用,如 cd $(pwd)/subdir
3. cd:进入指定路径

cd(change directory)命令用于切换工作目录,是文件系统操作中使用最频繁的命令之一:

# 切换到指定目录
cd 目录路径
# 切换到根目录
cd /
# 切换到用户家目录
cd ~
# 切换到上一次所在目录
cd -
# 切换到上级目录
cd ..

路径切换技巧:

  • 绝对路径:从根目录 / 开始的完整路径,如 /usr/local/bin
  • 相对路径:以当前目录为参照的路径,如 ../data/logs(上级目录的 data/logs)
  • 特殊符号:
    • .:当前目录,如 cd . 等价于 cd
    • ..:上级目录,如 cd ../
    • ~:用户家目录,root 用户为 /root,普通用户为 /home/用户名
    • -:上一次目录,如 cd - 可在两个目录间来回切换

实战示例:

# 从/home/user 切换到/usr/share/doc,使用绝对路径
cd /usr/share/doc
# 从当前目录切换到上级目录的 src 目录,使用相对路径
cd ../src
# 快速回到家目录
cd ~

路径选择原则:

  • 系统脚本或配置文件中使用绝对路径,确保路径稳定性
  • 日常交互操作使用相对路径,提高输入效率
  • 不确定路径时先用 ls 查看,再用 cd 切换

二、文件与目录操作:创建、修改与删除的基本技能

1. touch:创建空文件与更新时间戳

touch 命令主要用于创建空文件,也可更新文件的时间戳:

# 创建空文件
touch 文件名
# 同时创建多个文件
touch 文件 1 文件 2 文件 3
# 更新文件的访问和修改时间
touch 已存在的文件

时间戳概念:

  • touch 会影响文件的三个时间属性(可通过 stat 命令查看):
    • 访问时间(atime):最后一次读取文件的时间
    • 修改时间(mtime):最后一次修改文件内容的时间
    • 状态时间(ctime):最后一次修改文件属性(如权限、所有者)的时间
  • 执行 touch 文件名 时,会将 atime 和 mtime 更新为当前时间,ctime 在文件属性不变时不更新

应用场景:

  • 创建配置文件的空模板:touch config.ini
  • 刷新文件时间戳,避免被自动清理脚本删除
  • 与其他命令结合生成指定时间的文件(通过 -t 参数指定时间)
2. mkdir:目录创建

mkdir(make directory)命令用于创建新目录,支持单目录和多级目录创建:

# 创建单个目录
mkdir 目录名
# 在指定路径创建目录
mkdir /路径/目录名
# 同时创建多个目录
mkdir 目录 1 目录 2 目录 3
# 递归创建多级目录
mkdir -p 目录 1/子目录 1/孙目录 1

参数说明:

  • -p:parents,当父目录不存在时自动创建,避免多级目录创建时的错误
  • -m:mode,创建目录时指定权限,如 mkdir -m 755 目录名
  • -v:verbose,显示创建过程

实战示例:

# 在当前目录创建项目结构
mkdir -p src/{main,test}/java/com/example
# 等价于创建 src/main/java/com/example 和 src/test/java/com/example
# 创建权限为 700 的私有目录
mkdir -m 700 private_dir
3. rmdir 与 rm:谨慎使用的删除工具
(1)rmdir:仅删除空目录
# 删除空目录
rmdir 目录名
# 删除指定路径的空目录
rmdir /路径/目录名
# 递归删除空目录(需目录为空)
rmdir -p 目录 1/子目录 1

限制条件:

  • 只能删除空目录,非空目录会报错
  • 一次只能删除一个目录(除非用 -p 递归)
  • 不支持通配符批量删除

rmdir 实际使用比较少,因为受到诸多限制,实际中还是以 rm 为主。

(2)rm:强大的删除命令
# 删除文件
rm 文件名
# 删除目录(需加-r 参数)
rm -r 目录名
# 强制删除,不询问
rm -f 文件名
# 递归强制删除(危险!)
rm -rf 目录名

危险参数组合:

  • rm -rf /:删除根目录下的所有文件,会导致系统崩溃,绝对禁止执行!
  • rm *:删除当前目录下的所有文件,使用前务必用 ls 确认
  • rm -i:交互式删除,每次删除前询问,建议日常使用

安全删除建议:

  • 先使用 ls -la 确认要删除的内容
  • 对重要文件先备份,再删除
  • 避免在根目录或系统目录下使用 rm 命令
  • 可安装 trash-cli 工具,实现类似回收站的功能
4. stat 与 file:查看文件属性与类型
(1)stat:查看文件详细状态
# 查看文件或目录的详细状态
stat 文件名/目录名

输出示例:

 File: 'test.txt' Size: 1024 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 1234567 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ user) Gid: ( 1000/ group)
Access: 2025-05-29 10:00:00 Modify: 2025-05-29 10:01:00 Change: 2025-05-29 10:02:00 Birth: -

关键字段:

  • Size:文件大小
  • Inode:索引节点号,Linux 通过 inode 识别文件
  • Access:权限模式
  • Access/Modify/Change:三种时间戳
  • regular file:文件类型
(2)file:检测文件类型
# 检测文件类型
file 文件名

示例输出:

# 文本文件
file README.txt
# 输出:README.txt: ASCII text
# 二进制文件
file /bin/ls
# 输出:/bin/ls: ELF 64-bit LSB executable, x86-64...
# 压缩文件
file archive.tar.gz
# 输出:archive.tar.gz: gzip compressed data...

重要特性:

  • Linux 文件类型由内容决定,而非后缀名
  • 可识别各种格式的文件,包括二进制、文本、压缩包、图像等
  • 后缀名主要用于用户识别和软件关联,如 .txt 表示文本文件

三、路径管理基础:绝对路径与相对路径的选择

1. 绝对路径:从根出发的精确导航

定义: 从根目录 / 开始的完整路径,包含从根到目标文件的所有目录层级。

格式:

/目录 1/目录 2/.../文件名

示例:

  • /usr/bin/ls:系统命令 ls 的绝对路径
  • /home/user/docs/project/README.md:项目 README 文件的路径

适用场景:

  • 系统脚本和配置文件中,确保路径不随当前目录变化
  • 跨目录引用文件,如 ln -s /usr/share/doc/file.txt /tmp/link.txt
  • 编写需要明确路径的文档或教程
2. 相对路径:以当前为中心的路径表示法

定义: 以当前工作目录为参照的路径,使用 .(当前目录)和 ..(上级目录)表示相对位置。

格式:

[./][../]目录 1/目录 2/.../文件名

示例:

  • 当前目录为 /home/user,要访问 /home/user/docs:
    • 绝对路径:/home/user/docs
    • 相对路径:./docs(. 可省略,即 docs)
  • 当前目录为 /home/user/project,要访问 /home/user/docs:
    • 相对路径:../docs(上级目录的 docs)

适用场景:

  • 日常交互操作,减少输入量
  • 在项目目录中导航,如 cd src/main/java
  • 与其他命令结合使用,如 ls ../../data
3. 特殊符号:路径导航的快捷方式
(1).:当前目录
  • 显式表示当前目录,如 cd . 等价于 cd
  • 用于明确路径关系,如 cp ./file.txt /tmp
(2)..:上级目录
  • 切换到当前目录的父目录,如 cd ..
  • 多级回退,如 cd ../../(回退两级)
(3)~:用户家目录
  • 快速回到家目录,如 cd ~
  • 访问家目录下的文件,如 touch ~/documents/report.txt
(4)-:上一次目录

在两个目录间来回切换,如:

cd /usr/local
cd /var/log
cd - # 回到/usr/local
cd - # 回到/var/log
4. 路径规划最佳实践
(1)路径书写原则
  • 系统文件使用绝对路径,确保稳定性
  • 脚本中使用 $(dirname $0) 获取脚本所在目录,避免硬编码路径
  • 目录名命名规范:使用小写字母、下划线或短横线,避免空格和特殊字符
(2)避免路径错误的技巧
  • 使用 tab 键补全路径,减少输入错误
  • 不确定路径时先用 ls 查看,再操作

复杂路径可分步骤切换,如:

cd /usr
cd local
cd bin
(3)路径相关命令组合
  • cd + pwd:确认当前位置
  • ls + 路径:查看指定路径的内容
  • find + 路径:在指定路径下搜索文件

四、扩展知识:文件系统的底层逻辑与实用工具

1. Linux 文件类型与后缀名的真相
(1)文件类型的本质
  • Linux 通过 inode 节点中的文件类型标识确定文件类型,而非后缀名
  • 常见文件类型:
    • 普通文件(-):文本、二进制、图片等
    • 目录(d):包含其他文件和目录
    • 符号链接(l):指向其他文件或目录的快捷方式
    • 块设备(b)和字符设备(c):硬件设备的抽象
(2)后缀名的作用
  • 方便用户识别文件内容(如 .txt 表示文本,.jpg 表示图片)
  • 软件通过后缀名关联默认打开方式(如 .sh 文件默认用 bash 执行)
  • 部分命令会根据后缀名做特殊处理(如 grep 对二进制文件的处理)
(3)打破后缀名迷信

可执行权限由 x 权限位决定,与后缀名无关:

chmod +x text.exe
./text.exe # 若文件内容非可执行程序,会报错

可将文本文件重命名为 .exe,内容不变:

echo "Hello Linux" > text.txt
mv text.txt text.exe
cat text.exe # 仍显示文本内容
2. tree:树形结构可视化工具

tree 命令以树形结构展示文件和目录,直观呈现文件系统层级:

# 安装 tree(CentOS/RHEL 系统)
yum install -y tree
# 显示当前目录的树形结构
tree
# 只显示目录
tree -d
# 显示指定深度的目录(-L 2 表示两层)
tree -L2
# 排除指定文件或目录
tree --exclude "*.log"

输出示例:

.
├── docs
│   ├── design
│   │   └── architecture.md
│   └── user_guide
│       ├── chapter1.md
│       └── chapter2.md
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           ├── App.java
│   │   │           └── Util.java
│   │   └── resources
│   │       └── config.properties
│   └── test
│       └── java
│           └── com
│               └── example
│                   └── AppTest.java
└── README.md

实用场景:

  • 快速了解项目目录结构
  • 展示文件系统层级关系
  • 与 grep 结合查找特定类型文件:tree | grep ".java"

注意:使用 tree 查看目录,如果包含文件较多时,可能会刷屏,按住 CTRL+C 即可退出。

3. 路径操作中的常见错误与解决方案
(1)路径分隔符错误
  • 问题: 在 Linux 中使用 Windows 的 \ 作为分隔符
  • 解决方案: 统一使用 /,或用转义符 \ 转义(如 cd c:\program files 在 Linux 中无效)
(2)权限不足
  • 问题: 尝试访问没有权限的目录,提示 Permission denied
  • 解决方案:
    • 用 su 或 sudo 获取管理员权限
    • 请文件所有者修改权限(chmod 或 chown)
(3)路径过长
  • 问题: 路径长度超过系统限制(Linux 默认最大路径长度为 4096 字节)
  • 解决方案:
    • 使用短文件名和目录名
    • 创建符号链接缩短路径:ln -s /long/path/ to /short/link

目录

  1. 一、目录与文件查看:探索文件系统
  2. 1. ls 命令:查看文件列表(重要)
  3. 显示当前目录下的文件和目录
  4. 以列表形式显示详细信息(包含权限、所有者、时间等)
  5. 显示所有文件,包括隐藏文件(以.开头的文件)
  6. 同时显示详细信息和隐藏文件
  7. 查看目录属性而非内容
  8. 查看/etc 目录下的所有文件,按大小排序
  9. 查看当前目录下所有以.sh 结尾的文件
  10. 查看/usr/bin 目录的属性
  11. 2. pwd:显示当前所在位置
  12. 显示当前路径
  13. 示例输出:/home/user/docs/project
  14. 3. cd:进入指定路径
  15. 切换到指定目录
  16. 切换到根目录
  17. 切换到用户家目录
  18. 切换到上一次所在目录
  19. 切换到上级目录
  20. 从/home/user 切换到/usr/share/doc,使用绝对路径
  21. 从当前目录切换到上级目录的 src 目录,使用相对路径
  22. 快速回到家目录
  23. 二、文件与目录操作:创建、修改与删除的基本技能
  24. 1. touch:创建空文件与更新时间戳
  25. 创建空文件
  26. 同时创建多个文件
  27. 更新文件的访问和修改时间
  28. 2. mkdir:目录创建
  29. 创建单个目录
  30. 在指定路径创建目录
  31. 同时创建多个目录
  32. 递归创建多级目录
  33. 在当前目录创建项目结构
  34. 等价于创建 src/main/java/com/example 和 src/test/java/com/example
  35. 创建权限为 700 的私有目录
  36. 3. rmdir 与 rm:谨慎使用的删除工具
  37. (1)rmdir:仅删除空目录
  38. 删除空目录
  39. 删除指定路径的空目录
  40. 递归删除空目录(需目录为空)
  41. (2)rm:强大的删除命令
  42. 删除文件
  43. 删除目录(需加-r 参数)
  44. 强制删除,不询问
  45. 递归强制删除(危险!)
  46. 4. stat 与 file:查看文件属性与类型
  47. (1)stat:查看文件详细状态
  48. 查看文件或目录的详细状态
  49. (2)file:检测文件类型
  50. 检测文件类型
  51. 文本文件
  52. 输出:README.txt: ASCII text
  53. 二进制文件
  54. 输出:/bin/ls: ELF 64-bit LSB executable, x86-64...
  55. 压缩文件
  56. 输出:archive.tar.gz: gzip compressed data...
  57. 三、路径管理基础:绝对路径与相对路径的选择
  58. 1. 绝对路径:从根出发的精确导航
  59. 2. 相对路径:以当前为中心的路径表示法
  60. 3. 特殊符号:路径导航的快捷方式
  61. (1).:当前目录
  62. (2)..:上级目录
  63. (3)~:用户家目录
  64. (4)-:上一次目录
  65. 4. 路径规划最佳实践
  66. (1)路径书写原则
  67. (2)避免路径错误的技巧
  68. (3)路径相关命令组合
  69. 四、扩展知识:文件系统的底层逻辑与实用工具
  70. 1. Linux 文件类型与后缀名的真相
  71. (1)文件类型的本质
  72. (2)后缀名的作用
  73. (3)打破后缀名迷信
  74. 2. tree:树形结构可视化工具
  75. 安装 tree(CentOS/RHEL 系统)
  76. 显示当前目录的树形结构
  77. 只显示目录
  78. 显示指定深度的目录(-L 2 表示两层)
  79. 排除指定文件或目录
  80. 3. 路径操作中的常见错误与解决方案
  81. (1)路径分隔符错误
  82. (2)权限不足
  83. (3)路径过长

更多推荐文章

查看全部
  • Linux 基础命令与 Java 项目部署实战
  • C++ map 容器:键值对有序管理与高效检索
  • 基于 Stable Diffusion v1.5 的企业产品概念图批量生成实践
  • C++中 memcpy 和赋值拷贝的核心区别
  • Python 使用 Turtle 库实现动态烟花模拟效果
  • 无人机“黑飞”正式入法:2026 年 1 月 1 日起违规飞行将面临拘留
  • Qwen3-0.6B 轻量级模型思考链推理实战
  • 环形链表检测、数组交集与随机链表复制
  • OpenDroneMap 实战指南:从无人机影像生成地理数据
  • CCF-CSP 第 38 次认证:机器人路径搜索题解
  • 队列的数组模拟与 STL queue 实战:从原理到代码实现
  • Arthas+IDEA 实战:Java 线上问题排查与 Spring Boot 落地
  • C++ GESP 七级核心考点与算法实战指南
  • Active Event Alignment for Monocular Distance Estimation 论文研读
  • OpenClaw v2026.3.8 全平台部署与本地模型对接教程
  • Minecraft Java 版服务器本地搭建与内网穿透教程
  • 新手必看!ClaudeCode+Figma-MCP 前端代码 1:1 还原 UI 的入门指南
  • 基于DeepSeek和Cursor构建智能代码审查工具实战
  • 基于 Java 实现数九天精准计算:节气算法与工程化落地
  • AI 辅助编程:如何利用 GitHub Copilot 等工具提升开发效率

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online