Shell 脚本入门:把重复命令变成一键脚本
如果你每天都要敲同一串命令——查日志、清缓存、备份文件、重启服务——那就该把它们写进一个 Shell 脚本里。脚本不是什么高深技术,它就是把你在终端里一句一句敲的命令,按顺序存进一个文件,再一键执行。
先从一个最小的例子开始。新建文件 backup.sh,第一行写 #!/bin/bash,这叫 Shebang,告诉系统用 Bash 来解释这个文件。接着写几行你熟悉的命令,比如用 date 生成带日期的文件名,再用 cp 把重要目录复制到备份目录。保存后执行 chmod +x backup.sh 赋予可执行权限,然后 ./backup.sh 就能运行。第一次跑通的感觉,往往就是自动化上瘾的开始。
变量能让脚本更灵活。把经常变化的东西抽出来,比如 BACKUP_DIR=/data/backup,之后所有用到备份目录的地方都写 $BACKUP_DIR,换目录时只改一行。读取用户输入用 read -p “请输入文件名:” NAME,脚本就不再是写死的流程,而是可以交互的小工具。写变量时注意等号两边不要加空格,这是新手最常见的报错来源。
判断和循环是脚本真正变聪明的两步。if 判断文件是否存在,不存在就提示并退出,避免在错误的前提下继续跑下去;for 循环遍历一堆日志文件,逐个压缩归档,十行命令能干掉原来半小时的手工活。写循环时先在小范围试跑,确认输出符合预期再扩大范围,这是避免误删、误改的保命习惯。
健壮性比花哨更重要。脚本开头加上 set -e,任何一步出错就立刻停下,而不是带着错误继续往下走;关键操作前先 echo 打印出要执行的动作,确认无误再真正执行;删除、覆盖类操作先用 ls 或 dry-run 的方式演练一遍。很多生产事故不是命令写错了,而是脚本在没人看着的情况下一路错到底。
调试也有现成办法。bash -x backup.sh 会逐行打印实际执行的命令和变量展开值,出错行一目了然;也可以在关键位置加 echo 调试点,分段缩小问题范围。不要靠猜,靠输出定位。
最后给脚本一个好归宿:放到 ~/bin 这类固定目录,配好 PATH,以后在任何位置输入脚本名就能用;再配合 cron 定时执行,每天凌晨自动备份、每周自动清理旧日志,重复劳动就彻底从你的待办里消失了。从今天起,遇到第三次重复敲的命令,就花五分钟把它写成脚本——这笔投资回本最快。
- 点赞
- 收藏
- 关注作者
评论(0)