你在公司用Windows处理文档,回家却打开Ubuntu写代码。同事还在点鼠标找文件,你已经在终端里删、查、移动一气呵成。差别在哪?不是系统,是Shell命令。
为什么非得学Shell?
图形界面确实直观,但当你需要批量重命名50个日志文件,或者在三台远程服务器上同时检查磁盘空间时,点鼠标会累到手腕发酸。而Shell一句话就能搞定。
最常用的几个命令,先混个脸熟
打开终端,输入这些试试:
ls -l /home
看看你的家目录下都有啥,-l 参数让它显示详细信息,比如权限、大小和修改时间。
想进某个文件夹?不用双击。
cd /var/log
直接跳转到系统日志目录,比鼠标点好几层快多了。
突然忘了刚才下载的配置文件叫啥?别一个个翻。
find ~ -name "*.conf" -mtime -7
这条命令会在家目录找最近7天内修改过的所有.conf文件,省得你手动翻记录。
管道和重定向:把命令串成流水线
你点外卖,不会让厨师直接把菜倒你嘴里。数据也一样,得“传递”起来。
比如你想知道当前有多少个Python进程在跑:
ps aux | grep python
ps aux 列出所有进程,| 把结果交给 grep 去筛出包含 python 的行。这就是管道,像水管一样把前一个命令的输出接到下一个命令的输入。
再比如,把某个命令的结果存下来留着分析:
df -h > disk_usage.txt
这会把磁盘使用情况写进文件,下次直接看文本就行,不用再敲一遍命令。
写个小脚本,让重复劳动滚蛋
你每天早上都要清理临时文件夹,删缓存,备份日志。与其天天动手,不如写个脚本一劳永逸。
新建一个 clean.sh 文件:
#!/bin/bash
rm -rf /tmp/*
echo ">> 临时文件已清空"
du -sh /home/*/Downloads | sort -hr
保存后加个执行权限:
chmod +x clean.sh
以后只要运行 ./clean.sh,一套操作自动完成。
别怕出错,学会看提示就行
输错命令,终端报个错:“No such file or directory”。别慌,它只是在说“没找到”。就像你喊人名字喊错了,对方回你一句‘谁啊’,很正常。
权限被拒?试试前面加 sudo,但别滥用,不然系统迟早被你整哭。
真实场景:排查网站打不开
朋友说你部署的博客打不开了。你第一反应不该是重启服务器,而是查问题。
先看服务有没有在跑:
ps aux | grep nginx
发现没有输出,说明Nginx没启动。那就手动拉一把:
sudo systemctl start nginx
再用下面这句看它监听了哪个端口:
netstat -tulnp | grep :80
看到结果说明80端口开着,接着浏览器一刷,页面回来了。整个过程不到两分钟,全靠几条Shell命令。
熟练之后,你会发现Shell不是冷冰冰的黑框,而是你操控系统的顺手工具。就像老司机不开导航也知道怎么抄近路,你也一样。