Skip to content

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删除至行尾
yyY复制当前行
[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!强制退出,放弃所有修改
:wqZZ保存并退出
: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 组合前务必再三确认路径

安全习惯

  1. 使用rm前先用ls查看要删除的文件
  2. 可以使用rm -i替代rm,养成交互习惯
  3. 重要文件先移动到临时目录,确认无误后再删除

移动/重命名命令 (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 协议。