Linux 命令集全解析:从基础到高级实践指南
Linux 作为一款开源操作系统,其强大的生命力很大程度上源于命令行工具。无论是系统管理、开发调试、自动化脚本还是日常运维,掌握 Linux 命令都是提升效率的核心技能。相较于图形界面,命令行工具更轻量、更灵活,且能通过组合实现复杂功能。本文将系统梳理 Linux 命令集,从基础语法到高级技巧,结合实例与最佳实践,帮助读者构建完整的命令行知识体系。
目录#
-
- 命令结构与组成
- 选项与参数的区别
- 如何获取帮助(man 与 --help)
-
- 浏览与切换:
ls,cd,pwd - 创建与删除:
mkdir,touch,rm - 复制与移动:
cp,mv - 查找与统计:
find,du,df - 最佳实践:安全操作与效率技巧
- 浏览与切换:
-
- 查看文件:
cat,more,less - 行操作:
head,tail - 搜索匹配:
grep - 流编辑:
sed - 数据提取:
awk - 最佳实践:大文件处理与精准匹配
- 查看文件:
-
- 系统基本信息:
uname,hostname,uptime - 资源监控:
top,htop,free,vmstat - 磁盘与文件系统:
df,du,iostat
- 系统基本信息:
-
- 进程查看:
ps,pstree - 进程控制:
kill,pkill,pgrep - 作业控制:
jobs,bg,fg
- 进程查看:
-
- 网络诊断:
ping,traceroute,mtr - 网络配置:
ip,ifconfig(已过时) - 连接监控:
netstat,ss - 数据传输:
curl,wget,scp
- 网络诊断:
-
- 用户/组操作:
useradd,groupadd,passwd - 权限修改:
chmod,chown,chgrp - 特权管理:
sudo,su
- 用户/组操作:
-
- Debian/Ubuntu:
apt系列 - RHEL/CentOS:
yum/dnf系列 - Arch Linux:
pacman系列
- Debian/Ubuntu:
-
- 管道(
|)与重定向(>,>>,<) - 别名(
alias)与环境变量 - 通配符与正则表达式基础
- 管道(
1. Linux 命令基础#
1.1 命令基本结构#
Linux 命令的通用格式为:
命令 [选项] [参数]- 命令(Command):核心功能,如
ls(列出文件)、cd(切换目录)。 - 选项(Options):修改命令行为,分为短选项(
-前缀,如-l)和长选项(--前缀,如--help)。 - 参数(Arguments):命令作用的对象,如文件名、目录路径。
示例:
ls -l /home/user # 以长格式列出 /home/user 目录内容1.2 选项与参数的区别#
- 选项:控制命令的细节行为,如
-l(长格式)、-a(显示隐藏文件)。 - 参数:指定命令的操作目标,如文件路径、用户名。
注意:部分命令的选项和参数顺序可互换,但建议按「命令 → 选项 → 参数」顺序书写,提高可读性。
1.3 获取帮助:man 与 --help#
man 命令:查看命令的手册页(最权威),按q退出。
示例:man ls查看ls命令的详细说明。命令 --help:快速查看命令的选项摘要。
示例:ls --help列出ls的常用选项。
2. 文件与目录管理命令#
文件与目录管理是 Linux 命令最核心的应用场景,以下是高频命令详解。
2.1 浏览与切换:ls, cd, pwd#
ls(列出目录内容)#
- 功能:列出指定目录的文件和子目录。
- 常用选项:
-l:长格式显示(权限、所有者、大小、修改时间等)。-a:显示隐藏文件(以.开头的文件)。-h:以人类可读格式显示大小(如1K,2M)。-t:按修改时间排序(最新在前)。
- 示例:
ls -laht /home # 显示 /home 目录下所有文件(含隐藏),按时间排序,长格式+人类可读大小
cd(切换目录)#
- 功能:切换当前工作目录。
- 特殊路径:
cd或cd ~:切换到当前用户家目录。cd ..:切换到父目录。cd -:切换到上一次工作目录。
- 示例:
cd /var/log # 切换到 /var/log 目录 cd ~/Documents # 切换到用户家目录下的 Documents 子目录
pwd(显示当前路径)#
- 功能:打印当前工作目录的绝对路径。
示例:pwd→ 输出/home/user/Documents。
2.2 创建与删除:mkdir, touch, rm#
mkdir(创建目录)#
- 功能:创建新目录。
- 常用选项:
-p:递归创建嵌套目录(父目录不存在时自动创建)。
- 示例:
mkdir test # 创建单个目录 test mkdir -p a/b/c # 递归创建 a/b/c 嵌套目录
touch(创建空文件)#
- 功能:创建空文件,或更新已有文件的修改时间。
示例:touch file.txt→ 创建空文件file.txt。
rm(删除文件/目录)#
- 功能:删除文件或目录(危险操作,需谨慎!)。
- 常用选项:
-f:强制删除,不提示(忽略不存在的文件)。-r:递归删除目录及其内容。-i:删除前提示确认(安全选项)。
- 示例:
rm file.txt # 删除单个文件(会提示确认,除非设置了 alias rm='rm -i') rm -rf dir/ # 强制递归删除 dir 目录(高危!避免用于系统目录) rm -i *.log # 删除所有 .log 文件,删除前逐个确认
最佳实践:
- 避免直接使用
rm -rf /或rm -rf *,可先用ls确认目标文件。 - 重要文件建议先备份,或使用
-i选项强制确认。
2.3 复制与移动:cp, mv#
cp(复制文件/目录)#
- 功能:复制文件或目录。
- 常用选项:
-r:递归复制目录。-i:覆盖前提示确认。-a:归档复制(保留权限、时间戳等元数据,常用于备份)。
- 示例:
cp file.txt /tmp/ # 复制 file.txt 到 /tmp 目录 cp -r dir/ /backup/ # 递归复制 dir 目录到 /backup cp -ai old/ new/ # 归档复制 old 目录到 new 目录(保留所有属性)
mv(移动/重命名文件)#
- 功能:移动文件/目录,或重命名(同一目录下操作即为重命名)。
示例:mv file.txt /tmp/ # 移动 file.txt 到 /tmp 目录 mv oldname.txt newname.txt # 重命名文件 mv dir/ /backup/ # 移动 dir 目录到 /backup
2.4 查找与统计:find, du, df#
find(查找文件/目录)#
- 功能:按条件递归查找文件/目录。
- 常用参数:
-name "模式":按文件名匹配(支持通配符*?)。-type f/d:指定类型(f文件,d目录)。-size +10M:查找大小大于 10M 的文件(-10M为小于)。-mtime -7:查找 7 天内修改过的文件(+7为 7 天前)。-exec 命令 {} \;:对找到的文件执行指定命令({}代表文件名)。
- 示例:
find /home -name "*.log" # 在 /home 下查找所有 .log 文件 find /var -type f -size +100M # 在 /var 下查找大小超过 100M 的文件 find . -mtime -1 -exec grep "error" {} \; # 在当前目录查找 1 天内修改的文件,并搜索 "error"
du(查看目录大小)#
- 功能:估算文件/目录的磁盘占用大小。
- 常用选项:
-s:仅显示总计大小。-h:人类可读格式(K,M,G)。
- 示例:
du -sh /home/user # 显示 /home/user 目录的总大小 du -h * # 显示当前目录下所有文件/目录的大小(含子目录)
df(查看磁盘空间)#
- 功能:显示文件系统的磁盘使用情况。
- 常用选项:
-h:人类可读格式。-T:显示文件系统类型。
- 示例:
df -h # 以人类可读格式显示所有挂载点的磁盘使用情况 df -Th / # 显示根目录的文件系统类型和使用情况
3. 文本处理命令#
Linux 系统中,日志、配置文件多为文本格式,掌握文本处理命令可大幅提升效率。
3.1 查看文件:cat, more, less#
cat(连接并显示文件)#
- 功能:显示文件内容,或连接多个文件。
示例:cat file.txt # 显示 file.txt 内容 cat a.txt b.txt > c.txt # 合并 a.txt 和 b.txt 到 c.txt - 注意:避免用
cat查看超大文件(会瞬间刷屏),建议用less或more。
more 与 less(分页显示文件)#
more:按页显示文件,支持空格键翻页,q退出。
示例:more large_file.log。less:功能更强大的分页工具,支持上下滚动、搜索(/关键词向下搜,?关键词向上搜),q退出。
示例:less /var/log/syslog。
3.2 行操作:head, tail#
head(显示文件头部)#
- 功能:显示文件的前 N 行(默认前 10 行)。
示例:head file.txt # 显示前 10 行 head -n 5 file.txt # 显示前 5 行
tail(显示文件尾部)#
- 功能:显示文件的后 N 行,或实时监控文件更新(日志常用)。
- 常用选项:
-n:指定行数(默认 10 行)。-f:实时跟踪文件新增内容(Ctrl+C退出)。
- 示例:
tail /var/log/auth.log # 显示 auth.log 最后 10 行 tail -n 20 /var/log/syslog # 显示最后 20 行 tail -f /var/log/nginx/access.log # 实时监控 nginx 访问日志
3.3 搜索匹配:grep#
- 功能:在文本中搜索匹配指定模式的行(支持正则表达式)。
- 常用选项:
-i:忽略大小写。-n:显示匹配行的行号。-r:递归搜索目录下的所有文件。-v:反向匹配(显示不包含模式的行)。--color:高亮显示匹配的关键词。
- 示例:
grep "error" /var/log/syslog # 在 syslog 中搜索 "error" grep -ir "warning" /etc/ # 递归搜索 /etc 目录下含 "warning" 的文件(忽略大小写) grep -n "^root" /etc/passwd # 显示 /etc/passwd 中以 "root" 开头的行及其行号
3.4 流编辑:sed#
- 功能:流式文本编辑,支持替换、删除、插入等操作(不修改原文件,除非重定向输出)。
- 常用语法:
sed [选项] '操作' 文件。 - 示例:
sed 's/old/new/g' file.txt # 将 file.txt 中所有 "old" 替换为 "new"(输出到终端,不修改原文件) sed -i 's/old/new/g' file.txt # 直接修改 file.txt(-i 原地替换,建议先备份) sed '/^#/d' file.txt # 删除所有以 "#" 开头的行(注释行)
3.5 数据提取:awk#
- 功能:按列处理文本,适合结构化数据(如日志、CSV)。
- 基本语法:
awk '条件 {动作}' 文件,默认以空格/制表符分隔列,列索引从$1开始($0代表整行)。 - 示例:
awk '{print $1, $3}' file.txt # 打印每行第 1 列和第 3 列 awk -F ',' '{print $2}' data.csv # 以逗号分隔,打印 CSV 文件的第 2 列 awk '$3 > 100 {print $0}' scores.txt # 打印第 3 列(分数)大于 100 的行
4. 系统信息与监控命令#
4.1 系统基本信息#
uname -a:显示内核版本、主机名、硬件架构等完整信息。
示例输出:Linux server 5.4.0-125-generic #141-Ubuntu SMP Wed Aug 31 11:30:15 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux。hostname:显示或设置主机名。uptime:显示系统运行时间、登录用户数、负载均值(1/5/15 分钟)。
示例输出:12:34:56 up 2 days, 3h, 2 users, load average: 0.85, 0.92, 0.78(负载均值越低越好,通常建议不超过 CPU 核心数)。
4.2 资源监控#
top 与 htop(进程监控)#
top:实时显示进程资源占用(CPU、内存、PID 等),按P按 CPU 排序,M按内存排序,q退出。htop(需安装):top的增强版,支持鼠标操作、颜色显示,更直观。
安装:apt install htop(Debian/Ubuntu)或yum install htop(RHEL/CentOS)。
free(内存使用)#
- 功能:显示内存和交换分区使用情况。
示例:free -h(-h人类可读格式)。
输出解读:total(总内存)、used(已用)、free(空闲)、available(可用,含缓存/缓冲区)。
vmstat(虚拟内存统计)#
- 功能:显示系统内存、进程、IO 等统计信息。
示例:vmstat 2(每 2 秒刷新一次)。
4.3 磁盘与文件系统#
df -h:查看磁盘空间使用情况(已在文件管理部分提及)。iostat:监控磁盘 IO 性能(需安装sysstat包)。
示例:iostat -x 1(每秒显示一次详细 IO 统计)。
5. 进程管理命令#
5.1 进程查看:ps, pstree#
ps(进程状态)#
- 功能:显示当前进程快照。
- 常用选项组合:
ps aux:BSD 风格,显示所有用户进程(a所有终端,u显示用户信息,x无终端进程)。ps -ef:System V 风格,显示进程树(PPID 父进程 ID)。
- 示例:
ps aux | grep nginx # 查找所有 nginx 进程 ps -ef | grep 'python3' # 查找 python3 进程及其父进程
pstree(进程树)#
- 功能:以树状图显示进程间关系。
示例:pstree -p(显示 PID)。
5.2 进程控制:kill, pkill, pgrep#
kill [信号] PID:向进程发送信号(默认信号 15/SIGTERM,请求进程退出;信号 9/SIGKILL,强制终止)。
示例:kill 1234 # 发送 SIGTERM 终止 PID 1234 的进程 kill -9 1234 # 强制终止 PID 1234(慎用,可能导致数据丢失)pgrep 进程名:通过进程名查找 PID。
示例:pgrep nginx→ 输出 nginx 进程的 PID。pkill 进程名:通过进程名终止进程(等效于kill $(pgrep 进程名))。
示例:pkill -9 nginx→ 强制终止所有 nginx 进程。
5.3 作业控制:jobs, bg, fg#
- 后台运行:命令后加
&,如sleep 100 &。 jobs:查看当前终端的后台作业(编号以[]表示,如[1] Running)。fg %N:将后台作业 N 调至前台(%可省略,fg不带参数调最近的作业)。bg %N:将暂停的后台作业 N 恢复运行。
示例:sleep 1000 & # 后台运行 sleep 1000 jobs # 查看作业:[1]+ Running sleep 1000 & fg 1 # 将作业 1 调至前台(按 Ctrl+Z 可暂停,再用 bg 1 恢复后台运行)
6. 网络管理命令#
6.1 网络诊断:ping, traceroute, mtr#
ping 目标IP/域名:测试网络连通性(ICMP 协议)。
示例:ping -c 4 google.com(发送 4 个 ICMP 包)。traceroute 目标:追踪数据包从本地到目标的路径(显示每一跳的 IP 和延迟)。
示例:traceroute baidu.com。mtr 目标:结合ping和traceroute,实时显示路径丢包率(需安装)。
6.2 网络配置:ip#
- 功能:现代网络配置工具,替代已过时的
ifconfig。 - 常用子命令:
ip addr:查看网卡 IP 地址(ip a缩写)。ip route:查看路由表(ip r缩写)。ip link set eth0 up/down:启用/禁用网卡eth0。
- 示例:
ip a show eth0 # 显示网卡 eth0 的详细信息(IP、MAC 等) ip r add default via 192.168.1.1 dev eth0 # 设置默认网关为 192.168.1.1
6.3 连接监控:ss, netstat#
ss:查看网络连接状态(比netstat更快,推荐使用)。
示例:ss -tuln(tTCP,uUDP,l监听中,n数字显示端口)。netstat:传统工具(部分系统需安装net-tools包),用法类似ss。
示例:netstat -tulnp(p显示进程 PID)。
6.4 数据传输:curl, wget, scp#
curl URL:发送 HTTP/HTTPS 请求(下载文件、提交表单等)。
示例:curl -O https://example.com/file.iso(下载文件并保存为原名)。wget URL:专注于文件下载,支持断点续传。
示例:wget -c https://example.com/largefile.zip(断点续传)。scp:通过 SSH 安全复制文件(远程到本地/本地到远程)。
示例:scp user@remotehost:/path/file.txt /local/path/ # 从远程复制文件到本地 scp -r /local/dir/ user@remotehost:/remote/path/ # 递归复制目录
7. 用户与权限管理#
7.1 用户/组操作#
useradd 用户名:创建用户(需 root 权限)。
示例:useradd -m -s /bin/bash newuser(-m创建家目录,-s指定默认 shell)。passwd 用户名:设置用户密码。
示例:passwd newuser(输入两次密码)。groupadd 组名:创建用户组。usermod -aG 组名 用户名:将用户添加到组(-a追加,-G指定附加组)。
7.2 权限修改:chmod, chown, chgrp#
chmod(修改文件权限)#
- Linux 文件权限分为三类:所有者(u)、所属组(g)、其他用户(o),权限包括读(r=4)、写(w=2)、执行(x=1)。
- 语法:
chmod [选项] 权限模式 文件。 - 示例:
chmod u+x script.sh # 给所有者添加执行权限 chmod 755 file.txt # 所有者 rwx (7),组 rx (5),其他 rx (5) chmod -R 770 dir/ # 递归修改 dir 目录权限为 u=rwx, g=rwx, o=---
chown 与 chgrp#
chown 所有者:所属组 文件:修改文件的所有者和所属组。
示例:chown user:group file.txt。chgrp 组名 文件:仅修改所属组。
示例:chgrp staff data.csv。
7.3 特权管理:sudo, su#
su - 用户名:切换到指定用户(-选项加载目标用户的环境变量)。
示例:su - root(切换到 root 用户,需输入 root 密码)。sudo 命令:以 root 权限执行单个命令(需用户在 sudoers 文件中,通过visudo配置)。
示例:sudo apt update(以 root 权限更新软件源)。
8. 包管理命令#
Linux 包管理用于安装、更新、卸载软件,不同发行版工具不同:
8.1 Debian/Ubuntu(apt 系列)#
- 更新软件源:
sudo apt update。 - 升级已安装包:
sudo apt upgrade(-y自动确认)。 - 安装包:
sudo apt install 包名(如sudo apt install nginx)。 - 卸载包:
sudo apt remove 包名(保留配置文件);sudo apt purge 包名(彻底删除)。 - 搜索包:
apt search 关键词。
8.2 RHEL/CentOS(yum/dnf)#
yum(CentOS 7 及以下):
sudo yum install 包名、sudo yum update、sudo yum remove 包名。dnf(CentOS 8+,替代yum):用法与yum基本一致,如sudo dnf install nginx。
8.3 Arch Linux(pacman)#
- 同步包数据库:
sudo pacman -Sy。 - 安装包:
sudo pacman -S 包名。 - 升级系统:
sudo pacman -Syu。 - 卸载包:
sudo pacman -R 包名(保留依赖);sudo pacman -Rs 包名(删除依赖)。
9. 高级命令技巧#
9.1 管道(|)与重定向(>, >>, <)#
- 管道(
|):将前一个命令的输出作为后一个命令的输入。
示例:ls -l | grep ".txt" | wc -l(列出所有 .txt 文件并统计行数)。 - 重定向:
>:覆盖输出到文件(如ls > file.txt)。>>:追加输出到文件(如echo "new line" >> file.txt)。<:从文件读取输入(如grep "error" < log.txt,等效于grep "error" log.txt)。2>:重定向错误输出(如command 2> error.log)。
9.2 别名(alias)#
- 功能:为常用命令创建快捷别名,临时生效(终端内)或永久生效(写入
.bashrc)。
示例:alias ll='ls -laht' # 临时别名:ll 等效于 ls -laht echo "alias ll='ls -laht'" >> ~/.bashrc # 永久生效(需重启终端或 source ~/.bashrc)
9.3 通配符与正则表达式#
- 通配符(shell 层面匹配文件名):
*:匹配任意字符(0 个或多个),如*.txt匹配所有 .txt 文件。?:匹配单个字符,如file?.log匹配file1.log、fileA.log等。[]:匹配指定范围,如file[0-9].log匹配file0.log到file9.log。
- 正则表达式(命令层面,如
grep,sed):^:行开头,$:行结尾,如^error匹配以 "error" 开头的行。.:匹配任意单个字符,*:匹配前一个字符 0 次或多次。
10. 常见问题与最佳实践总结#
-
安全操作:
- 避免直接使用 root 用户操作,通过
sudo执行特权命令。 - 删除文件前用
ls或-i选项确认,重要文件定期备份。 - 修改系统配置文件前先备份(如
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak)。
- 避免直接使用 root 用户操作,通过
-
效率提升:
- 善用 tab 键自动补全命令/路径(减少输入错误)。
- 用
history命令查看历史操作,或按Ctrl+R搜索历史命令。 - 将复杂命令写成脚本(
.sh文件),或设置别名。
-
问题排查:
- 命令报错时,先检查选项和参数是否正确(
命令 --help)。 - 网络问题:先
ping测试连通性,再traceroute定位路径故障。 - 日志文件是排查问题的关键(如
/var/log/syslog,/var/log/auth.log)。
- 命令报错时,先检查选项和参数是否正确(
11. 参考资料#
- 官方文档:Linux man-pages(命令手册页)。
- 在线工具:TLDR pages(简化版命令示例)。
- 书籍:《Linux命令行与Shell脚本编程大全》《鸟哥的Linux私房菜》。
- 社区:Stack Overflow(搜索具体命令问题)、Linux中国社区。
通过本文的系统梳理,相信你已对 Linux 命令集有了全面认识。命令行的魅力在于「组合」—— 将基础命令通过管道、重定向等技巧串联,可实现复杂功能。建议多动手实践,结合具体场景记忆命令,逐步从「会用」到「精通」。