在 Linux 系统中,一切资源都以文件和目录的形式存在。无论你是想查看配置、编辑代码,还是管理系统,第一步都是能够自由地在文件系统树中“走动”,并熟练地创建、复制、移动或删除文件和目录。本节介绍最常用的导航和管理命令,它们是你日常操作的基础。
1. 知道你在哪:pwd
打开终端后,你始终位于某个“当前工作目录”中。执行 pwd(print working directory)可以立即显示完整路径,避免在深层目录中迷路。
$ pwd
/home/alice
2. 查看目录内容:lsls 是最常用的命令之一,用来列出目录中的文件和子目录。
ls— 简单列出可见文件ls -l— 以长格式显示,包含权限、所有者、大小、修改时间ls -a— 显示所有文件,包括隐藏文件(以.开头的文件)ls -lh— 人类可读的文件大小(如 1.5K, 3.2M)ls -lt— 按修改时间排序,最新的在最前
常用的组合:
$ ls -lah
这条命令会以长格式、人类可读的大小,列出当前目录下的所有文件(含隐藏文件),方便你一眼看出文件结构。
3. 切换目录:cdcd(change directory)让你移动到其他目录。
cd /etc— 去/etc目录(绝对路径)cd ..— 返回上一级目录cd ~或cd— 直接回到自己的家目录(home directory)cd -— 回到上次所在的目录,在多个目录间切换时特别方便
路径有绝对和相对之分:以 / 开头的为绝对路径,从根开始;不以 / 开头的是相对于当前目录的路径。高效导航的关键就是善用 Tab 键自动补全,避免手动输入长文件名。
4. 创建目录:mkdirmkdir(make directory)用来创建空目录。
$ mkdir projects
常用 -p 选项一键创建多层目录,即使父目录尚不存在也会自动建立:
$ mkdir -p projects/webapp/src
5. 创建空文件或更新时间戳:touchtouch 原本用来更新文件的访问和修改时间,如果没有指定文件则会创建一个空文件。
$ touch notes.txt # 创建空文件 notes.txt
$ touch existing.conf # 更新 existing.conf 的时间戳
在测试或编写脚本时,touch 常用来快速生成占位文件。
6. 复制文件或目录:cpcp(copy)用来复制文件或目录。
- 复制文件:
cp 源文件 目标路径 - 复制目录:必须加
-r(递归)选项
$ cp report.txt /tmp/backup_repo.txt # 复制并重命名
$ cp -r project/ /backup/project/ # 复制整个目录
常用选项:
-i:覆盖前询问确认,避免误操作-p:保留原始文件的权限、时间戳等属性-v:显示复制过程
7. 移动或重命名:mvmv(move)既能移动文件/目录,也能实现重命名。
$ mv oldname.txt newname.txt # 重命名
$ mv file.txt /target/directory/ # 移动到目标目录
$ mv source_dir/ dest_dir/ # 移动目录(无需 -r)
移动操作在同一文件系统内很快,因为只修改元数据;跨文件系统则会进行“复制+删除”。如果目标已有同名文件,会被直接覆盖,建议常用 -i 选项开启交互确认。
8. 删除文件或目录:rm 和 rmdirrm(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. 查看文件类型与基本信息:file 和 stat
file通过检查内容来判断文件类型,不依赖后缀名:
$ file document.pdf
document.pdf: PDF document, version 1.4
$ file unknown_file
unknown_file: ASCII text
stat显示详细的文件元数据,包括大小、权限、各时间戳、设备号等,排查时报时常用。
10. 快速查找文件:find 与 locate
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.csv到report9.csv
实际使用中,可以先 echo *.txt 查看通配符展开的结果,确认无误后再执行 rm、cp 等可能造成改变的命令。
掌握了这些基础导航与管理命令,你就拥有了在 Linux 文件系统里自由行动和操作文件的基本能力。日常工作中,这些命令的高频使用会让它们成为你的肌肉记忆,也为后续学习更高级的权限管理、磁盘挂载和脚本自动化打下坚实基础。