文件与目录操作
ls
列出目录内容。
常用参数
| 参数 | 说明 |
|---|---|
-a | 显示所有文件,包括隐藏文件(以 . 开头) |
-l | 长格式列出(权限、所有者、大小、时间) |
-h | 以人类可读格式显示文件大小(如 1K、2M) |
-t | 按修改时间排序( newest first) |
-r | 反向排序 |
-S | 按文件大小排序 |
-R | 递归列出子目录 |
-1 | 每行显示一个文件 |
示例
# 长格式列出当前目录
ls -lh
# 按修改时间倒序
ls -lt
# 显示所有文件(含隐藏文件)
ls -la
# 按文件大小倒序
ls -lSh
# 递归列出所有子目录
ls -R
# 只看文件名,每行一个
ls -1
cp
复制文件或目录。
常用参数
| 参数 | 说明 |
|---|---|
-r / -R | 递归复制目录及其内容 |
-i | 目标文件已存在时提示确认 |
-f | 强制覆盖,不提示 |
-p | 保留文件属性(权限、时间戳、所有者) |
-v | 显示复制的文件名 |
-a | 归档模式,等同于 -rpd(递归 + 保留属性 + 保留链接) |
示例
# 复制文件
cp file.txt backup.txt
# 复制目录
cp -r ./src ./src_backup
# 保留文件属性复制
cp -p file.txt /tmp/file.txt
# 复制并显示进度
cp -rv ./src ./dest
# 归档复制(备份常用)
cp -a ./project ./project_backup
du
查看文件和目录的磁盘使用量。
常用参数
| 参数 | 说明 |
|---|---|
-h | 以人类可读格式显示(如 1K、2M) |
-s | 只显示汇总大小(不逐个列出子目录) |
-d <深度> | 指定显示的目录深度 |
-a | 显示所有文件(不仅是目录) |
-c | 最后显示总计 |
--exclude=<模式> | 排除匹配的文件或目录 |
示例
# 查看当前目录总大小
du -sh .
# 查看各子目录大小
du -h --max-depth=1
# 查看指定目录总大小
du -sh /var/log
# 显示所有文件大小并汇总
du -ahc ./project
# 排除 node_modules
du -sh --exclude=node_modules .
rm
删除文件或目录。
常用参数
| 参数 | 说明 |
|---|---|
-r / -R | 递归删除目录及其内容 |
-f | 强制删除,不提示确认 |
-i | 删除前逐个确认 |
-v | 显示删除的文件名 |
-d | 删除空目录 |
示例
# 删除文件
rm file.txt
# 删除目录及其内容
rm -r ./build
# 强制递归删除(不提示,谨慎使用)
rm -rf ./node_modules
# 删除前确认
rm -i *.log
# 删除空目录
rm -d empty_folder
mkdir
创建目录。
常用参数
| 参数 | 说明 |
|---|---|
-p | 递归创建父目录(不存在则自动创建) |
-v | 显示创建的目录名 |
-m <权限> | 创建时指定权限(如 755) |
示例
# 创建单个目录
mkdir project
# 递归创建多级目录
mkdir -p a/b/c
# 创建并指定权限
mkdir -m 755 public
mv
移动或重命名文件和目录。
常用参数
| 参数 | 说明 |
|---|---|
-i | 目标已存在时提示确认 |
-f | 强制覆盖,不提示 |
-v | 显示移动的文件名 |
-n | 不覆盖已有文件 |
示例
# 重命名文件
mv old.txt new.txt
# 移动文件到目录
mv file.txt ./backup/
# 移动并重命名
mv file.txt ./backup/file_2026.txt
# 不覆盖已有文件
mv -n file.txt ./dest/
# 批量移动 .log 文件
mv *.log ./logs/
find
查找文件或目录。
常用参数
| 参数 | 说明 |
|---|---|
-name <模式> | 按文件名匹配(支持通配符) |
-iname <模式> | 按文件名匹配(忽略大小写) |
-type <类型> | 按类型:f 文件、d 目录、l 链接 |
-size <大小> | 按大小(如 +100M 大于 100M) |
-mtime <天> | 按修改时间(如 -7 最近 7 天内) |
-exec <命令> {} \; | 对每个结果执行命令 |
-maxdepth <深度> | 限制搜索深度 |
示例
# 按名称查找
find . -name "*.log"
# 查找大于 100M 的文件
find . -size +100M
# 查找最近 7 天修改的文件
find . -mtime -7
# 查找并删除 .tmp 文件
find . -name "*.tmp" -delete
# 查找后执行命令
find . -name "*.js" -exec wc -l {} +
# 限制搜索深度
find . -maxdepth 2 -type d
ln
创建链接(硬链接或符号链接)。
常用参数
| 参数 | 说明 |
|---|---|
-s | 创建符号链接(软链接) |
-f | 目标已存在时强制覆盖 |
-v | 显示创建的链接名 |
示例
# 创建软链接(最常用)
ln -s /usr/local/node/bin/node /usr/bin/node
# 创建硬链接
ln file.txt file_hardlink.txt
# 强制更新软链接
ln -sf /new/target /usr/bin/link_name
nano
轻量、易用的终端文本编辑器,适合新手和临时快速编辑。
常用操作:
- 打开文件:
nano 文件名。 - 保存:
Ctrl+O(然后回车确认)。 - 退出:
Ctrl+X。 - 剪切整行:
Ctrl+K。 - 粘贴:
Ctrl+U。 - 搜索:
Ctrl+W,输入要查找的文本,回车。 - 替换:
Ctrl+\(反斜杠),按提示输入搜索和替换内容。
示例:
# 打开并编辑文件
nano /etc/hosts
# 使用 sudo 编辑受限文件
sudo nano /etc/hosts
vim
功能强大的终端文本编辑器,有较陡的学习曲线,但支持高效编辑与丰富扩展。
模式简介:
- 普通模式(Normal):默认模式,用于移动、删除、复制、粘贴等操作。
- 插入模式(Insert):用于输入文本,按
i进入,Esc返回普通模式。 - 可视模式(Visual):用于选择文本,按
v进入。 - 命令模式(Command-line):以
:开头输入保存、退出、替换等命令。
常用命令(在普通模式下):
- 移动:
h左,j下,k上,l右;w下一个词,b上一个词,0行首,$行末。 - 插入:
i在光标前插入,a在光标后插入,o在下方新行插入。 - 保存/退出:
:w保存,:q退出,:wq保存并退出,:q!强制退出不保存。 - 删除:
x删除当前字符,dd删除整行,d$删除到行末。 - 复制/粘贴(Yank/Paste):
yy复制整行,p在下方粘贴,P在上方粘贴。 - 撤销/重做:
u撤销,Ctrl+R重做。 - 搜索:
/文本向下查找,?文本向上查找,n下一个,N上一个。 - 替换(在命令模式):
:%s/old/new/g全文替换,:%s/old/new/gc替换并交互确认。
示例:
# 打开文件
vim README.md
# 在普通模式下跳到文件末尾并进入插入模式
G
i
# 保存并退出
:wq
小贴士:
- 学习
vimtutor可以快速上手:在终端运行vimtutor。 - 初学者可用
nano完成快速编辑,逐步学习vim的高效用法。