文件系统管理
本节介绍 Linux 中最常见的文件和目录操作。初学者最容易出错的是路径和删除命令,执行前请先确认当前位置。
路径基础
Linux 的文件系统从根目录 / 开始,所有文件和目录都位于这棵目录树中。
| 路径类型 | 示例 | 说明 |
|---|---|---|
| 绝对路径 | /usr/share/doc | 从根目录 / 开始写出的完整路径 |
| 相对路径 | ../man | 相对于当前目录的路径 |
| 家目录路径 | ~ | 当前用户的 home 目录 |
例如当前目录是 /usr/share/doc,如果要进入 /usr/share/man,可以使用:
cd ../man这里的 .. 表示上一级目录。
pwd
pwd 用于查看当前所在目录的绝对路径。
pwd常见用途:
| 用法 | 说明 |
|---|---|
pwd | 显示当前工作目录 |
示例:
$ pwd
/home/aether/projectcd
cd 用于切换当前工作目录。
切换到指定目录:
cd /home/user返回上一级目录:
cd ..回到当前用户家目录:
cd ~回到上一次所在目录:
cd -常见用法:
| 用法 | 说明 |
|---|---|
cd /path/to/dir | 切换到指定绝对路径 |
cd dirname | 切换到当前目录下的子目录 |
cd .. | 返回上一级目录 |
cd ~ | 回到当前用户家目录 |
cd - | 回到上一次所在目录 |
ls
ls 用于列出目录中的文件和子目录。
查看当前目录:
ls以长格式显示:
ls -l显示隐藏文件:
ls -a查看指定目录:
ls /home/user常用参数:
| 参数 | 说明 |
|---|---|
-l | 长格式显示权限、用户、大小、时间 |
-h | 与 -l 搭配,大小以易读单位显示 |
-a | 显示隐藏文件 |
-t | 按修改时间排序 |
-r | 反向排序 |
常用组合:
ls -lh
ls -lah
ls -ltrtree
tree 用于以树状结构显示目录内容,适合查看项目结构。部分系统默认没有安装。
查看当前目录树:
tree只显示两层:
tree -L 2常用参数:
| 参数 | 说明 |
|---|---|
-L 数字 | 限制显示目录层级 |
-a | 显示隐藏文件 |
-d | 只显示目录 |
touch
touch 用于创建空文件,或更新已有文件的修改时间。
创建一个空文件:
touch notes.txt一次创建多个文件:
touch a.txt b.txt常见用法:
| 用法 | 说明 |
|---|---|
touch file.txt | 文件不存在则创建,存在则更新时间 |
touch a.txt b.txt | 一次处理多个文件 |
mkdir
mkdir 用于创建目录。
创建一个目录:
mkdir data创建多级目录:
mkdir -p project/src/scripts常用参数:
| 参数 | 说明 |
|---|---|
-p | 自动创建不存在的父目录 |
-v | 显示创建过程 |
cat
cat 用于输出文件内容,适合查看短文件。
查看一个文件:
cat file.txt连续输出多个文件:
cat a.txt b.txt常用参数:
| 参数 | 说明 |
|---|---|
-n | 显示行号 |
-A | 显示不可见字符,如换行、制表符 |
less
less 用于分页查看文件,适合查看日志或大文件。
less large.log常用按键:
| 按键 | 说明 |
|---|---|
空格 | 下一页 |
b | 上一页 |
/关键词 | 搜索关键词 |
n | 跳到下一个搜索结果 |
N | 跳到上一个搜索结果 |
q | 退出 |
head
head 用于查看文件开头部分。
默认查看前 10 行:
head file.txt查看前 20 行:
head -n 20 file.txt常用参数:
| 参数 | 说明 |
|---|---|
-n 数字 | 指定显示前多少行 |
tail
tail 用于查看文件结尾部分,常用于查看日志。
默认查看最后 10 行:
tail file.txt查看最后 50 行:
tail -n 50 file.txt持续追踪文件新增内容:
tail -f app.log常用参数:
| 参数 | 说明 |
|---|---|
-n 数字 | 指定显示最后多少行 |
-f | 持续追踪文件新增内容 |
cp
cp 用于复制文件或目录。
复制文件:
cp source.txt target.txt复制文件到目录:
cp source.txt /tmp/复制目录:
cp -r dir1 dir2覆盖前询问:
cp -i source.txt target.txt常用参数:
| 参数 | 说明 |
|---|---|
-r | 递归复制目录 |
-i | 覆盖前询问 |
-v | 显示复制过程 |
-p | 保留权限、时间等属性 |
mv
mv 用于移动文件或目录,也可用于重命名。
重命名文件:
mv old.txt new.txt移动文件到目录:
mv file.txt /tmp/移动目录:
mv dir1 /data/project/覆盖前询问:
mv -i a.txt b.txt常用参数:
| 参数 | 说明 |
|---|---|
-i | 覆盖前询问 |
-v | 显示移动过程 |
-n | 不覆盖已存在文件 |
rm
rm 用于删除文件或目录。Linux 默认没有回收站,此命令需要谨慎使用。
删除文件:
rm file.txt删除前询问:
rm -i file.txt删除目录:
rm -r old_dir强制递归删除目录:
rm -rf old_dir常用参数:
| 参数 | 说明 |
|---|---|
-i | 删除前逐个询问 |
-r | 递归删除目录 |
-f | 强制删除,不提示 |
-v | 显示删除过程 |
安全建议:
pwd
ls old_dir
rm -ri old_dir初学者慎用:
rm -rf *
rm -rf /path执行前务必用 pwd 和 ls 确认当前位置和目标。
rmdir
rmdir 用于删除空目录。
rmdir empty_dir常见用法:
| 用法 | 说明 |
|---|---|
rmdir empty_dir | 删除空目录 |
如果目录不为空,rmdir 会失败,因此比 rm -r 更安全。
find
find 用于按名称、类型、大小、时间等条件查找文件。
按名称查找:
find . -name "*.txt"查找普通文件:
find /home/user -type f -name "*.log"查找目录:
find . -type d -name "results"查找大文件:
find . -size +1G常用条件:
| 条件 | 说明 |
|---|---|
-name | 按名称查找 |
-type f | 查找普通文件 |
-type d | 查找目录 |
-size +1G | 查找大于 1GB 的文件 |
-mtime -7 | 查找 7 天内修改过的文件 |
locate
locate 用于通过索引快速查找文件,速度比 find 快,但结果可能不是实时的。
查找文件:
locate filename更新索引:
sudo updatedb常见用法:
| 用法 | 说明 |
|---|---|
locate filename | 按文件名快速查找 |
sudo updatedb | 更新文件索引,通常需要管理员权限 |
grep
grep 用于在文件中搜索文本。
在文件中搜索关键词:
grep "error" app.log显示行号:
grep -n "error" app.log递归搜索目录:
grep -r "main" ./src忽略大小写:
grep -i "warning" app.log常用参数:
| 参数 | 说明 |
|---|---|
-n | 显示行号 |
-r | 递归搜索目录 |
-i | 忽略大小写 |
-v | 反向匹配,显示不包含关键词的行 |
ln
ln 用于创建链接文件。链接分为硬链接和软链接,软链接也叫符号链接,类似快捷方式。
创建硬链接:
ln file.txt hard_link.txt创建软链接:
ln -s /data/project project_link常用参数:
| 参数 | 说明 |
|---|---|
-s | 创建软链接 |
-f | 强制覆盖已有链接 |
-n | 处理符号链接本身,而不是它指向的目录 |
软链接在 HPC 和服务器上很常用,例如把大型数据目录链接到当前项目目录。
tar
tar 用于打包或解包文件,常见格式有 .tar 和 .tar.gz。
打包目录:
tar -cvf archive.tar mydir解包 .tar 文件:
tar -xvf archive.tar打包并使用 gzip 压缩:
tar -czvf archive.tar.gz mydir解压 .tar.gz 文件:
tar -xzvf archive.tar.gz常用参数:
| 参数 | 说明 |
|---|---|
-c | 创建归档 |
-x | 解包 |
-v | 显示过程 |
-f | 指定文件名 |
-z | 使用 gzip 压缩或解压 |
du
du 用于查看文件或目录占用的磁盘空间。
查看当前目录总大小:
du -sh .查看当前目录下一层文件和目录大小:
du -h --max-depth=1 .常用参数:
| 参数 | 说明 |
|---|---|
-h | 以易读单位显示,如 KB、MB、GB |
-s | 只显示总计 |
--max-depth=1 | 只统计指定层级 |
sort
sort 用于对文本行排序,经常与管道 | 搭配使用。
按大小排序 du 输出:
du -h --max-depth=1 . | sort -h倒序排序:
du -h --max-depth=1 . | sort -hr常用参数:
| 参数 | 说明 |
|---|---|
-h | 按人类可读大小排序,如 1K、20M、3G |
-r | 反向排序 |
-n | 按数字排序 |
常用操作组合
找出当前目录下的大文件:
find . -type f -size +1G按大小查看当前目录内容:
du -h --max-depth=1 . | sort -h安全删除目录:
pwd
ls target_dir
rm -ri target_dir