一、高效学习 Linux 命令的底层逻辑
Linux 命令虽多,但按功能分类后一目了然。常见模块有:
- 文件与目录操作:比如查看(ls)、切换路径(cd)、创建(mkdir)、删除(rm)、复制(cp)、移动(mv)
- 系统状态监控:比如看进程(ps、top)、查内存(free)、磁盘空间(df)
- 文本处理:比如查看文件(cat、more、less)、搜索内容(grep)、数据处理(awk、sed)
- 网络工具:比如 ping 测试连通性、wget 下载文件、netstat 看网络连接
Linux 自带超级好用的帮助工具,千万别硬记命令参数!
- 用
man 命令查看详细手册,比如想知道 ls 怎么用,直接敲man ls,里面会列出所有选项和示例。 - 记不住命令全称?用
apropos 关键词搜索相关命令,比如想找和 “压缩” 有关的命令,敲apropos compress就能列出 gzip、tar 等。 - 觉得 man 手册太啰嗦?试试简洁版的
whatis 命令,快速知道这个命令是干啥的,比如whatis ls会显示 “list directory contents”。
找个虚拟机或者 Linux 服务器,大胆折腾!推荐用 Docker 创建隔离环境,不用担心弄坏系统。比如学 rm 删除文件时,先在测试目录里创建几个文件,用
rm 文件名 删除,再用 ls 检查是否真的没了;想恢复?抱歉,Linux 没有回收站,这时候就知道备份的重要性了。每天花 30 分钟刻意练习,比如给自己布置任务:“把 /home/user 目录下所有.txt 文件复制到备份目录,并改名为 backup_XXX.txt”,在解决问题的过程中,命令自然而然就记住了。准备一个笔记本(电子或纸质都行),按模块记录常用命令和示例:
文件操作:
ls -l 显示详细信息
cd ~ 回到用户主目录
mkdir project 创建项目文件夹
cp file.txt backup/ 复制文件到备份目录
rm dir/ -r 删除空目录(-r表示递归删除里面的内容)
cp 和 mv,一个是 “复制粘贴”,一个是 “剪切粘贴”;rm 和 rmdir,前者删文件或目录(目录需加 - r),后者只能删空目录。对比着记,不容易混淆。二、基础命令必学清单:从新手到熟练工
- ls:查看目录内容,最常用的是
ls -l(长列表,显示权限、大小、时间等)和ls -a(显示隐藏文件,比如以。开头的文件)。举例:想看看当前目录下所有文件,按修改时间倒序排列,就用ls -lt。 - cd:切换目录,
cd /到根目录,cd ..回上层目录,cd -回到上一次的目录(超好用!比如刚才在 /home/user,现在去了 /var/log,敲 cd - 就又回到 /home/user 了)。 - mkdir & rmdir:mkdir 创建目录,支持递归创建,比如
mkdir -p parent/child/grandchild会自动创建三级目录;rmdir 只能删空目录,删非空目录得用rm -r 目录名。 - cp & mv:复制文件时,
cp file.txt /tmp/是复制到 /tmp,cp -r dir/ /tmp/是复制整个目录;移动文件其实就是 “剪切”,mv file.txt /new/path/,如果目标路径有同名文件,会直接覆盖,记得小心! - cat & less:cat 用来快速查看小文件内容,比如
cat /etc/hosts;查看大文件用 less,按空格翻页,按 q 退出,比 cat 方便太多。
- ps:查看进程,常用
ps aux(显示所有用户的进程,a 是所有用户,u 是详细信息,x 包括没有控制终端的进程),然后配合 grep 过滤,比如ps aux | grep nginx看看 nginx 进程是否在运行。 - top:实时监控进程,像任务管理器一样动态显示 CPU、内存占用,按 P 键按 CPU 占用排序,按 M 键按内存排序,按 q 退出。
- df & du:df 看磁盘空间,
df -h以人类可读的格式显示(比如 GB、MB);du 看目录大小,du -sh /var/log查看 /var/log 目录总大小。 - free:看内存使用情况,
free -h显示物理内存和 swap 交换空间的使用量,重点关注 “available” 那一行,代表系统当前可用内存。
- grep:搜索文本中的关键词,比如
grep "error" /var/log/app.log找出日志里包含 error 的行;加-i忽略大小写,加-v排除包含关键词的行(反向搜索)。 - awk:按列处理数据,比如日志里有 “时间 用户名 操作”,想提取所有用户名,用
awk '{print $2}' log.txt($1是第一列,$2 是第二列)。 - sed:流编辑器,常用于替换文本,比如把文件里的 “old.com” 换成 “new.com”,
sed -i 's/old.com/new.com/g' config.ini(-i 表示直接修改文件)。
三、进阶技巧:让命令行效率翻倍的 “秘密武器”
管道就像流水线,前一个命令的输出作为后一个命令的输入。比如:
- 想知道当前目录下有多少个.txt 文件,用
ls *.txt | wc -l(ls 列出所有 txt 文件,wc -l 统计行数)。 - 想查看 nginx 日志里今天的错误记录,先过滤出包含 “ERROR” 的行,再按时间排序:
cat access.log | grep "ERROR" | grep "2025-07-07" | sort。
> 是覆盖写入,>> 是追加写入。比如 top -n 1 > top.log 把当前 top 信息保存到 top.log,下次再执行不会覆盖,而是 top -n 1 >> top.log 追加到文件末尾。把常用的命令组合写成 shell 脚本,一键执行。比如每天要备份数据库,新建一个 backup.sh:
#!/bin/bash
DATE=$(date +%Y%m%d)
mysqldump -u root -p密码 dbname > /backup/db_backup_$DATE.sql
echo "备份完成于$DATE"
chmod +x backup.sh,以后直接敲 ./backup.sh 就能自动备份,还能配合 crontab 定时执行(比如每天凌晨 2 点)。- Tab 键自动补全:敲 ls d,按 Tab,自动补全成 ls dir(如果有多个匹配,再按一次 Tab 显示所有选项)。
- Ctrl + C:终止当前命令(比如 top 运行中想退出,别傻傻等,直接按 Ctrl + C)。
- Ctrl + L:清屏,相当于执行 clear 命令。
- 上下箭头:调用历史命令,比如刚才敲过 ls -l,现在按上箭头就能直接复用。
把常用的复杂命令设置别名,比如
alias ll='ls -l --color=auto'(输入 ll 就等于执行 ls -l,还带颜色区分文件类型)。想永久生效,把别名写入~/.bashrc 文件,然后执行 source ~/.bashrc 生效。比如还可以设置 alias rm='rm -i'(删除前询问是否确认,防止手滑误删)。四、实战场景应用:从 “知道” 到 “会用”
- 查找大文件:想知道哪个目录最占空间,用
du -a /path | sort -n -r | head -n 10(列出目录下前 10 大文件,-r 倒序排列)。 - 批量重命名文件:比如把一堆图片从 pic1.jpg、pic2.jpg 改成 photo_01.jpg、photo_02.jpg,用 rename 命令:
rename 's/pic/photo_/' *.jpg(需要先安装 rename 工具)。 - 查看网络连接:netstat 太复杂?试试 ss 命令,更高效,
ss -ltn查看所有监听的 TCP 端口(-l 监听,-t TCP,-n 不解析域名)。
- CPU 占用过高:top 找到占用高的进程 PID,然后用
ps -p PID -o cmd查看具体是哪个命令,再分析是程序 bug 还是正常负载。 - 网络不通:先 ping 目标 IP,不通的话用 traceroute 追踪路由节点,
traceroute www.baidu.com看看在哪一步卡住;如果通但访问慢,用 wget 测试下载速度,排除网络带宽问题。 - 文件被误删:如果没备份,试试用 extundelete 工具恢复(前提是文件系统是 ext4,且删除后没写入新数据),流程有点复杂,但关键时刻能救命。
- 批量修改文件权限:把当前目录下所有.sh 文件的执行权限给用户,
chmod u+x *.sh(u 是用户,+x 加执行权限)。 - 定时备份脚本:用 crontab 设置计划任务,比如每天 5 点备份数据库,编辑
crontab -e,添加0 5 * * * /path/to/backup.sh(0 5 表示 5 点整,* * * 是每天,每周,每月)。 - 统计日志数据:比如统计 nginx 日志里每个 IP 的访问次数,
awk '{print $1}' access.log | sort | uniq -c | sort -n -r | head -n 10(先提取 IP,排序,去重并计数,再按次数倒序,取前 10)。
五、避坑指南:新手常犯的 5 个错误
很多新手觉得用 root 权限爽,啥都能改,但一不小心删了系统文件(比如
rm -rf /),哭都来不及。日常操作尽量用普通用户,需要管理员权限时用 sudo,比如 sudo apt install software。比如 rm 删除文件前,先确认是不是目标目录,用
ls -l 仔细看看;用 sed 替换文件内容时,先备份原文件,或者不加 - i 参数,先看看输出是否正确,再决定是否写入。Linux 命令有上万个,没人能全部记住,先把常用的 50 个命令练熟,做到 “按需检索”—— 遇到新需求,知道去查哪个模块的命令,比死记硬背更重要。
不要对着命令列表挨个背诵,而是带着问题学:“我现在需要压缩文件,该用 gzip 还是 tar?”“怎么查看端口是否被占用?” 在解决具体问题的过程中,命令会记得更牢。
Linux 报错信息其实很友好,比如 “command not found” 是命令拼写错误,“permission denied” 是权限不够,根据错误提示慢慢调整,每一次报错都是进步的机会。