Shell速查手册
文本编辑 (vi/vim)
模式切换
- 普通模式(Normal) → 插入模式(Insert):按
i,a,o等键 - 任何模式 → 普通模式:按
Esc键 - 普通模式 → 命令行模式(Command-line):按
:键
插入与追加文本
| 按键 | 功能 | 说明 |
|---|---|---|
i | 插入 (Insert) | 在光标前插入 |
I | 行首插入 | 在当前行第一个非空字符前插入 |
a | 追加 (Append) | 在光标后追加 |
A | 行尾追加 | 在当前行末尾追加 |
o | 下方新行插入 | 在当前行下方打开新行 |
O | 上方新行插入 | 在当前行上方打开新行 |
光标移动
| 按键 | 功能 |
|---|---|
h j k l | 左、下、上、右移动 |
w / W | 跳到下一个单词开头 (W忽略标点) |
b / B | 跳回上一个单词开头 (B忽略标点) |
0 (零) | 跳到行首 |
$ | 跳到行尾 |
gg | 跳到文件第一行 |
G | 跳到文件最后一行 |
:[行号] | 跳转到指定行,如 :15 |
删除、复制与粘贴
| 命令 | 功能 |
|---|---|
x | 删除光标下的字符 |
dd | 删除当前行 |
dw | 删除一个单词 |
d$ 或 D | 删除至行尾 |
yy 或 Y | 复制当前行 |
[n]yy | 复制 n 行,如 3yy |
p | 在光标后粘贴 |
P | 在光标前粘贴 |
撤销与重做
| 命令 | 功能 |
|---|---|
u | 撤销上一次操作 |
Ctrl + r | 重做被撤销的操作 |
搜索与替换
| 操作 | 说明 |
|---|---|
/pattern | 正向搜索,如 /error |
?pattern | 反向搜索 |
n | 跳到下一个匹配项 |
N | 跳到上一个匹配项 |
:s/old/new | 替换当前行第一个 old 为 new |
:s/old/new/g | 替换当前行所有 old 为 new |
:%s/old/new/g | 替换全文所有 old 为 new |
保存与退出
| 命令 | 功能 |
|---|---|
:w | 保存文件 |
:q | 退出编辑器 (无修改时) |
:q! | 强制退出,放弃所有修改 |
:wq 或 ZZ | 保存并退出 |
:w [文件名] | 另存为新文件 |
常用设置 (在命令行模式下)
| 命令 | 功能 |
|---|---|
:set number 或 :set nu | 显示行号 |
:set nonumber 或 :set nonu | 隐藏行号 |
:set paste | 进入粘贴模式,避免自动缩进混乱 |
:set nopaste | 退出粘贴模式 |
文件查看与搜索
查看文件内容 (cat)
| 命令 | 说明 | 示例 |
|---|---|---|
cat file1 file2 | 连接并显示多个文件 | cat config.ini README.md |
cat -n file | 显示行号 | cat -n script.py |
cat -s file | 压缩连续的空白行为一行 | cat -s logfile.txt |
cat file | grep "pattern" | 结合 grep 搜索内容 | cat server.log | grep "ERROR" |
搜索文件内容 (grep)
| 命令 | 说明 | 示例 |
|---|---|---|
grep "text" file | 在文件中搜索文本 | grep "TODO" main.c |
grep -i "text" file | 忽略大小写搜索 | grep -i "error" log.txt |
grep -r "text" dir/ | 递归搜索目录下所有文件 | grep -r "function" src/ |
grep -n "text" file | 显示匹配行的行号 | grep -n "import" module.py |
grep -v "text" file | 反向选择,显示不匹配的行 | grep -v "^#" config.conf |
grep -l "text" dir/* | 只显示包含匹配文本的文件名 | grep -l "error" *.log |
grep -c "text" file | 统计匹配的行数 | grep -c "warning" app.log |
文件与目录管理
复制命令 (cp)
| 命令 | 说明 | 示例 |
|---|---|---|
cp [源文件] [目标目录] | 复制文件到目录 | cp resume.pdf ~/Documents/ |
cp -r [源目录] [目标目录] | 递归复制整个目录 | cp -r my_project/ backups/ |
cp -i [源] [目标] | 交互式复制,覆盖前询问 | cp -i config.conf config_backup.conf |
cp -v [源] [目标] | 显示详情,列出复制的文件 | cp -v *.log /var/log/archive/ |
删除命令 (rm) ⚠️ 慎用
| 命令 | 说明 | 示例 |
|---|---|---|
rm [文件] | 删除文件(会询问) | rm old_note.txt |
rm -f [文件] | 强制删除文件,无提示 | rm -f tmp_1234.tmp |
rm -r [目录] | 递归删除目录及其内容(会询问) | rm -r empty_folder/ |
rm -rf [目录] | 强制递归删除目录,无任何提示 | rm -rf obsolete_project/ |
⚠️ 危险警告:
rm -rf /或rm -rf /*会删除系统所有文件,导致系统崩溃。使用-rf组合前务必再三确认路径。
安全习惯:
- 使用
rm前先用ls查看要删除的文件- 可以使用
rm -i替代rm,养成交互习惯- 重要文件先移动到临时目录,确认无误后再删除
移动/重命名命令 (mv)
| 命令 | 说明 | 示例 |
|---|---|---|
mv [源] [目标] | 移动文件/目录,或重命名 | mv file.txt ../ (移动)mv oldname newname (重命名) |
mv -i [源] [目标] | 交互式移动,覆盖前询问 | mv -i data.db ~/backups/ |
mv -v [源] [目标] | 显示详情,列出移动的项目 | mv -v *.jpg photos/ |
文件压缩与解压 (tar)
压缩/打包命令
| 命令 | 说明 | 示例 |
|---|---|---|
tar -czvf [名.tar.gz] [文件/目录] | 创建 .tar.gz (gzip) 压缩包 | tar -czvf backup.tar.gz /home/user/docs |
tar -cjvf [名.tar.bz2] [文件/目录] | 创建 .tar.bz2 (bzip2) 压缩包 | tar -cjvf archive.tar.bz2 ./project/ |
tar -cvf [名.tar] [文件/目录] | 仅打包,不压缩 (生成 .tar) | tar -cvf images.tar ./pictures/ |
tar -tzvf [文件.tar.gz] | 查看压缩包内容而不解压 | tar -tzvf backup.tar.gz |
解压/提取命令
| 命令 | 说明 | 示例 |
|---|---|---|
tar -xzvf [文件.tar.gz] | 解压 .tar.gz 到当前目录 | tar -xzvf backup.tar.gz |
tar -xjvf [文件.tar.bz2] | 解压 .tar.bz2 到当前目录 | tar -xjvf archive.tar.bz2 |
tar -xvf [文件.tar] | 解包 .tar 文件 | tar -xvf images.tar |
tar -xzvf [文件] -C [目录] | 解压到指定目录 | tar -xzvf logs.tar.gz -C /tmp/ |
常用选项速记:
-c: Create (创建归档)-x: eXtract (提取归档)-z: 使用 gzip 压缩/解压 (处理.gz)-j: 使用 bzip2 压缩/解压 (处理.bz2)-v: Verbose (显示处理过程)-f: File (指定归档文件名)-C: 改变目标目录
文件传输 (rz/sz)
| 命令 | 说明 | 使用场景 |
|---|---|---|
sz [文件1] [文件2] | 发送文件到本地 (下载) | 从服务器下载日志文件:sz app.log |
rz | 接收来自本地的文件 (上传) | 上传安装包到服务器:rz (会弹出文件选择框) |
注意:
rz/sz命令通常需要终端软件(如 Xshell, SecureCRT, iTerm2等)支持 ZMODEM 协议。