🐧 Linux 命令行

Multilingual DevOps cheat sheet: Linux, Docker, Git, Kubernetes, Helm, Terraform, practical scenarios & templates.
发布于

2025年8月31日

用于导航、文件、进程、网络、监控、软件包和自动化的基础和高级命令。适用于 DevOps 工作流。

🔹 基本命令

命令

示例

描述

cat 显示文件内容或连接多个文件
cat file.txt

查看文件内容

cat file1 file2

连接并输出两个文件

cat file1 file2 > merged.txt

连接文件并保存到新文件

cd 切换当前工作目录
cd /etc

进入绝对路径 /etc

cd ~

进入主目录

cd ..

返回上一级目录

cd -

返回上一个目录

clear 清除终端屏幕
cp 复制文件和目录
cp file1.txt file2.txt

复制文件并使用新名称

cp -r dir1 dir2

递归复制目录

cp -i file.txt /tmp/

覆盖前提示确认

echo 打印字符串或环境变量
echo "Hello, World!"

打印简单字符串

echo $HOME

显示主目录路径

echo -e "1\t2\n3"

解释转义序列 ( )

history 显示命令历史
id 显示当前用户的 UID、GID 和组成员
ls 列出文件和目录
ls -l

长列表,包含权限和所有者

ls -a

显示隐藏文件

ls -lh

人类可读的文件大小

mkdir 创建目录
mkdir folder

创建单个目录

mkdir -p a/b/c

创建嵌套目录

mkdir dir{1,2,3}

一次创建多个目录

mv 移动或重命名文件/目录
mv oldname.txt newname.txt

重命名文件

mv file.txt /path/to/dir/

将文件移动到其他目录

mv *.txt archive/

移动所有 .txt 文件到 archive 文件夹

pwd 打印当前工作目录
pwd -P

显示物理路径(不解析符号链接)

cd /tmp && pwd

切换到 /tmp 后显示路径

rm 删除文件或目录
rm file.txt

删除文件

rm -i file.txt

删除文件并确认

rm -r folder/

递归删除目录

rm -rf folder/

强制删除不确认

rmdir 删除空目录
rmdir emptydir

删除 emptydir 目录

touch 创建空文件或更新修改时间
touch newfile.txt

不存在时创建新空文件

touch a b c

一次创建多个文件

touch -c file.txt

仅更新时间,即使文件不存在也不创建

whereis 查找命令的二进制文件、源码和手册页
whereis ls

查找 ls 的位置

whereis bash

显示 Bash 二进制文件和文档路径

whereis -b bash

仅搜索二进制文件

which 显示命令的可执行路径
which python3

显示 python3 的路径

which grep

显示 grep 的路径

which --skip-alias ls

忽略别名进行搜索

whoami 打印当前有效用户名

🔸 中级命令

命令

示例

描述

chmod 更改文件或目录权限
chmod 755 file

用八进制表示法设置权限 (如 755)

chmod +x script.sh

为脚本添加执行权限

chmod -R 644 dir/

递归设置目录权限

chown 更改文件所有者和组
chown user file

更改文件的所有者

chown user:group file

更改所有者和组

chown -R user:group dir/

递归更改所有者和组

curl 从服务器传输数据(HTTP、HTTPS 等)
curl -I https://example.com

发送 HEAD 请求(仅返回头部)

curl -O https://example.com/file.txt

下载文件并保留原始名称

curl -d "a=1&b=2" -X POST URL

发送带表单数据的 POST 请求

df 显示文件系统磁盘空间使用情况
df -h

人类可读的单位

df /home

显示指定挂载点的使用情况

df -T

显示文件系统类型

diff 比较文件或目录
diff file1 file2

比较两个文件

diff -u old.c new.c

统一 diff(补丁风格)

diff -r dir1 dir2

递归比较目录

du 估算文件和目录空间使用情况
du -sh *

显示当前目录下项目大小

du -h file.txt

显示单个文件大小

du -sh --max-depth=1 /var

汇总顶层子目录大小

find 按名称、大小、时间等搜索文件/目录
find . -name "*.log"

查找当前目录下所有 .log 文件

find / -type f -size +100M

查找大于 100 MB 的文件

find . -mtime -1

查找最近一天修改的文件

free 显示已用和可用内存
free -h

人类可读的内存单位

free -m

以 MB 显示数值

watch -n 2 free -h

每 2 秒刷新一次输出

grep 使用正则表达式搜索文本
grep "error" logfile

查找包含 error 的行

grep -r "error" /var/log

递归搜索目录

grep -i "fail" file

忽略大小写搜索

head 输出文件的开头部分
head -n 10 file

前 10 行

head -n 20 file.txt

前 20 行

head -c 100 file

前 100 字节

hostname 显示或设置系统主机名
hostname newname

临时设置主机名,重启后失效

hostname -I

显示 IP 地址

kill 向进程发送信号
kill -9 1234

强制结束指定 PID 的进程

kill -TERM 1234

用 SIGTERM 优雅终止

pkill -f python

结束匹配模式的进程

ping 使用 ICMP 回显请求检查网络连通性
ping 8.8.8.8

Ping 一个地址

ping -c 4 ya.ru

发送 4 个数据包

ping -i 2 1.1.1.1

设置 2 秒间隔

ps 显示进程状态
ps aux

列出所有进程

ps -ef | grep nginx

grep 按名称过滤

ps -u $USER

仅显示当前用户的进程

rsync 快速增量文件传输
rsync -av src/ dst/

本地目录同步

rsync -avz user@host:/src /dst

通过 SSH 与远程主机同步

rsync --delete src/ dst/

删除目标中源中缺失的文件

scp 安全复制(远程文件复制程序)
scp file user@host:/path

复制文件到远程主机

scp user@host:/file.txt .

从远程主机复制文件

scp -r dir user@host:/path

递归复制目录

sort 对文本行进行排序
sort file.txt

按字母排序

sort -r file.txt

逆序排序

sort -n numbers.txt

数字排序

tail 输出文件的结尾部分;可实时跟踪变化
tail -f logfile.log

实时跟踪日志

tail -n 20 file.txt

显示最后 20 行

tail -c 100 file.txt

显示最后 100 字节

tar 创建、列出或解压 tar 压缩包
tar -czf archive.tgz dir/

创建压缩的 .tgz

tar -xzf archive.tgz

解压 .tgz

tar -tf archive.tgz

列出压缩包内容

tee 从标准输入读取并写入标准输出和文件
echo "test" | tee out.txt

将输出写入 out.txt 并显示

ls | tee list.txt

保存 ls 输出到文件并显示

command | tee -a log.txt

追加输出到 log.txt 末尾

top 显示 Linux 任务(交互式进程查看器)
top

启动 top

htop

替代交互式查看器 (htop)

top -o %MEM

按内存使用排序

uptime 显示系统运行时间
uptime -p

友好格式的运行时间

uptime -s

系统启动时间

wget 非交互式网络下载工具
wget https://site.com/file.zip

通过 URL 下载文件

wget -c file.zip

恢复中断的下载

wget -O saved.txt URL

另存为不同的文件名

wc 统计文件的行数、单词数和字节数
wc -l file

统计行数

wc -w file

统计单词数

wc -m file

统计字符数

uniq 报告或过滤重复行(相邻重复)
uniq file.txt

删除相邻重复行

sort file | uniq

排序后删除重复行

sort file | uniq -c

统计每行出现次数

yes 不断输出字符串直到结束;常用于脚本
yes "y" | command

始终回答 “y”

yes | rm -i *

自动确认交互式删除

yes no | command

回答 “no”

🔧 高级命令

命令

示例

描述

at 计划在指定时间运行一次性命令
at now + 1 minute

在一分钟后运行命令

atq

列出待处理的作业

atrm

删除待处理的作业

awk 模式扫描和处理语言
awk '{print $1}' file

打印第一列

ps aux | awk '$3 > 50'

按 CPU 使用率过滤进程

cat file.txt | awk '{print $2}'

打印每行的第二个字段

awk '/error/ {print $0}' logfile

打印匹配模式的行

crontab 安装、列出或删除用户的 cron 作业
crontab -e

编辑当前用户的 crontab

crontab -l

列出 cron 作业

crontab -r

删除当前用户的 crontab

cut 删除或选择文件中每行的部分内容
cut -d':' -f1 /etc/passwd

打印 /etc/passwd 中的用户名

echo "a:b:c" | cut -d':' -f2

使用 ‘:’ 作为分隔符切割第二个字段

cut -c1-5 filename

按字符位置选择

df 报告文件系统磁盘空间使用情况
df -h

人类可读的大小

df -T

显示文件系统类型

df /home

显示主目录的使用情况

env 在修改后的环境中运行命令或打印环境变量
env | grep PATH

显示 PATH 条目

env -i bash

启动一个干净的空环境 shell

export 为当前 shell/会话设置环境变量
export VAR=value

为此 shell 设置变量

export PATH=$PATH:/new/path

将目录追加到 PATH

export -p

列出已导出的变量

free 显示内存使用情况
free -m

以 MB 显示

free -h

人类可读的单位

free -s 5

每 5 秒采样一次

hostnamectl 查询和更改系统主机名及相关设置
hostnamectl status

显示主机名状态

hostnamectl set-hostname newname

设置新的静态主机名

ifconfig / ip 用于查看/管理接口和地址的 IP 工具
ifconfig

显示网络接口(旧版)

ip a

使用 ip 显示地址

ip link set eth0 up

启用一个接口

iostat 报告 CPU 和 I/O 统计信息
iostat -x 2

每 2 秒显示扩展统计信息

iostat -d 5 3

设备统计(间隔 5 秒,3 次报告)

iptables IPv4 包过滤和 NAT 管理工具
iptables -L

列出当前规则

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

允许 22 端口的 SSH 连接

iptables -F

清空所有规则

journalctl 查询 systemd 日志
journalctl -xe

显示带上下文的最近错误

journalctl -u nginx.service

显示某个服务的日志

journalctl --since "2 hours ago"

显示自相对时间以来的日志

ln 在文件之间创建链接
ln -s target link

创建符号链接

ln file.txt backup.txt

创建硬链接

ln -sf target link

强制重新创建符号链接

sed 流编辑器,用于过滤和转换文本
sed 's/old/new/g' file

全局替换字符串

sed -n '1,5p' file

仅打印某个范围的行

sed '/pattern/d' file

删除匹配的行

systemctl 控制 systemd 系统和服务管理器
systemctl status nginx

显示服务状态

systemctl start nginx

启动服务

systemctl enable nginx

开机时启用服务

tr 转换或删除字符
tr a-z A-Z

将小写字母转换为大写字母

echo "hello" | tr 'h' 'H'

替换字符

echo "abc123" | tr -d '0-9'

删除数字

type 描述 shell 如何解析名称
type ls

显示 ls 的解析方式

type cd

显示 cd 的解析方式

type python3

显示 python3 的解析方式

ulimit 获取或设置用户进程资源限制
ulimit -n

显示最大打开文件数

ulimit -c unlimited

启用核心转储

ulimit -u 4096

限制用户进程数量

uptime 显示系统运行时间和平均负载
uptime -p

美化格式的运行时间

uptime -s

显示启动时间

xargs 从标准输入构建并执行命令行
xargs -n 1 echo

将每个参数单独输出一行

echo "a b c" | xargs -n 1

将单词拆分为独立参数

find . -name '*.txt' | xargs rm

查找文件并用 xargs 删除它们

🌐 网络命令

命令

示例

描述

curl 向服务器传输数据或从服务器获取数据
curl -X POST -d "a=1" URL

使用表单数据发送 POST 请求

curl -I URL

仅获取响应头

curl -o file.html URL

下载并保存到文件

dig DNS 查询工具
dig openai.com

查询 A 记录

dig +short openai.com

简短回答

dig @8.8.8.8 openai.com

使用特定的 DNS 服务器

ftp 文件传输协议客户端
ftp host

连接到 FTP 服务器

ftp -n host

连接时不自动登录

ftp> get file.txt

在 FTP 会话中下载文件

ip address 显示/操作 IP 地址
ip addr show eth0

显示 eth0 的地址信息

ip addr

列出所有地址

ip link 显示/操作网络设备
ip link show

显示网络链路

ip link set eth0 up

启用一个接口

ip route 显示/操作 IP 路由表
ip route list

列出路由表

ip route add default via 192.168.1.1

添加默认路由

nc 任意 TCP/UDP 连接和监听
nc -zv host 22

扫描主机端口

nc -l 1234

监听 TCP 端口

nc host 1234 < file

向远程端口发送文件

nmap 网络探测工具和安全/端口扫描器
nmap -sP 192.168.1.0/24

对子网进行 ping 扫描

nmap -sV 192.168.1.1

检测服务/版本

nmap -O 192.168.1.1

操作系统检测

nslookup 查询互联网域名服务器
nslookup google.com

查询域名

nslookup 8.8.8.8

对 IP 进行反向查询

ssh OpenSSH 远程登录客户端
ssh user@host

连接到主机

ssh -p 2222 user@host

使用非默认端口连接

ssh -i ~/.ssh/id_rsa user@host

使用指定私钥登录

ss 检查套接字的工具
ss -tuln

列出 TCP/UDP 监听端口

ss -s

显示摘要统计信息

ss -l

列出监听套接字

telnet TELNET 协议用户接口
telnet host 80

连接到主机的 80 端口

telnet example.com 443

连接到 443 端口

telnet localhost 25

连接到本地 SMTP

traceroute 跟踪到网络主机的路由
traceroute 8.8.8.8

跟踪到某个 IP 的路径

traceroute -m 15 8.8.8.8

限制最大跳数

wget 从网页下载文件
wget -O file.txt URL

将输出保存到文件

wget URL

下载到当前目录

wget -c URL

继续未完成的下载

🔍 搜索和管理文件

命令

示例

描述

basename 去除文件名中的目录和后缀
basename /path/to/file

从路径中打印文件名

basename /path/to/file .txt

去除名称中的后缀

dirname 去除路径中的最后部分
dirname /path/to/file

显示路径中的目录部分

dirname /etc/passwd

显示 /etc/passwd 的父目录

du 估算文件占用空间
du -sh folder/

显示目录大小

du -h *

显示当前目录下项目的大小

du -c folder1 folder2

多个目录的累计大小

file 确定文件类型
file some.bin

检测文件类型

file *

检测目录下所有文件的类型

file -i file.txt

显示 MIME 类型

find 搜索文件
find /path -type f -name "*.sh"

按名称查找 shell 脚本

find . -size +10M

查找大于 10 MB 的文件

find /tmp -mtime -1

查找最近一天修改的文件

locate 使用数据库按名称查找文件
locate filename

查找文件名

locate *.conf

通配符搜索

locate -i README

不区分大小写搜索

realpath 打印解析后的绝对路径
realpath file

解析文件路径

realpath ../relative/path

解析相对路径

stat 显示文件或文件系统状态
stat file

显示详细的文件状态

stat -c %s file

仅打印文件大小

stat -f file

显示文件系统状态

tree 以树状格式列出目录内容
tree

打印目录树

tree -L 2

限制显示深度

tree -a

包含隐藏文件

📊 系统监控

命令

示例

描述

dmesg 打印或控制内核环形缓冲区
dmesg | tail

显示最近的内核消息

dmesg | grep usb

仅过滤 USB 消息

free 显示内存使用情况
free -h

人类可读的单位

free -m

以 MB 显示

htop 交互式进程查看器
htop

运行 htop

iotop 显示进程的 I/O 使用情况
iotop

运行 iotop

iotop -o

仅显示正在进行 I/O 的进程

lsof 列出打开的文件
lsof -i :80

显示使用端口 80 的进程

lsof -u username

显示用户打开的文件

uptime 显示系统运行时间和负载平均值
vmstat 报告虚拟内存统计信息
vmstat 1

每 1 秒刷新一次

vmstat 5 3

每 5 秒间隔,输出 3 次

watch 周期性执行程序并显示输出
watch -n 1 df -h

监视磁盘使用情况

watch -d free -h

高亮变化并监视内存

📦 软件包管理

命令

示例

描述

apt APT 包管理器 (Debian/Ubuntu)
apt install curl

安装一个软件包

apt remove curl

删除一个软件包

apt update && apt upgrade

更新包列表并升级

dnf Dandified YUM (Fedora/RHEL 系列)
dnf install curl

安装一个软件包

dnf upgrade

升级软件包

rpm RPM 包管理器
rpm -ivh package.rpm

安装一个 RPM 软件包

rpm -e package

卸载一个软件包

snap Snappy 包管理器
snap install app

安装一个 snap

snap remove app

删除一个 snap

yum Yellowdog Updater Modified (RHEL/CentOS)
yum install curl

安装一个软件包

yum remove curl

删除一个软件包

💽 文件系统

命令

示例

描述

blkid 定位/打印块设备属性
blkid

列出块设备及其属性

df 报告文件系统磁盘空间使用情况
df -Th

按类型以人类可读的大小显示

fsck 检查并修复 Linux 文件系统
fsck /dev/sda1

检查一个设备

lsblk 列出块设备信息
lsblk

以树状结构列出设备

mkfs 创建 Linux 文件系统
mkfs.ext4 /dev/sdb1

创建一个 ext4 文件系统

mount 挂载文件系统
mount /dev/sdb1 /mnt

将设备挂载到 /mnt

mount | grep /mnt

按路径过滤显示已挂载的文件系统

parted 分区操作程序
parted /dev/sdb

打开磁盘进行分区

umount 卸载文件系统
umount /mnt

卸载一个挂载点

🤖 脚本与自动化

命令

示例

描述

alias 定义或显示 shell 别名
alias ll='ls -la'

创建一个常用别名

alias

列出已定义的别名

bash / sh 运行 shell 脚本
bash script.sh

用 Bash 运行脚本

sh script.sh

sh 运行脚本

crontab 用户级别的定时任务表
crontab -e

编辑当前用户的 crontab

read 在 shell 脚本中提示用户输入
read name

读取输入到变量

set 设置 shell 选项/位置参数
set -e

遇到第一个错误时退出

source 在当前 shell 中读取并执行文件中的命令
source ~/.bashrc

重新加载 shell 配置

trap 捕获信号并执行命令
trap "echo 'exit'" EXIT

在 shell 退出时运行命令

🛠 开发与调试

命令

示例

描述

gcc GNU C 编译器
gcc main.c -o app

编译一个 C 源文件

gdb GNU 调试器
gdb ./app

调试已编译的二进制文件

git 分布式版本控制系统
git status

显示工作区状态

git commit -m "msg"

提交并添加消息

ltrace 库调用跟踪器
ltrace ./app

跟踪二进制文件的库调用

make 维护程序组的工具
make

根据 Makefile 构建

shellcheck Shell 脚本静态分析工具
shellcheck script.sh

检查一个 shell 脚本

strace 跟踪系统调用和信号
strace ./app

跟踪程序的系统调用

valgrind 构建动态分析工具的检测框架
valgrind ./app

在 Valgrind 下运行程序

vim / nano 命令行文本编辑器
vim file.sh

用 Vim 编辑

nano file.sh

用 Nano 编辑

📌 杂项

命令

示例

描述

cal 显示日历
cal 2025

显示整年日历

cal 08 2025

显示特定月份

date 显示或设置系统日期和时间
date +%T

打印当前时间 (HH:MM:SS)

date -d "next friday"

打印相对日期

factor 整数分解
factor 100

分解一个数字

man 格式化并显示联机手册页
man tar

打开一个手册页

man -k copy

按关键字搜索手册

man 5 passwd

打开指定章节的手册

seq 打印数字序列
seq 1 5

从 1 数到 5

seq 1 2 9

带步长计数

seq -s ',' 1 5

用自定义分隔符连接数字

yes 重复输出字符串直到终止
yes | rm -r dir

自动确认递归删除

📚 附加资源

📘 man 手册页 - 命令的详细说明文档:

man ls
man rm

📙 TLDR - 流行命令的简明用法示例:

🧠 提示: 安装 tldr 获取速查表风格的帮助:

sudo apt install tldr   # 或者: npm install -g tldr
tldr tar                # tar 命令的简短示例说明

🌐 有用的链接

Linux 在线 man 手册 — 官方手册页,可通过命令名称搜索:
https://man7.org/linux/man-pages/

简化和社区驱动的 man 手册 — 社区驱动的帮助页面,包含实用示例:
https://tldr.sh/