Shell 脚本入门:把每天重复敲的命令写成一个脚本

举报
yd_225636183 发表于 2026/10/27 09:01:52 2026/10/27
【摘要】 为什么要写脚本:刚用 Linux 时,很多人每天都在重复同一串操作:进目录、打包备份、清理旧日志、看磁盘剩余。命令一条条敲当然能做事,但敲三遍之后就该换个办法:把这些命令按顺序写进一个文件,让 Shell 一次跑完,这就是 Shell 脚本。它不神秘,本质上就是“写下来的命令行”,外加一点判断和循环。第一个脚本:新建 backup.sh,先写三行:第一行 #!/bin/bash 叫 Sheb...

为什么要写脚本:刚用 Linux 时,很多人每天都在重复同一串操作:进目录、打包备份、清理旧日志、看磁盘剩余。命令一条条敲当然能做事,但敲三遍之后就该换个办法:把这些命令按顺序写进一个文件,让 Shell 一次跑完,这就是 Shell 脚本。它不神秘,本质上就是“写下来的命令行”,外加一点判断和循环。

第一个脚本:新建 backup.sh,先写三行:第一行 #!/bin/bash 叫 Shebang,告诉系统用 Bash 解释这个文件;然后 echo 开始备份;再用 tar -czf ~/backup-$(date +%F).tar.gz ~/my-project 打包。写完后 chmod +x backup.sh 赋予可执行权限,再 ./backup.sh 运行。注意 ./ 不能省,直接写 backup.sh 时系统会在 PATH 里找,而不是当前目录,这是新手最常卡住的地方。

变量与引用:把会变的东西抽成变量,如 SRC=~/my-project,DST=~/backup-$(date +%F).tar.gz,再 tar -czf "$DST" "$SRC"。双引号不是装饰,路径里一旦出现空格,不加引号就会被拆成两个参数。养成习惯:变量展开一律加双引号。

判断与循环:用 if 判断上一条命令的退出状态,tar 成功($? 等于 0)时清理 7 天前的旧备份,失败时保留旧文件以便排查;更省事是在脚本开头加 set -e,任何命令失败就立即停下。对一批文件做同样的事用 for 循环,如 for f in ~/logs/*.log,逐个 gzip 压缩。

一个能直接用的小例子:先压缩 1 天前的日志,再删 30 天前的压缩包,最后 df -h 复核磁盘。先在测试目录跑通、确认删的是对的文件,再放到正式目录,这是对 delete 这类不可逆操作最起码的敬畏。

小结:先把重复命令原样写下来跑通,再抽变量、加判断、套循环,最后才考虑定时任务和错误处理。先从一个备份脚本开始,跑通一次,自动化的手感就有了。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。