人人都会AI编程

8.1 基础导航与管理

更新时间:2026-07-12

在 Linux 系统中,一切资源都以文件和目录的形式存在。无论你是想查看配置、编辑代码,还是管理系统,第一步都是能够自由地在文件系统树中“走动”,并熟练地创建、复制、移动或删除文件和目录。本节介绍最常用的导航和管理命令,它们是你日常操作的基础。

1. 知道你在哪:pwd
打开终端后,你始终位于某个“当前工作目录”中。执行 pwd(print working directory)可以立即显示完整路径,避免在深层目录中迷路。

$ pwd
/home/alice

2. 查看目录内容:ls
ls 是最常用的命令之一,用来列出目录中的文件和子目录。

  • ls — 简单列出可见文件
  • ls -l — 以长格式显示,包含权限、所有者、大小、修改时间
  • ls -a — 显示所有文件,包括隐藏文件(以 . 开头的文件)
  • ls -lh — 人类可读的文件大小(如 1.5K, 3.2M)
  • ls -lt — 按修改时间排序,最新的在最前

常用的组合:

$ ls -lah

这条命令会以长格式、人类可读的大小,列出当前目录下的所有文件(含隐藏文件),方便你一眼看出文件结构。

3. 切换目录:cd
cd(change directory)让你移动到其他目录。

  • cd /etc — 去 /etc 目录(绝对路径)
  • cd .. — 返回上一级目录
  • cd ~cd — 直接回到自己的家目录(home directory)
  • cd - — 回到上次所在的目录,在多个目录间切换时特别方便

路径有绝对和相对之分:以 / 开头的为绝对路径,从根开始;不以 / 开头的是相对于当前目录的路径。高效导航的关键就是善用 Tab 键自动补全,避免手动输入长文件名。

4. 创建目录:mkdir
mkdir(make directory)用来创建空目录。

$ mkdir projects

常用 -p 选项一键创建多层目录,即使父目录尚不存在也会自动建立:

$ mkdir -p projects/webapp/src

5. 创建空文件或更新时间戳:touch
touch 原本用来更新文件的访问和修改时间,如果没有指定文件则会创建一个空文件。

$ touch notes.txt          # 创建空文件 notes.txt
$ touch existing.conf      # 更新 existing.conf 的时间戳

在测试或编写脚本时,touch 常用来快速生成占位文件。

6. 复制文件或目录:cp
cp(copy)用来复制文件或目录。

  • 复制文件:cp 源文件 目标路径
  • 复制目录:必须加 -r(递归)选项
$ cp report.txt /tmp/backup_repo.txt    # 复制并重命名
$ cp -r project/ /backup/project/       # 复制整个目录

常用选项:

  • -i:覆盖前询问确认,避免误操作
  • -p:保留原始文件的权限、时间戳等属性
  • -v:显示复制过程

7. 移动或重命名:mv
mv(move)既能移动文件/目录,也能实现重命名。

$ mv oldname.txt newname.txt          # 重命名
$ mv file.txt /target/directory/      # 移动到目标目录
$ mv source_dir/ dest_dir/            # 移动目录(无需 -r)

移动操作在同一文件系统内很快,因为只修改元数据;跨文件系统则会进行“复制+删除”。如果目标已有同名文件,会被直接覆盖,建议常用 -i 选项开启交互确认。

8. 删除文件或目录:rmrmdir
rm(remove)删除文件或目录。删除目录必须加 -r(递归),但 rm -r 权限极大,容易误删,务必谨慎。

  • rm file.txt — 删除文件
  • rm -r directory/ — 删除目录及其内容
  • rm -f file.log — 强制删除,不提示确认(无二次机会)

对于空目录,可以用更安全的 rmdir 命令,它只能删除空目录,不会造成连锁删除。

$ rmdir empty_folder/

为降低风险,建议养成使用 rm -i(每次删除前确认)的习惯,或先使用 ls 确认要删除的文件。特别注意sudo rm -rf / 会尝试删除整个系统,永远不要执行。

9. 查看文件类型与基本信息:filestat

  • file 通过检查内容来判断文件类型,不依赖后缀名:
$ file document.pdf
document.pdf: PDF document, version 1.4
$ file unknown_file
unknown_file: ASCII text
  • stat 显示详细的文件元数据,包括大小、权限、各时间戳、设备号等,排查时报时常用。

10. 快速查找文件:findlocate

  • find 是实时搜索,功能强大但相对消耗资源。它会遍历指定目录,根据文件名、大小、时间等条件查找。
  $ find /home -name "*.log"          # 按文件名查找
  $ find /var/log -mtime -7           # 查找7天内修改过的文件
  $ find /tmp -type d -name "cache"   # 查找名为cache的目录
  

还可以添加 -exec 对找到的文件执行命令,如删除所有 .tmp 文件:

  $ find . -name "*.tmp" -exec rm {} \;
  
  • locate 则是通过预建的数据库快速搜索,比 find 快得多,适合查找已知文件名,但可能不包含最近新增的文件。使用前可用 updatedb 更新数据库(通常系统会自动执行)。
  $ locate nginx.conf
  

11. 通配符助你批量操作
Shell 提供了强大的通配符(globbing)功能,让一条命令可以匹配多个文件:

  • 匹配任意长度的任意字符,例如 .txt 匹配所有文本文件
  • ? 匹配任意单个字符,例如 file?.log 匹配 file1.log, fileA.log
  • [abc] 匹配方括号内的任意一个字符,例如 report[0-9].csv 匹配 report0.csvreport9.csv

实际使用中,可以先 echo *.txt 查看通配符展开的结果,确认无误后再执行 rmcp 等可能造成改变的命令。

掌握了这些基础导航与管理命令,你就拥有了在 Linux 文件系统里自由行动和操作文件的基本能力。日常工作中,这些命令的高频使用会让它们成为你的肌肉记忆,也为后续学习更高级的权限管理、磁盘挂载和脚本自动化打下坚实基础。