按用途分组的常用 Linux 命令速查表,保留各命令的原始文档结构(命令名 === + 补充说明 / 语法 / 选项 / 实例 / 注意 / 参考链接),并对冗长内容做了精简。 来源:
Linux命令/目录下各独立命令文档(ls、cat、ps、git、systemctl、chmod、cp、mv、find、df、free、tar、curl、wget、mkdir、rm、tail、head、top、sudo、du、ln、touch、diff、ssh、sort、uniq、wc、kill、egrep、pwd、man、ping、netstat、ss)。
目录
- 一、文件与目录管理 —
lspwdmkdirrmcpmvlntouchfind - 二、内容查看与处理 —
catheadtailgrep/egrepdiffsortuniqwc - 三、系统信息 —
pstopdffreedusystemctl - 四、网络 —
sshcurlwgetpingnetstatssnmcli - 五、压缩与归档 —
tar - 六、权限管理 —
chmod - 七、进程管理 —
kill - 八、版本控制 —
git - 九、帮助与权限提升 —
sudoman
一、文件与目录管理
ls
列出目录 contents 及文件属性。
补充说明
ls 命令用于列出目标目录中所含内容(子目录与文件),并可选列出文件属性(如大小、时间、权限等)。ls 默认在当前目录查找,若目标为目录则递归列出其下内容。
语法
ls [-aAdFhLlmNnrRsstwX] [文件/目录名]
常用选项
-a 列出全部文件(含隐藏文件,以 . 开头)
-A 列出全部文件(不含 . 与 ..)
-d 仅列出目录本身,不列出内容(配合 -l 查看目录权限)
-F 为不同类型追加标识:目录 /、符号链接 @、可执行文件 *
-l 长格式列出(权限、链接数、所有者、组、大小、修改时间)
-h 人类易读的文件大小(配合 -l)
-R 递归列出子目录
-S 按文件大小排序
-t 按修改时间排序(最新在前)
-u 配合 -l 按访问时间排序
-r 反向排序
-R 递归
常见用法
ls # 列出当前目录内容
ls -l # 列出详细文件列表
ls -lh # 详细列表 + 人类可读大小
ls -la # 含隐藏文件的详细列表
ls -ld /usr # 仅查看 /usr 目录本身的权限
ls -lt # 按时间排序,最近修改的在前
ls -lSh # 按大小排序
ls *.txt # 列出匹配模式的文件
ls -1 # 每行一个文件名(便于脚本处理)
参考链接
pwd
显示当前工作目录的绝对路径。
补充说明
pwd(print working directory)用于显示用户当前所在工作目录(以绝对路径显示)。
pwd [-LP] # bash 内建命令
pwd [OPTION]... # GNU coreutils 外部命令
选项
-L, --logical 打印环境变量 "$PWD" 的值,可能为符号链接(默认值)
-P, --physical 打印当前工作目录的物理位置(外部命令默认值)
--help 显示帮助信息并退出
--version 显示版本信息并退出
常见用法
pwd # 查看当前所在路径 → /var
cd /var/ # 进入目录,其中 mail 是软链接 -> spool/mail
pwd # 默认显示连接文件全路径 → /var/mail
pwd -P # 显示软链接最终指向的真实路径 → /var/spool/mail
参考链接
mkdir
创建目录。
补充说明
mkdir 命令用于创建目录(英文 make directory)。默认仅创建指定的单层目录;若目标目录的父目录不存在,需加 -p 自动创建父目录。
语法
mkdir [-m权限] [-p/创建多级目录] [目录名]
常见用法
mkdir test # 创建 test 目录
mkdir -p /tmp/a/b/c # 创建多级目录(自动创建中间目录)
mkdir -m 777 test # 创建时设定权限为 777
mkdir test1 test2 test3 # 一次创建多个目录
参考链接
rm
删除文件或目录。
补充说明
rm 命令用于删除文件或直接删除非空目录(英文 remove)。默认删除单个文件;删除目录需配合 -r(递归),删除空目录配合 -d。
语法
rm [-fiIr] 文件或目录
选项
-f 强制删除(忽略不存在的文件,不提示)
-i 交互模式,删除前逐一确认
-r 递归删除目录及其内容
-d 将目录作为文件删除(删除空目录)
常见用法
rm test.txt # 删除文件(提示确认)
rm -f test.txt # 强制删除,不提示
rm -rf test/ # 递归删除整个目录(谨慎使用)
rm -rf /tmp/* # 删除 /tmp 下所有内容
rm -i *.log # 逐个确认再删除 .log 文件
参考链接
cp
复制文件或目录。
补充说明
cp 命令用于复制文件或目录(英文 copy)。源文件可为一个或多个,目标为单一文件时所有源复制到该目录;目标为目录时复制到其下。
语法
cp [-airbdfgprsuxX] 源文件 目标文件
选项
-a 复制(保留权限、时间戳等,类似 -dr)
-r 递归复制目录及子目录
-d 保留符号链接本身而非复制目标
-f 强制覆盖
-i 覆盖前确认
-p 保留原始权限、所有者、时间戳等属性
-r 递归处理目录
-u 仅当源文件比目标新时才复制(更新)
常见用法
cp file1 file2 # 复制 file1 为 file2(或重命名)
cp -r dir1 dir2 # 递归复制目录
cp -a dir1 dir2 # 完整保留属性复制目录(备份常用)
cp -u file1 dir2 # 仅更新 dir2 中较新的文件
cp -i file1 file2 # 覆盖前提示确认
参考链接
mv
移动或重命名文件。
补充说明
mv 命令用于移动或重命名文件、目录、符号链接(英文 move)。源与目标可为一个或多个;目标为目录时移入其中。语法
mv [-fiv] SOURCE... DIRECTORY
常用选项
-f 强制覆盖,不提示
-i 覆盖前提示确认
-n 不覆盖已存在的文件
-t 指定目标目录
-v 显示详细过程
常见用法
mv file1 file2 # 重命名 file1 为 file2
mv file1 /home/ # 将 file1 移入 /home/
mv dir1 dir2 # 将 dir1 移入 dir2 下
mv -f file1 /home/file1 # 强制移动,覆盖同名文件
mv -i file1 /home/ # 移动前提示确认
mv -v *.txt /backup/ # 详细列出移动的 .txt 文件
参考链接
ln
为文件创建链接。
补充说明
ln 命令用于为文件创建链接(英文 link)。默认创建硬链接;加 -s 创建符号链接(软链接)。语法
ln [-abFnis] 源文件 目标文件
选项
-a 保持符号链接状态
-b 为覆盖目标创建备份(同 --backup)
-F 目标存在时强制创建,并移除冲突项
-f 强制创建链接
-i 覆盖前提示确认
-n 将符号链接指向目标本身而非其所在目录
-s 创建符号链接(软链接)
常见用法
ln source target # 创建硬链接
ln -s source target # 创建符号链接(软链接)
ln -sf source target # 强制创建符号链接(覆盖已有)
ln -s /path/to/repo ~/.link # 将路径软链接到主目录
参考链接
touch
创建空文件或更新修改时间。
补充说明
touch 命令用于创建空文件或修改已有文件的访问/修改时间(英文 touch)。若文件不存在则创建一个 0 长度空文件;若存在则更新其时间戳为当前时间。
语法
touch [选项] 文件
常用选项
-a 仅修改访问时间(atime)
-m 仅修改修改时间(mtime)
-t STAMP 使用指定时间([[CC]YY]MMDDhhmm[.ss])
-c 目标已存在则不创建、不报错
-d DATE 使用指定日期时间字符串
常见用法
touch file.txt # 创建空文件 file.txt(不存在时)
touch a.txt b.txt # 一次创建多个空文件
touch -c file.txt # 不创建不存在的文件
touch -d "2023-01-01" file.txt # 将修改时间设为指定日期
touch -a file.txt # 仅更新访问时间
参考链接
find
在指定目录下查找文件。
补充说明
find 命令用来在指定目录下查找文件。位于参数之前的字符串视为欲查找的目录名;不设置参数则在当前目录查找子目录与文件并全部显示。
语法
find [路径] [表达式]
常用选项(部分)
-name <样式> 按文件名匹配(支持通配符)
-iname <样式> 忽略大小写匹配文件名
-type <类型> 按文件类型查找(见下方类型表)
-size ±N[unit] 按文件大小匹配(+大于 / -小于 / 等于)
-mtime/atime/ctime N 按修改/访问/变更时间(天)查找
-mmin/amin/cmin N 按分钟查找
-perm <数值> 按权限数值查找
-user <用户> 按所有者查找
-group <组> 按所属组查找
-newer <文件> 查找比指定文件更新者
-exec cmd {} \; 对匹配结果执行命令
-ok cmd {} \; 同 -exec,执行前逐一确认
-maxdepth N 限制最大搜索深度
-mindepth N 限制最小搜索深度
-empty 查找空文件或空目录
-prune 跳过指定目录
文件类型参数表:
f 普通文件 l 符号链接 d 目录
c 字符设备 b 块设备 s 套接字 p Fifo
常见用法
find . # 列出当前目录及子目录所有内容
find /home -name "*.txt" # /home 下查找 .txt 文件
find /home -iname "*.txt" # 忽略大小写
find . \( -name "*.txt" -o -name "*.pdf" \) # 匹配多种后缀
find /home ! -name "*.txt" # 否定:非 .txt 文件
find . -maxdepth 3 -type f # 最大深度 3 的普通文件
find . -type f -atime -7 # 7 天内被访问过的文件
find . -type f -size +10k # 大于 10KB 的文件
find . -type f -perm 777 # 权限为 777 的文件
find . -type f -user tom # 用户 tom 拥有的文件
find . -type f -name "*.log" -mtime +30 -exec cp {} old \; # 30 天前的日志移到 old
find . -name "*.txt" -delete # 删除匹配的 .txt 文件
find . -path "./sk" -prune -o -name "*.txt" -print # 跳过 sk 目录
find . -empty # 列出长度为零的文件
类型参数: 起始目录,查找的根路径。
参考链接
二、内容查看与处理
cat
查看文件内容。
补充说明
cat 命令用于读取并输出文件内容(英文 concatenate,连接)。可一次性查看整个文件,也可配合重定向将多个文件合并。
语法
cat [-abEnTv] 文件...
选项
-b 对非空输出行编号
-n 对所有输出行编号(含空行)
-E 在每行末尾显示 $ 符号
-T 显示 Tab 符为 ^I
-v 显示不可见字符(Tab 除外)
-e 等价于 -vT
-s 压缩连续空行为一个
常见用法
cat file.txt # 查看文件内容
cat -n file.txt # 显示行号
cat -b file.txt # 仅对非空行编号
cat file1.txt file2.txt > out.txt # 合并两个文件到 out.txt
cat > new.txt # 从键盘输入创建文件(Ctrl+D 结束)
cat -A file.txt # 显示行尾与 Tab(调试隐藏字符)
参考链接
head
查看文件开头内容。
补充说明
head 命令用于查看文件开头部分(英文 head,头部)。默认输出前 10 行;也可指定行数或字节数。
语法
head [-bcn] 文件
head -c <字节数> 文件
选项
-b 按字节计数(配合 -n)
-c <字节数> 只输出前 N 个字节
-n <行数> 只输出前 N 行(默认 10)
常见用法
cat file.txt # 查看文件内容
cat -n file.txt # 显示行号
cat -b file.txt # 仅对非空行编号
cat file1.txt file2.txt > out.txt # 合并两个文件到 out.txt
cat > new.txt # 从键盘输入创建文件(Ctrl+D 结束)
cat -A file.txt # 显示行尾与 Tab(调试隐藏字符)
参考链接
tail
查看文件结尾内容。
补充说明
tail 命令用于查看文件末尾部分(英文 tail,尾巴)。默认输出最后 10 行;配合 -f 可实时跟踪文件增长(适合看日志)。
语法
tail [-befn] [FILE]
tail [-c N] [FILE]
选项
-b 按字节计数
-c <字节数> 只输出最后 N 个字节
-e 等价于 -v
-f 跟踪文件增长(实时追加,Ctrl+C 结束)
-n <行数> 只输出最后 N 行(默认 10)
-v 显示详细处理信息
常见用法
tail file.txt # 查看文件最后 10 行
tail -n 20 file.txt # 查看最后 20 行
tail -c 100 file.txt # 查看最后 100 字节
tail -f /var/log/syslog # 实时跟踪日志增长(看日志常用)
tail -n +50 file.txt # 从第 50 行开始输出到结尾
参考链接
grep / egrep
按正则表达式搜索文件内容。
grep基本正则;egrep(等价grep -E)使用扩展正则,无需转义()|+等元字符。
补充说明
grep 命令用于在文件中按字符串或正则匹配行并输出。egrep 使用扩展正则表达式(ERE),元字符可直接书写。
常用选项
-i 忽略大小写
-n 输出匹配行的行号
-v 反选:输出不匹配的行
-r 递归搜索子目录
-l 仅列出包含匹配的文件名
-c 只统计匹配行数
-w 按单词整体匹配
-E 使用扩展正则(egrep 等价)
常见用法
grep "error" log.txt # 查找包含 error 的行
grep -n "error" log.txt # 带行号
grep -i "error" log.txt # 忽略大小写
grep -v "^#" config.conf # 排除注释行(# 开头)
grep -rn "TODO" src/ # 递归搜索 src 下 TODO
grep -l "class" *.java # 仅列出匹配文件名
grep -c "error" log.txt # 统计匹配行数
egrep -n "cat|dog" animals.txt # 扩展正则:匹配 cat 或 dog
egrep -n "[0-9]{3}" numbers.txt # 匹配三位数字
参考链接
diff
比较两个文件的差异。
补充说明
diff 命令以逐行方式比较两个文本文件的异同并输出差异处。若以 - 作为参数,则从标准输入读取内容。比较目录时仅比较同名文件,忽略子目录。
常用选项
-q 仅报告是否存在差异(不显示具体内容)
-u 以 unified 格式显示差异(含上下文,可用于打补丁)
-c 以 context 格式显示差异
-r 递归比较子目录
-i 忽略大小写
-b 忽略空格变化
-w 忽略全部空格
-y 并排显示差异
常见用法
diff a.txt b.txt # 比较两个文件,输出差异
diff -q a.txt b.txt # 仅判断是否有差异(返回码 0=相同,1=不同)
diff -u a.txt b.txt # unified 格式(结果可直接用于 patch 打补丁)
diff -r dir1 dir2 # 递归比较两个目录
参考链接
sort
排序。
补充说明
sort 命令用于对多行文本按一定规则排序(英文 sort,排序)。默认按 ASCII 首字母升序;支持按数字、指定列、忽略大小写、去重等。
语法
sort [选项] 文件
选项
-f 忽略大小写
-i 忽略不可打印字符
-n 按数字大小排序(默认按字符串)
-r 反向排序(降序)
-t 指定分隔符(配合 -k)
-k N[,M] 按第 N 到 M 列排序
-u 去重(保留重复项中第一行)
-b 忽略前导空白
-o FILE 将结果写入指定文件
-M 按月份(Jan..Dec)排序
-h 按人类易读大小排序(1K, 2M...)
常见用法
sort file.txt # 按 ASCII 升序排序
sort -n file.txt # 按数字排序
sort -nr file.txt # 按数字降序
sort -k2 file.txt # 按第二列排序
sort -u file.txt # 排序并去重
sort -t: -k3 /etc/passwd # 以 : 分隔,按第 3 列排序
sort -o out.txt file.txt # 排序结果写入 out.txt
sort -h file_sizes.txt # 按人类易读大小排序(1K/2M)
参考链接
uniq
去重相邻重复行。
uniq只处理相邻的重复行,通常先sort再uniq。
补充说明
uniq 命令用于去除排序后文件中相邻的重复行(英文 unique,唯一)。
语法
uniq [-ic] 文件
选项
-c 在每行旁输出该行重复次数
-i 忽略大小写
-v 仅输出不重复的行(反向)
常见用法
uniq file.txt # 去除相邻重复行
sort file.txt | uniq # 先排序再去重,得到唯一列表
sort file.txt | uniq -c # 统计每行出现次数(常用!)
sort file.txt | uniq -d # 仅列出重复过的行
sort file.txt | uniq -v # 仅列出唯一(不重复)的行
参考链接
wc
统计。
统计文件、单词、行、字符等。
补充说明
wc 命令用于统计文件中的字节数、字符数、单词数、行数(英文 word count)。语法
wc [选项] 文件...
选项
-b 统计字节数
-c 统计字符数
-l 统计行数(默认)
-m 统计字符数
-w 统计单词数
-L 输出最长行的长度
常见用法
wc file.txt # 输出 行数 单词数 字节数 文件名
wc -l file.txt # 只统计行数
wc -w file.txt # 只统计单词数
wc -c file.txt # 只统计字符数
wc -l *.txt # 统计多个文件各自行数
grep -v '^$' file | wc -l # 统计非空行数量
参考链接
三、系统信息
ps
查看进程状态。
补充说明
ps 命令用于报告当前进程的状态(英文 process status)。可列出当前正在运行的进程及其相关信息(PID、用户、CPU/内存占用、命令等)。
常用选项
A 显示所有进程(含其他用户)
a 显示所有进程(含终端,不含无终端)
-r 仅显示正在运行的进程
x 显示无终端控制的进程
u 以用户为主的格式输出(CPU/内存占用等)
e 显示环境变量
j 作业控制格式
l 长格式
-ef / -aux 最常用的组合,列出所有进程的详细信息
常见用法
ps aux # 列出所有进程详细信息(Linux,BSD 风格)
ps -ef # 列出所有进程详细信息(System V 风格)
ps aux | grep nginx # 筛选特定进程(如 nginx)
ps -u root # 列出 root 用户的进程
ps -o pid,user,cmd -p 1234 # 指定列查看特定 PID
ps aux --sort=-%cpu # 按 CPU 占用排序
ps aux --sort=-%mem # 按内存占用排序
参考链接
top
实时查看系统资源使用情况。
补充说明
top 命令用于实时显示系统中各个进程的资源占用状况(英文 top,顶部)。默认每 3 秒刷新,可动态查看 CPU、内存、进程负载。
常用选项
-d 秒数 设置刷新间隔(默认 3 秒)
-i 忽略空闲进程
-s 安全模式
-p PID 只监控指定进程
-u 用户名 只监控某用户进程
运行中按键(交互):
P按 CPU、M按内存、N按 PID、k终止进程、q退出、c显示完整命令。
常见用法
top # 实时查看系统资源
top -d 2 # 每 2 秒刷新
top -p 1234 # 只监控 PID 1234
top -u root # 只看 root 用户进程
top -i # 忽略空闲进程
参考链接
df
查看磁盘空间。
补充说明
df 命令用于报告文件系统的整体及个体磁盘使用情况(英文 disk free)。默认输出块数,配合 -h 以人类易读方式显示。
常用选项
-a 显示所有文件系统(含 0 块)
-h 人类易读格式(K/M/G)
-H 以 1000 为单位(而非 1024)
-i 显示 inode 使用情况
-k 以 1024 字节为单位
-l 仅显示本地文件系统
-T 显示文件系统类型
常见用法
df # 列出所有文件系统使用情况
df -h # 人类易读格式(最常用)
df -h / # 仅查看根分区
df -hT # 含文件系统类型
df -h --exclude-type tmpfs # 排除 tmpfs 等虚拟文件系统
df -i # 查看 inode 使用情况
参考链接
free
查看内存使用情况。
补充说明
free 命令用于查看内存使用情况(英文 free,空闲)。默认以字节显示,配合 -h 以人类易读方式显示。
常用选项
-b 以字节显示
-k 以 KB 显示(默认)
-M 以 MB 显示
-g 以 GB 显示
-h 人类易读格式
-t 显示总计(内存 + 交换分区)
-s 定期刷新(配合秒数)
常见用法
free # 查看内存使用情况
free -h # 人类易读格式(最常用)
free -m # 以 MB 显示
free -t # 含总计(内存+Swap)
free -s 5 # 每 5 秒刷新一次
参考链接
du
查看目录占用空间。
补充说明
du 命令用于估算文件目录的使用空间(英文 disk usage)。默认显示当前目录及其子目录的磁盘用量,配合 -h 以人类易读方式显示。
常用选项
-a 显示所有文件(含普通文件)
-h 人类易读格式(K/M/G,最常用)
-s 仅显示总计(不展开子目录)
-x 跳过可移动文件系统
-c 输出总计行
-t 超过指定大小的目录不列出
常见用法
du # 查看当前目录各子目录占用
du -h # 人类易读格式
du -sh /var/log # 仅查看某目录总占用(最常用)
du -ah file.txt # 含文件本身的占用
du -c dir1 dir2 # 输出多个目标的总计
du -h --max-depth=1 # 只展开一层子目录
参考链接
systemctl
systemd 服务管理工具。
用于控制 systemd 系统和“服务”工具。适用于 systemd 管理的发行版(CentOS 7+、Debian 8+ 等)。
补充说明
systemctl 命令用于管理 systemd 系统和“服务”(英文 systemctl)。可启动/停止/重启服务、设置开机自启、查看状态等。
常用服务:
sshd、mariadb/mysqld、firewalld、nginx、httpd等。
常用选项
start 启动某服务
stop 停止某服务
restart 重启某服务
status 查看某服务状态
enable 开机自启
disable 取消开机自启
is-active 查看服务是否为 active
is-enabled 查看是否开机自启
list-units 列出所有已加载单元
list-unit-files 列出单元文件及其启用状态
常见用法
systemctl status sshd # 查看 sshd 服务状态
systemctl start sshd # 启动 sshd 服务
systemctl stop sshd # 停止 sshd 服务
systemctl restart sshd # 重启 sshd 服务
systemctl enable sshd # 设置开机自启
systemctl disable sshd # 取消开机自启
systemctl is-active sshd # 查看服务是否活动(active/inactive)
systemctl is-enabled sshd # 是否开机自启
systemctl list-units --type service # 列出所有已加载服务单元
systemctl cat mariadb # 查看服务单元文件内容
systemctl --failed # 列出启动失败的服务
参考链接
四、网络
ssh
登录并管理远程服务器。
补充说明
ssh 命令用于安全地远程登录并管理远程服务器(英文 secure shell)。默认端口 22;支持公钥免密登录。常用选项
-p PORT 指定端口(默认 22)
-l USER 指定登录用户名
-N 不执行命令,仅建立隧道
-T 禁用交互 shell
-g 允许远程主机连接本地转发端口
-L localport:remotehost:remoteport 本地端口转发
-R remoteport:localhost:localport 远程端口转发
-C 压缩传输
-v 显示调试信息
常见用法
ssh -p 22 user@192.168.1.100 # 以 user 登录服务器
ssh -p 10022 root@192.168.1.100 # 指定端口登录
ssh -l admin 192.168.1.100 # 指定用户名
ssh -N -L 8080:localhost:80 server # 本地 8080 转发到服务器 80 端口
ssh -R 3307 localhost:3306 server # 远程端口转发(MySQL)
ssh -v user@host # 调试模式查看连接过程
免密登录:先用
ssh-keygen生成密钥,再用ssh-copy-id将公钥上传到服务器。
参考链接
相关:
scp(基于 SSH 的安全文件传输,用法见下方传输命令)。
curl
利用 URL 命令行传输文件。
补充说明
curl 是一个利用 URL 规则在命令行下工作的文件传输工具。支持 HTTP/HTTPS/FTP 等协议,支持上传下载、POST、Cookie、认证、部分下载、限速、进度条等。
常用选项(常用部分)
-o 输出到指定文件(自定文件名)
-O 保留远程文件名输出到文件
-s 静默模式(不输出进度/错误)
-L 跟随重定向(-L/-follow)
-X METHOD 指定请求方法(GET/POST/PUT/DELETE)
-d DATA 发送 POST 数据(表单)
--data-urlencode 自动 URL 编码 POST 数据
-H "Header: value" 自定义请求头
-b 'cookie' / --cookie 发送 Cookie
-j 忽略会话 Cookie
-A "User-Agent" 设置用户代理
--referer URL 设置来源页
--limit-rate 50k 限速下载
--max-filesize N 限制最大下载量
-C - 断点续传
-u user:pwd 身份认证
-I / --head 只输出响应头
-w 输出传输细节(如耗时)
常见用法
curl URL # 下载文件输出到终端
curl URL --silent # 静默下载(无进度/错误)
curl http://example.com/test.iso --silent -O # 下载到本地(保留原名)
curl http://example.com/test.iso -o filename.iso --progress # 指定文件名 + 进度条
curl -C - URL # 断点续传
curl --referer http://www.example.com http://example.com # 设置来源页
curl URL --user-agent "Mozilla/5.0" # 设置用户代理
curl URL --limit-rate 50k # 限速 50k 下载
curl -u user:pwd http://example.com # 认证
curl -I http://example.com # 只查看响应头(HTTP 状态等)
curl "http://www.example.com" # GET 请求
curl -d "param1=value1¶m2=value2" "http://example.com/login" # POST 表单
curl -d 'login=emma' -d 'password=123' -X POST https://example.com/login # POST 多字段
curl --data-urlencode 'comment=hello world' https://example.com/login # 自动 URL 编码
curl -d '@data.txt' https://example.com/upload # 发送本地文件内容作为数据体
curl -l -H "Content-type: application/json" -X POST -d '{"phone":"138..."}' http://example.com/apis # JSON POST
curl http://example.com --cookie "user=root;pass=123456" # 发送 Cookie
curl -b 'foo=bar' https://example.com # 通过 -b 发送 Cookie
curl URL --cookie-jar cookie_file # 将 Cookie 存到文件
curl -s -o /dev/null https://example.com # 不产生任何输出(探测用)
curl -o- -L https://yarnpkg.com/install.sh | bash # 下载并管道执行(配合 -L 跟踪重定向)
curl -w ... -o /dev/null URL # 输出耗时等传输细节(-w 详细输出)
参考链接
wget
下载文件工具。
补充说明
wget 用来从指定 URL 下载文件。带宽很窄或不稳定网络中适应性强;失败会不断重试直至下载完毕;服务器打断后会从停止处继续下载。支持 HTTP/HTTPS/FTP 及代理,可在后台执行。
常用选项(常用部分)
-O 以指定文件名保存(指定动态链接文件名)
-o 将下载信息写入日志文件
-a 追加日志到文件
-c 断点续传
-b 转为后台下载
-i file 读取文件中的 URL 批量下载
-r 递归下载(慎用)
-m 镜像整站(= -r -N -l inf -nr)
-p 下载页面所需资源(图片等)
-k 转换链接为本地链接
-L 跟踪相对链接
-N 仅当远程文件更新才下载
-t N 重试 N 次(0=无限)
-T 秒 响应超时秒数
--limit-rate 速率 限速
-Q 大小 限制递归总下载量
--spider 不下载,只测试链接是否有效
--user-agent 伪装代理名
-Y on/off 打开/关闭代理
常见用法
wget http://www.example.com/testfile.zip # 下载单个文件
wget -O wordpress.zip http://example.com/d?id=1080 # 以指定文件名保存(动态链接常用)
wget --limit-rate=300k http://example.com/file # 限速下载
wget -c http://example.com/testfile.zip # 断点续传
wget -b http://example.com/testfile.zip # 后台下载(可用 tail -f wget-log 看进度)
wget --spider URL # 测试链接是否有效(定时下载前检查)
wget --tries=40 URL # 增加重试次数
wget -i filelist.txt # 批量下载(文件里每行一个 URL)
wget --mirror -p --convert-links -P ./LOCAL URL # 镜像整站到本地
wget --reject=gif URL # 下载网站但排除图片
wget -o download.log URL # 将下载信息存入日志文件
说明:默认以最后一个
/后的字符命名,动态链接常导致文件名错误,此时用-O指定。
参考链接
ping
测试主机间网络连通性(IPv4)。
补充说明
ping 用来测试主机之间网络的连通性。使用 ICMP 协议发出回应请求,远端网络正常则回应,从而判断其运作正常。
常用选项
-c 次数 指定回应次数后退出
-i 间隔 指定收发间隔(秒)
-n 只输出数值(不显示过程)
-r 忽略普通路由表,直接送到远端主机
-R 记录路由过程
-s 大小 设置数据包大小
-t 设置存活数值 TTL
-w 秒 超过该秒数即退出
-f 极限检测(快速发送)
-q 不显示执行过程(仅开头结尾)
常见用法
ping www.example.com # 测试到主机是否连通
ping -c 4 www.example.com # 只发 4 个包后退出
ping -i 0.2 host # 每 0.2 秒发一个包
ping -n 192.168.1.1 # 只输出数值结果
输出示例含:往返时间(time=ms)、丢包率(packet loss)、最小/平均/最大/偏差(rtt min/avg/max/mdev)。
参考链接
netstat
查看网络系统状态信息。
补充说明
netstat 命令用于打印 Linux 网络系统的状态信息,可了解整个系统的网络情况。可列出端口、连接状态、路由表、统计信息等。
常用选项
-a / --all 列出所有连接(含监听与未监听)
-t / --tcp 仅 TCP 连接
-u / --udp 仅 UDP 连接
-l / --listening 仅监听中的 Socket
-n / --numeric 直接用 IP/端口,不解析域名(加速)
-r / --route 显示路由表
-s / --statistics 显示各协议统计信息
-p / --programs 显示进程 PID 与名称(需 root)
-e / --extend 显示更详细信息
-A <网络类型> 列出该网络类型的连接(如 unix)
-c / --continuous 持续列出(每秒刷新)
常见用法
netstat -a # 列出所有端口(含监听与未监听)
netstat -at # 仅 TCP 端口
netstat -au # 仅 UDP 端口
netstat -l # 仅监听端口
netstat -lt # 仅监听 TCP 端口
netstat -an # 数字格式(不解析域名,且更快)
netstat -rn # 数字格式路由表
netstat -tlnp # 监听中的 TCP 端口 + 进程 PID
netstat -ap | grep ssh # 找出 ssh 相关端口(需 root)
netstat -anp | grep 8081 # 通过端口找进程 ID
netstat -s # 各协议统计信息
netstat -c # 每秒刷新输出(Ctrl+C 结束)
netstat -ntu | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c # 统计某端口连接数最多的 IP
相关:
ss是更快速的替代工具(见下方)。
参考链接
ss
比 netstat 更高效的 socket 统计工具。
补充说明
ss 命令用于显示处于活动状态的套接字信息,是 iproute2 包附带的工具,可获取与 netstat 类似的内容,且更快——尤其当连接数上万时,ss 远快于 netstat(后者等于“浪费生命”)。常用选项
-a / --all 显示所有套接字
-l / --listening 仅监听状态
-t / --tcp 仅 TCP
-u / --udp 仅 UDP
-n / --numeric 不解析服务名(快)
-e / --extended 详细信息
-o / --options 计时器信息
-p / --processes 显示使用套接字的进程
-i / --info TCP 内部信息
-s / --summary 套接字使用概况
-4 / --ipv4 仅 IPv4
-6 / --ipv6 仅 IPv6
过滤语法(
ss独有,很强大):ss state <状态>、ss sport = :port、ss dport OP PORT(OP 可为= < > >= <= !=)、ss dst/src <地址>。
常见用法
ss -tan # 列出所有 TCP 连接(最常用)
ss -tlnp # 监听中的 TCP 端口 + 进程
ss -s # 套接字摘要
ss -pl # 查看进程使用的 socket
ss -lp | grep 3306 # 找出打开某端口(3306)的应用
ss state all sport = :ssh # 列出端口为 ssh 的所有连接
ss -tan | awk 'NR>1{++S[$1]}END{for(a in S) print a,S[a]}' # 统计各 TCP 状态连接数
ss dst 192.168.1.5 # 匹配远程地址
ss src 192.168.1.103:ssh # 匹配本地地址
ss dport = :80 # 匹配目标端口 80
ss sport > :1024 # 本地端口大于 1024
ss -4 state closing # 按 TCP 状态过滤(closing)
效率对比:
time netstat -at与time ss可直观看出 ss 更快。
参考链接
nmcli
NetworkManager 命令行客户端(配置网络)。
补充说明
nmcli(NetworkManager client)是 NetworkManager 的网络管理客户端,用于命令行下查看、管理与配置网络(连接、设备、无线、DNS 等),替代图形界面的网络设置。常用选项
-t / -- terse 简洁输出(适合脚本解析)
-p / -- pretty 格式化输出
-m / -- mode 输出模式:tabular | multiline
-f / -- fields 指定输出字段(字段1,字段2,... | all | common)
-n / -- nocheck 不检查 nmcli 与 NetworkManager 版本
-v / -- version 显示程序版本
-h / -- help 查看帮助
对象(OBJECT): general 一般状态、networking 整体组网、radio 无线开关、connection 连接、device 受管设备、agent 秘密代理。
常见用法
nmcli connection show # 查看当前连接
nmcli connection show -active # 显示活动的连接
nmcli connection show "lan eth0" # 查看指定网络连接配置
nmcli connection reload # 重载/重启连接
nmcli device status # 显示设备状态(网卡)
nmcli device show eno16777736 # 显示指定接口的属性
nmcli device show # 显示全部接口属性
nmcli con up static # 启用名为 static 的连接
nmcli con up default # 启用默认连接
nmcli connection add con-name company ifname ens33 autoconnect no type ethernet ip4 192.168.1.2/24 gw4 192.168.1.1 # 新建连接配置
新建连接参数: con-name 会话名、ifname 网卡名、autoconnect 是否自动连接、type 网卡类型(ethernet)、ip4/ip6 地址、gw4/gw6 网关。
参考链接
五、压缩与归档
tar
打包与解压(归档)工具。
补充说明
tar 命令可为 Linux 文件和目录创建档案(打包),也能从档案中单独还原所需文件。需弄清两个概念:打包 是把一堆文件变成一个文件;压缩 是用压缩算法把大文件变小。tar 只负责打包,压缩需配合 gzip/bzip2/xz(通过 -z/-j/-J)。
常用压缩参数:
-zgzip(.tar.gz/.tgz)、-jbzip2(.tar.bz2)、-Jxz(.tar.xz)、-Zcompress(.tar.Z,过时)。
常用选项(常用部分)
-c / --create 创建新归档
-x / --extract 从归档解出文件
-t / --list 列出归档内容
-u / --update 仅追加比归档中更新的文件
-f 文件名 指定归档文件名(必须是最后一个参数!)
-z / --gzip 通过 gzip 压缩/解压
-j / --bzip2 通过 bzip2
-J / --xz 通过 xz
-v / --verbose 详细列出处理过程
-p / --preserve-permissions 保留权限(备份常用)
-C 目录 切换到指定目录再操作
--strip-components N 解压时去除文件名前 N 层路径
常见用法
tar -zcvf log.tar.gz log2012.log # 打包并以 gzip 压缩(最常用)
tar -jcvf log.tar.bz2 log2012.log # 打包并以 bzip2 压缩
tar -Jcvf log.tar.xz log2012.log # 打包并以 xz 压缩
tar -cf archive.tar foo bar # 仅打包,不压缩(.tar)
tar -tvf archive.tar # 查看 tar 包内文件
tar -zxvf log.tar.gz # 解压 .tar.gz(最常用)
tar -xvf xxx.tar.gz -C /usr/src/a # 解压到指定目录
tar -xvf xxx.tar.gz --strip-components 1 -C /usr/src/a # 解压并去掉一层路径
tar -ztvf log.tar.gz # 查看 .tar.gz 内文件(带 z)
tar -zcvpf log31.tar.gz log1 log2 # 打包并保留权限
tar -N "2012/11/13" -zcvf log17.tar.gz test # 只备份某日期之后的文件
tar --exclude scf/service -zcvf scf.tar.gz scf/* # 打包时排除部分文件
tar -cvf test.tar test --remove-files # 打包后删除源文件
速记:压缩
tar -jcv -f 包名 目标;查询tar -jtv -f 包名;解压tar -jxv -f 包名 -C 目录。
参考链接
六、权限管理
chmod
修改文件权限。
补充说明
chmod 命令用于文件或目录的访问权限修改(英文 change mode)。可通过数字(4 读 2 写 1 执行)或符号(rwx)设置所有者、所属组、其他人的权限。常用选项
-R / --recursive 递归修改目录及其内容的权限
权限数字:读=4、写=2、执行=1。三位数字分别对应 所有者 / 所属组 / 其他人(如 755、644)。
常见用法
chmod 755 script.sh # 所有者可读写执行,组与其他人可读执行
chmod 644 file.txt # 所有者读写,组与其他人只读
chmod +x script.sh # 给所有人添加可执行权限
chmod -x script.sh # 移除所有人可执行权限
chmod u+x,g-w,o+r file # 符号式:所有者加执行、组去掉写、其他人加读
chmod -R 755 /var/www # 递归修改目录权限(Web 目录常用)
chmod 700 dir/ # 仅所有者可读写执行
参考链接
七、进程管理
kill
结束进程。
补充说明
kill 命令用于结束进程(英文 kill,杀死)。通过进程 ID(PID)发送信号,默认发送 TERM(15)信号。常用 1(SIGHUP)强制结束。常用选项
-s 信号名/编号 指定发送的信号(如 -9、-15、-HUP)
-l 列出所有可用信号名
-p 仅打印目标 PID,不实际发送(dry-run)
常见信号:
1SIGHUP(强制结束)、9SIGKILL(强制杀死,不可忽略)、15SIGTERM(默认,优雅结束)、19SIGSTOP(暂停)、18SIGCONT(继续)。
常见用法
kill 1234 # 向 PID 1234 发送 TERM 信号(默认)
kill -9 1234 # 强制杀死 PID 1234(SIGKILL)
kill -1 1234 # 发送 SIGHUP(常用于重载配置)
kill -l # 列出所有信号名及编号
kill -s KILL 1234 # 等价于 kill -9
kill -l | grep SIG # 筛选信号列表
PID=$(pgrep -f myprocess); kill -9 "$PID" # 按名称找 PID 并结束
提示:先用
ps/pgrep找到 PID,再kill;优先用 15 优雅结束,无效再用 9 强制。
参考链接
八、版本控制
git
目前世界上最先进的分布式版本控制系统。
补充说明
git 命令是分布式版本控制工具,用于版本管理与代码协作。常用操作见下方(已精简冗长的历史叙述)。
常用命令
git --version # 查看版本
git init # 初始化仓库
git clone <url> [目录名] # 克隆远程仓库(支持 http/ssh/git/本地等协议)
git add <文件|.|*> # 将文件添加到暂存区(. 或 * 代表全部)
git rm --cached <文件> # 撤销 git add(commit 前)
git reset HEAD [文件] # 从暂存区移出(也可撤销 add)
git commit -m "message" # 提交并写注释
git status # 查看工作区状态
git log # 查看提交历史
git branch # 列出分支
git branch <name> # 创建分支
git branch -d <name> # 删除分支
git checkout <branch> # 切换分支
git checkout -b <name> # 创建并切换分支
git merge <branch> # 合并分支
git pull # 拉取并合并远程更新
git push -u origin master # 推送并设置默认跟踪分支
git push -f origin master # 强制推送(--force)
git remote add origin <url> # 添加远程仓库
git remote -v # 查看远程仓库
git tag <name> # 打标签
git stash # 保存当前修改到栈
git stash pop # 恢复 stash
配置与 SSH
git config --global user.name "你的名字" # 修改全局用户名
git config --global user.email "邮箱" # 修改全局邮箱
git config --list # 查看配置
git config --global core.autocrlf input # 配置自动换行(提交转 LF)
ssh-keygen -t rsa -C "你的邮箱" # 生成 SSH 密钥
ssh -T git@github.com # 测试密钥是否生效
ssh-copy-id -i ~/.ssh/公钥.pub user@host # 将公钥上传到服务器(免密登录)
多账号 / 免密:可为不同仓库配置不同密钥,并在
~/.ssh/config中用Host别名区分(详见原 git 文档)。
参考链接
九、帮助与权限提升
sudo
以其他用户身份执行命令。
补充说明
sudo 命令允许基本用户以系统管理员(root)或其他用户身份运行命令(英文 super user do)。可临时提升权限执行特权操作,并记录审计日志。常用选项
-u 用户 / -u UID 指定以哪个用户身份执行(默认 root)
-h / --help 显示帮助并退出
-V / --version 显示版本并退出
-l / --list 列出当前用户可执行的命令
-k / --invalidate 使身份凭证失效(下次需重新验证)
常见用法
sudo command # 以 root 身份执行 command
sudo -u otheruser cmd # 以 otheruser 身份执行
sudo -l # 列出当前用户可执行的命令
sudo apt install pkg # 以 root 安装软件包
sudo systemctl restart nginx # 以 root 管理服务
提示:首次使用 sudo 需输入当前用户密码;配置不当可能带来安全风险,建议按需授权。
相关命令
chmod、chown、ls、cat、ls -l等可配合 sudo 以 root 身份查看/修改系统文件。
man
查看命令帮助手册。
补充说明
man 命令是通过 man 手册查看 Linux 指令、配置文件与编程帮助的工具。语法
man (选项)(参数)
选项
-a / --all 在所有 man 手册中搜索
-f / --whatis 显示关键字的简短描述(等价 whatis)
-P 程序 指定分页程序
-M 路径 指定 man 手册搜索路径
参数
数字 指定从哪本手册搜索;关键字 指定要搜索的关键字
手册章节号对照:
1 用户可在 shell 操作的命令或执行文件
2 系统内核可调用的函数与工具
3 常用函数与函数库(多为 C 库 libc)
4 设备文件说明(/dev 下)
5 配置文件或某些文件格式
6 游戏(games)
7 惯例与协议(文件系统、网络协议、ASCII 等)
8 系统管理员可用的管理命令
9 与 kernel 有关的文件
常见用法
man ls # 查看 ls 手册(左上角显示 LS(1))
man ifconfig # 查看 ifconfig(显示 IFCONFIG(8))
man 3 sleep # 指定章节(查库函数 sleep 用第 3 章)
man -s 8 route # 指定章节查看 route
相关:
tldr是简化版手册,只列出常用 Sample 与说明,比 man 更轻量。
本文档由各独立命令文档合成,保留了各命令的原始结构与参考链接,并对冗长内容做了精简,便于快速查阅。