Linux命令从入门到精通:20个核心命令详解
1. Linux命令概述:从入门到精通的必备工具集
第一次接触Linux终端时,那个闪烁的光标和黑底白字的界面让我感到既神秘又恐惧。但当我输入第一个ls命令并看到目录内容整齐列出时,那种掌控感至今难忘。Linux命令是操作系统的神经末梢,通过它们可以直接与内核对话,完成从文件管理到系统监控的所有任务。
与图形界面相比,命令行操作具有不可替代的优势:它消耗资源极少(在树莓派等设备上尤为明显),可以编写脚本实现自动化(我每周用cron自动备份重要数据),还能通过SSH远程管理服务器(去年台风天我就是在家里用终端修复了机房的服务器)。更重要的是,几乎所有Linux发行版都遵循相同的命令规范,一旦掌握就能通用。
根据我的经验,Linux命令学习可以分为三个阶段:
- 基础阶段:掌握20个左右高频命令(如ls、cd、grep等),能完成基本文件操作
- 进阶阶段:理解管道和重定向,组合使用命令处理复杂任务
- 专家阶段:编写Shell脚本,开发自定义命令和自动化流程
提示:不要试图一次性记住所有命令参数,实际使用中90%的场景只需要掌握每个命令的2-3个常用选项即可。我的建议是随身携带命令速查表(后文会提供),遇到具体需求时再查阅细节。
2. 文件操作命令:日常工作的基石
2.1 目录导航与查看
ls命令是我使用频率最高的命令之一,经过多年使用,我总结出几个实用技巧:
ls -lh # 人性化显示文件大小(KB/MB/GB) ls -lt # 按修改时间排序,最新文件在前 ls -d */ # 只显示子目录cd命令的快捷操作能大幅提升效率:
cd - # 返回上一个目录(调试时特别有用) cd ~ # 回到用户主目录 cd ../.. # 向上移动两级目录2.2 文件操作四件套
cp:复制文件时,我强烈建议始终使用
-i交互模式避免覆盖重要文件cp -i source.txt dest/ # 覆盖前询问 cp -r dir1 dir2 # 递归复制目录mv:除了移动文件,这也是最常用的重命名命令
mv oldname.txt newname.txtrm:这个命令需要格外小心,我的工作电脑就配置了
alias rm='rm -i'rm -rf dir/ # 强制删除目录及其内容(慎用!)touch:创建空文件或更新文件时间戳
touch newfile.txt
血泪教训:曾经在服务器上误输入
rm -rf / home/backup(/后面多打了个空格),差点酿成大祸。现在我的~/.bashrc里永久添加了alias rm='rm -I --preserve-root'。
2.3 文件查看与搜索
find命令功能强大但语法复杂,这些是我最常用的组合:
find . -name "*.log" -mtime +30 -delete # 删除30天前的日志文件 find /var -size +10M -exec ls -lh {} \; # 查找大于10MB的文件grep是文本搜索的瑞士军刀,配合正则表达式更加强大:
grep -r "error" /var/log/ # 递归搜索目录 grep -n --color=auto "TODO" *.py # 显示行号并高亮3. 系统管理命令:掌控你的Linux环境
3.1 进程管理三板斧
ps:查看进程信息
ps aux | grep nginx # 查看nginx相关进程 ps -eo pid,ppid,cmd,%mem --sort=-%mem | head # 查看内存占用前10的进程top/htop:实时监控系统资源
top -u www-data # 只监控指定用户的进程kill:终止进程
kill -9 1234 # 强制终止PID为1234的进程 pkill -f "python script.py" # 根据名称终止进程
3.2 网络配置与诊断
ifconfig虽然经典但正在被ip命令取代,新系统建议使用:
ip addr show # 显示网络接口信息 ip route # 查看路由表网络诊断组合拳:
ping -c 4 example.com # 发送4个测试包 traceroute example.com # 追踪网络路径 netstat -tulnp | grep 80 # 检查80端口占用情况 ss -plnt # 比netstat更现代的替代方案3.3 包管理命令对比
不同发行版的包管理命令差异很大,这是我整理的对照表:
| 操作 | Debian/Ubuntu (apt) | RHEL/CentOS (yum/dnf) | Arch (pacman) |
|---|---|---|---|
| 更新索引 | sudo apt update | sudo yum check-update | sudo pacman -Sy |
| 安装软件 | sudo apt install nginx | sudo yum install nginx | sudo pacman -S nginx |
| 删除软件 | sudo apt remove nginx | sudo yum remove nginx | sudo pacman -R nginx |
| 搜索软件 | apt search keyword | yum search keyword | pacman -Ss keyword |
4. 高效工作流:组合命令与脚本基础
4.1 管道与重定向魔法
管道(|)是我最爱的Linux特性之一,它能将多个命令串联起来:
cat access.log | grep "404" | awk '{print $7}' | sort | uniq -c | sort -nr这条命令链可以统计日志中出现404错误的URL及其出现次数,按频率排序。
重定向技巧:
command > output.txt 2>&1 # 将标准输出和错误都重定向到文件 command >> log.txt 2>> error.log # 追加模式,输出和错误分开保存4.2 Shell脚本入门
一个实用的备份脚本示例:
#!/bin/bash # 简单备份脚本 BACKUP_DIR="/backup" DATE=$(date +%Y%m%d) TARGET_DIR="$HOME/documents" if [ ! -d "$BACKUP_DIR" ]; then mkdir -p "$BACKUP_DIR" fi tar -czf "$BACKUP_DIR/backup_$DATE.tar.gz" "$TARGET_DIR" && \ echo "Backup completed successfully" || \ echo "Backup failed" >&2给脚本添加执行权限:
chmod +x backup.sh4.3 实用命令组合示例
批量重命名文件:
# 将所有.jpg文件前缀改为vacation_ for file in *.jpg; do mv "$file" "vacation_$file"; done监控日志变化:
tail -f /var/log/nginx/access.log | grep --line-buffered "500"快速创建测试文件:
dd if=/dev/zero of=testfile bs=1M count=100 # 创建100MB的测试文件
5. 安全与权限管理
5.1 用户与组管理
创建用户并设置密码:
sudo useradd -m -s /bin/bash newuser sudo passwd newuser将用户加入sudo组:
sudo usermod -aG sudo newuser5.2 文件权限详解
理解chmod的数字表示法:
7 = 4(r) + 2(w) + 1(x) 6 = 4(r) + 2(w) 5 = 4(r) + 1(x)常用权限设置:
chmod 600 private.key # 只有所有者可读写 chmod 755 script.sh # 所有者可读写执行,其他人可读执行 chmod 777 /tmp/test # 所有人可读写执行(不安全,仅示例)5.3 SSH安全配置
编辑/etc/ssh/sshd_config提高安全性:
PermitRootLogin no PasswordAuthentication no # 强制使用密钥登录 AllowUsers yourusername重启SSH服务:
sudo systemctl restart sshd6. 性能监控与故障排查
6.1 实时监控工具
vmstat示例(每2秒刷新一次):
vmstat 2iostat查看磁盘I/O:
iostat -dx 26.2 日志分析技巧
查看最近系统日志:
journalctl -xe --no-pager | tail -20分析高负载原因:
uptime; free -h; df -h; top -bn1 | head -106.3 内存泄漏排查
查看内存使用情况:
free -h cat /proc/meminfo追踪进程内存变化:
valgrind --leak-check=full ./your_program7. 命令速查表与学习资源
7.1 常用命令速查表
| 类别 | 命令 | 常用选项 | 说明 |
|---|---|---|---|
| 文件 | ls | -l, -h, -a | 列出目录内容 |
| 文件 | cp | -r, -i | 复制文件/目录 |
| 文本 | grep | -r, -n, -i | 文本搜索 |
| 系统 | ps | aux | 查看进程 |
| 网络 | netstat | -tulnp | 网络连接 |
| 权限 | chmod | 755, 644 | 修改权限 |
7.2 推荐学习路径
交互式学习:
man命令查看手册(如man ls)tldr工具提供简化版命令示例
在线资源:
- Linux Documentation Project (tldp.org)
- Arch Linux Wiki (wiki.archlinux.org)
实践建议:
- 每天学习1个新命令并实际应用
- 建立自己的命令笔记库
- 尝试用命令行完成日常所有操作
我个人的学习心得是:Linux命令就像乐高积木,单个命令功能有限,但组合起来就能构建复杂系统。刚开始可能会觉得记忆负担重,但坚持一个月后,你会发现自己在终端中的效率已经远超图形界面。最重要的是保持实践——我至今仍保持着每周至少发现一个新命令或新用法的习惯。