1. Linux命令概述与基础认知
作为一位与Linux系统打交道十余年的老运维,我始终认为命令行是Linux最强大的武器。很多人初学Linux时总想找图形界面替代方案,但真正掌握核心命令后,你会发现用键盘操作比鼠标点击高效十倍不止。命令行的魅力在于它的精确性和可编程性——通过简单的命令组合就能完成复杂的系统管理任务。
Linux命令本质上都是可执行程序,主要存放在/bin、/sbin、/usr/bin等目录下。每个命令都遵循"单一职责原则",比如ls只负责列出目录内容,grep专门处理文本搜索。这种设计哲学使得我们可以通过管道(|)将多个命令串联起来,构建出强大的处理流程。
新手常见误区:试图记忆所有命令参数。实际上掌握核心命令的20%常用参数就能解决80%的问题,其他参数完全可以通过--help或man手册随时查阅。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Linux命令分类解析
2.1 文件与目录操作命令
文件操作是Linux基础中的基础,这些命令使用频率最高:
-
ls:列出目录内容
bash复制ls -lh # 人性化显示文件大小 ls -a # 显示隐藏文件我习惯用
ls -lht按时间倒序排列,快速找到最新修改的文件。 -
cp/mv/rm:文件复制/移动/删除
bash复制cp -a source dest # 保留所有属性复制 rm -i *.log # 交互式删除确认生产环境务必养成
rm -i的习惯,避免误删重要文件。 -
find:强大的文件搜索
bash复制find /var/log -name "*.log" -mtime +30 -exec rm {} \;这个组合命令可以删除/var/log下30天前的日志文件。
2.2 文本处理三剑客
-
grep:文本搜索利器
bash复制grep -rn "error" /var/log # 递归搜索error关键词我常用
grep -v反向过滤,比如排除注释行:grep -v "^#" config.conf -
sed:流式文本编辑器
bash复制sed -i 's/old/new/g' file.txt # 批量替换文本处理日志时常用
sed -n '10,20p'快速提取特定行。 -
awk:文本分析神器
bash复制awk '{print $1,$3}' access.log # 提取第1和第3列统计IP访问次数:
awk '{print $1}' access.log | sort | uniq -c | sort -nr
2.3 系统监控与进程管理
-
top/htop:实时监控系统状态
bash复制top -c -u mysql # 监控mysql用户进程我更喜欢
htop,支持鼠标操作和颜色高亮。 -
ps:进程快照
bash复制ps aux --sort=-%mem | head # 按内存使用排序排查问题时常用
ps -ef | grep java定位Java进程。 -
free/df:内存和磁盘检查
bash复制free -h # 人性化显示内存 df -hT / # 查看根分区使用情况
3. 命令组合与高级技巧
3.1 管道与重定向
管道(|)是Linux最精妙的设计之一:
bash复制cat access.log | grep "404" | awk '{print $7}' | sort | uniq -c | sort -nr
这个管道链实现了:读取日志→过滤404错误→提取URL→排序→统计→按频率排序
重定向技巧:
bash复制command > output.log 2>&1 # 将stdout和stderr都重定向到文件
3.2 后台运行与任务控制
-
&:后台运行
bash复制python3 server.py & # 后台运行Python服务 -
nohup:脱离终端运行
bash复制nohup ./start.sh > nohup.out 2>&1 & -
jobs/fg/bg:任务管理
bash复制jobs # 查看后台任务 fg %1 # 将任务1调到前台
3.3 实用命令组合案例
- 统计代码行数:
bash复制find src/ -name "*.java" | xargs wc -l | sort -nr
- 批量重命名:
bash复制for file in *.jpg; do mv "$file" "${file%.jpg}_backup.jpg"; done
- 网络诊断:
bash复制ping -c 4 example.com && traceroute example.com
4. 命令学习与帮助系统
4.1 内置帮助文档
-
--help:快速查看用法
bash复制grep --help | head -n 20 # 查看前20行帮助 -
man:完整手册
bash复制man ls # 阅读ls的完整手册在man页面中,按
/可以搜索关键词,n跳转到下一个匹配项。
4.2 命令补全与历史
- Tab补全:输入部分命令后按Tab自动补全
- history:查看命令历史
bash复制!vim # 执行最近一条vim开头的命令 Ctrl+R # 反向搜索历史命令
4.3 推荐学习路径
- 先掌握20个基础命令(ls/cd/cp/mv/rm等)
- 学习管道和重定向
- 掌握文本处理三剑客(grep/sed/awk)
- 学习系统监控命令
- 探索更高级的bash特性
5. 生产环境实战经验
5.1 危险命令警示
- rm -rf /:系统毁灭者
- dd if=/dev/random:磁盘填充
- :(){ :|:& }: fork炸弹
生产环境执行rm/mv等命令前,建议先echo查看效果:
bash复制echo rm *.tmp # 确认要删除的文件
5.2 实用alias设置
在~/.bashrc中添加:
bash复制alias ll='ls -alF'
alias grep='grep --color=auto'
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
5.3 性能分析技巧
- 快速定位高CPU进程:
bash复制ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
- 磁盘IO监控:
bash复制iotop -o # 显示实际IO进程
- 网络连接分析:
bash复制ss -tulnp # 查看所有监听端口
6. 进阶命令与脚本编程
6.1 正则表达式实战
- 提取IP地址:
bash复制grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' access.log
- 验证邮箱格式:
bash复制echo "test@example.com" | grep -E '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$'
6.2 Shell脚本最佳实践
- 总是添加shebang:
bash复制#!/bin/bash
- 启用严格模式:
bash复制set -euo pipefail
- 使用函数封装复杂逻辑:
bash复制log_info() {
echo "[INFO] $(date '+%Y-%m-%d %H:%M:%S') $*"
}
6.3 实用脚本示例
备份脚本:
bash复制#!/bin/bash
BACKUP_DIR="/backups/$(date +%Y%m%d)"
mkdir -p "$BACKUP_DIR"
tar -czf "$BACKUP_DIR/home_backup.tar.gz" /home
find /backups -type f -mtime +30 -delete
7. 命令效率优化技巧
7.1 减少磁盘IO
- 使用
<重定向替代管道:
bash复制grep "error" < bigfile.log
- 避免频繁小文件操作:
bash复制# 不好
for i in {1..100}; do echo $i >> output.txt; done
# 更好
for i in {1..100}; do echo $i; done > output.txt
7.2 并行处理加速
使用xargs -P并行执行:
bash复制find . -name "*.log" | xargs -P 4 -I {} gzip {}
7.3 内存优化
处理大文件时使用流式处理:
bash复制while IFS= read -r line; do
# 逐行处理
done < hugefile.txt
8. 命令安全与权限管理
8.1 sudo最佳实践
- 避免直接
sudo su - - 使用
sudo -l查看可用权限 - 配置精细化的sudo规则:
code复制%admin ALL=(ALL) NOPASSWD: /usr/bin/apt update
8.2 文件权限控制
- 修改权限:
bash复制chmod 750 script.sh # 所有者可读写执行,组用户可读执行
- 修改所有者:
bash复制chown user:group file
8.3 SSH安全相关
- 密钥对认证:
bash复制ssh-keygen -t ed25519
ssh-copy-id user@host
- 禁用密码登录:
bash复制echo "PasswordAuthentication no" >> /etc/ssh/sshd_config
9. 命令调试与错误处理
9.1 调试技巧
- 显示执行命令:
bash复制set -x
# 你的脚本
set +x
- 检查退出状态:
bash复制if ! command; then
echo "Command failed with exit code $?"
fi
9.2 错误处理模式
- 立即退出模式:
bash复制#!/bin/bash
set -euo pipefail
- 优雅捕获错误:
bash复制if ! output=$(command 2>&1); then
echo "Error: $output" >&2
exit 1
fi
10. 现代Linux命令工具
10.1 新一代替代工具
-
bat:更好的cat
bash复制
bat --theme=TwoDark config.conf -
exa:增强版ls
bash复制
exa -l --git --icons -
fd:更快的find
bash复制fd -e jpg -x mv {} /images
10.2 终端多路复用
- tmux基础用法:
bash复制tmux new -s session1 # 新建会话 Ctrl+b d # 分离会话 tmux attach -t session1 # 重新连接
10.3 实用工具推荐
-
jq:JSON处理
bash复制curl -s api.example.com/data | jq '.results[].name' -
httpie:现代curl替代品
bash复制
http POST example.com/api name=value
掌握Linux命令就像获得了一把瑞士军刀,随着经验的积累,你会发现几乎所有的系统管理任务都能通过命令行高效完成。建议每天学习1-2个新命令,并尝试在实际工作中应用它们。记住,真正的Linux高手不是记住所有命令的人,而是知道如何快速找到并组合适当命令解决问题的人。
