
1. Linux命令概述与学习路径作为一位与Linux系统打交道十余年的老运维我深刻体会到命令行操作是掌握Linux系统的核心技能。不同于图形界面命令行提供了更直接、高效的系统控制方式。在服务器管理、自动化脚本编写、故障排查等场景中熟练使用命令行的工程师往往能事半功倍。Linux命令大致可以分为以下几类文件与目录操作ls、cd、cp、mv等文本处理grep、awk、sed等系统管理ps、top、df等网络操作ping、curl、ssh等权限管理chmod、chown等软件包管理apt、yum等提示初学者常犯的错误是试图一次性记住所有命令。实际上掌握核心命令后其他命令会随着使用场景自然熟悉。2. 文件与目录操作命令精要2.1 基础导航与查看ls命令是使用频率最高的命令之一但很多人只用到ls -l这种基础形式。实际上结合不同参数可以极大提升效率ls -lh # 人类可读的文件大小显示 ls -lt # 按修改时间排序 ls -ltr # 按修改时间逆序最近修改的在最后 ls -d */ # 只显示目录cd命令的进阶技巧cd - # 返回上一个目录 cd ~ # 返回家目录 pushd/popd # 目录栈操作适合需要频繁切换目录的场景2.2 文件操作三剑客cp命令的注意事项复制目录时需要-r参数-a参数保留所有属性比-r更全面-u只复制更新的文件mv命令实际上同时承担了重命名和移动文件的功能mv old.txt new.txt # 重命名 mv file.txt /tmp/ # 移动文件 mv *.txt ~/backup/ # 批量移动rm命令的危险性众所周知建议设置别名alias rmrm -i # 交互式删除3. 文本处理与搜索命令3.1 grep家族grep是文本搜索的瑞士军刀常用形式grep -r pattern /path/ # 递归搜索 grep -i pattern file # 忽略大小写 grep -v pattern file # 反向匹配 grep -A3 -B2 pattern file # 显示匹配行的前后内容ack和ag是更现代的替代品搜索代码时效率更高。3.2 awk与sedawk特别适合处理结构化文本比如日志分析awk {print $1} access.log # 打印第一列 awk $3 100 {print $0} data.txt # 过滤第三列大于100的行 awk -F: {print $1} /etc/passwd # 指定冒号为分隔符sed则擅长流式编辑sed s/old/new/g file # 全局替换 sed -i.bak s/old/new/g file # 直接修改文件并备份 sed /pattern/d file # 删除匹配行4. 系统监控与管理命令4.1 进程管理ps命令的常用组合ps aux # 显示所有进程 ps -ef # 完整格式显示 ps -eo pid,ppid,cmd,%mem,%cpu --sort-%mem | head # 按内存排序top的替代品htop提供了更友好的交互界面支持鼠标操作和颜色显示。4.2 性能监控free -h查看内存使用情况注意buffers/cache的区别。df -h查看磁盘空间du -sh *查看当前目录各文件/目录大小。iotop和iftop分别监控磁盘IO和网络流量需要额外安装。5. 网络相关命令5.1 连接测试ping的基础用法大家都知道但有些参数很实用ping -c 5 example.com # 只发送5个包 ping -i 0.5 example.com # 设置间隔时间为0.5秒traceroute和mtr可以显示网络路径和延迟。5.2 文件传输scp是安全的远程拷贝工具scp file.txt userremote:/path/ # 上传 scp userremote:/path/file.txt . # 下载 scp -r dir/ userremote:/path/ # 递归拷贝目录rsync更适合同步大量文件支持增量传输rsync -avz src/ userremote:dst/ # 归档模式压缩传输6. 权限与用户管理6.1 文件权限chmod的数字表示法4 读2 写1 执行所以chmod 755 file表示所有者rwx (4217)组用户r-x (4015)其他用户r-x (4015)6.2 用户与组useradd和usermod管理用户useradd -m -s /bin/bash username # 创建用户并生成家目录 usermod -aG groupname username # 将用户添加到附加组passwd修改密码sudo visudo编辑sudo权限。7. 实用技巧与脚本编写7.1 命令组合管道(|)是Linux命令行的精髓所在ps aux | grep python # 查找Python进程 cat access.log | awk {print $1} | sort | uniq -c | sort -nr # 统计访问IP命令替换tar -czf backup-$(date %Y%m%d).tar.gz /path/to/backup7.2 脚本基础一个简单的备份脚本示例#!/bin/bash # 定义变量 BACKUP_DIR/var/backups LOG_FILE/var/log/backup.log # 检查目录是否存在 if [ ! -d $BACKUP_DIR ]; then mkdir -p $BACKUP_DIR fi # 执行备份 echo $(date) 开始备份 $LOG_FILE tar -czf $BACKUP_DIR/backup-$(date %Y%m%d).tar.gz /home/user/important_files 2 $LOG_FILE echo $(date) 备份完成 $LOG_FILE8. 常见问题排查8.1 磁盘空间不足当df显示空间不足时使用du -sh *定位大文件检查日志文件/var/log/清理软件包缓存apt clean或yum clean all8.2 进程异常strace可以跟踪系统调用strace -p pid # 跟踪运行中的进程 strace -f command # 跟踪命令及其子进程lsof查看进程打开的文件lsof -p pid # 查看进程打开的文件 lsof -i :80 # 查看占用80端口的进程9. 进阶工具推荐9.1 现代化替代品bat更好的cat支持语法高亮exa增强版ls支持图标和更好的显示fd更快的find替代品ripgrep超快的grep替代品9.2 终端多路复用器tmux可以创建持久会话tmux new -s session_name # 新建会话 tmux attach -t session_name # 连接会话 Ctrlb d # 分离会话10. 学习资源与持续提升man命令是最权威的文档如man lstldr提供简明的命令示例练习网站overthewire.org的bandit游戏书籍《Linux命令行与shell脚本编程大全》在实际工作中我习惯将常用命令整理成cheatsheet并定期更新。记住掌握Linux命令的关键不在于死记硬背而在于理解其设计哲学每个命令做好一件事通过管道组合实现复杂功能。