Shell 脚本入门:从第一个脚本到定时备份的日常实践

举报
yd_69240880 发表于 2026/11/12 06:08:31 2026/11/12
【摘要】 很多运维和开发工作,每天都在重复同一串命令:查磁盘、看日志、备份文件、重启服务。第一次做觉得新鲜,第十次就只想让它自己跑起来。Shell 脚本就是把这些重复操作写成一份操作清单,让系统按顺序自动执行。它不需要安装重型框架,一台 Linux 机器、一个文本编辑器就能开始,是性价比很高的自动化入门方式。 一、为什么先学 Shell 脚本Shell 脚本的优势不在强大,而在贴近系统。它直接调用系统...

很多运维和开发工作,每天都在重复同一串命令:查磁盘、看日志、备份文件、重启服务。第一次做觉得新鲜,第十次就只想让它自己跑起来。Shell 脚本就是把这些重复操作写成一份操作清单,让系统按顺序自动执行。它不需要安装重型框架,一台 Linux 机器、一个文本编辑器就能开始,是性价比很高的自动化入门方式。

一、为什么先学 Shell 脚本

Shell 脚本的优势不在强大,而在贴近系统。它直接调用系统自带的命令,写起来短、改起来快、出了问题也容易定位。对于个人服务器、开发机和小型项目来说,大多数日常任务用几十行脚本就能解决,不必先搭一套复杂的调度平台。更重要的是,写脚本会逼着你把操作步骤想清楚:先做什么、失败了怎么办、结果存到哪里,这些思考本身就是运维能力的一部分。

二、写第一个脚本

新建一个名为 hello 的脚本文件,写入下面三行:

#!/bin/bash
echo "你好,Shell!"
date

第一行声明用 Bash 解释执行,第二行打印一句话,第三行输出当前时间。然后给它执行权限并运行:

chmod +x hello
./hello

能看到输出,就说明第一个脚本跑通了。初学时常犯的两个小错误值得记住:一是忘记加执行权限,二是在 Windows 下编辑导致换行符不兼容,尽量直接在 Linux 环境里写。

三、让脚本像个小工具

一个能长期用的脚本,至少要做到三点:有变量、有判断、有日志。比如备份脚本里,把目录写成变量,换一台机器只改一行;用判断检查源目录是否存在,不存在就退出并提示;把每一步的结果写进日志文件,事后能查。

#!/bin/bash
SRC="$HOME/documents"
DST="$HOME/backup"
LOG="$HOME/backuplog"
mkdir -p "$DST"
if [ ! -d "$SRC" ]; then
  echo "源目录不存在" >> "$LOG"
  exit 1
fi
cp -r "$SRC" "$DST/documents-backup"
echo "备份完成" >> "$LOG"

给变量加双引号,是为了防止路径里有空格时被拆成两段;用日期给备份目录加后缀,同一个目录下每天的备份不会互相覆盖。

四、交给定时任务定时执行

脚本写好后,定时执行交给系统自带的定时任务工具。打开定时任务编辑界面,加上一行配置,意思是每天凌晨两点运行一次备份脚本。写定时任务时建议用绝对路径,并把输出重定向到日志文件,这样任务没跑或者跑错了,都有地方可查。第一次设置后,第二天早上先看日志确认一次,比默默假设它肯定跑了可靠得多。

五、日常实践里的几点经验

第一,先在测试目录里跑通,再去碰真实数据,备份脚本尤其如此。第二,删除、覆盖类的命令先打印出来确认,确认无误再真正执行。第三,脚本越短越好,一个脚本只做一件事,多个小脚本组合起来,比一个几百行的大脚本好维护。第四,定期回看日志和备份结果,自动化不是写完就忘,而是写完有人看。

从第一个输出问候语的命令,到每天凌晨自动备份,Shell 脚本的学习路径其实很短:先跑通,再加变量和判断,最后交给定时任务。把每天重复的操作收进脚本,省下来的时间,才是留给真正需要动脑子的工作的。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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