许多人用 Linux 时,总觉得 “写脚本是高手的事”—— 实则不然!列如定期备份文件、批量修改文件名、自动清理日志这些重复操作,写个简单脚本就能自动完成,省下大量时间。今天就用大白话教你 “从 0 到 1 写 Linux 脚本”,新手看完也能上手,还附避坑指南!

一、先搞懂:Linux 脚本是啥?像 “把多个命令装成一个礼包”
简单说,Linux 脚本(一般是 Shell 脚本,后缀.sh)就是 “把你平时在终端里敲的多个命令,按顺序写进一个文件里”,双击或输入命令就能一次性执行。
列如你每天要做 3 件事:1. 清理 /tmp 目录的临时文件;2. 备份 /home 目录的文档到 U 盘;3. 查看硬盘使用情况。平时要敲 3 条命令,写脚本后只需执行 1 个脚本文件,电脑就会自动按顺序做完 —— 这就是脚本的核心价值:自动化重复操作,避免手敲命令出错。
二、写脚本 3 步走:从框架到执行,新手也不慌
第 1 步:搭好 “脚本框架”,就像盖房子先打地基
不管写什么脚本,开头这 2 行 “标配代码” 必须有,否则可能报错:
|
#!/bin/bash # 告知系统用bash解释器执行这个脚本(最常用的解释器) set -e # 可选,作用是“脚本里只要有一条命令执行失败,就立刻停止脚本”,避免出错后继续执行 |
解释:#!/bin/bash 就像给脚本 “定规矩”,告知 Linux “用哪个工具来读这个文件”;set -e 是 “安全开关”,列如备份文件时 U 盘没插,脚本会立刻停,不会继续执行后面的命令。
第 2 步:写 “核心命令”,按需求组合操作
把你想自动执行的命令,按顺序写在框架下面,注意 2 个细节:
命令和平时在终端敲的一样:列如rm -rf /tmp/*(清理临时文件)、cp -r /home/文档 /mnt/U盘(备份文件);
加 “注释” 方便自己看懂:用#开头的句子是注释,不影响脚本执行,列如# 这一步是备份文档到U盘,后来再看脚本就知道每步干啥。
第 3 步:给脚本 “加权限 + 执行”,让电脑能跑起来
写完脚本文件(列如叫auto_backup.sh),不能直接双击执行,要先给 “执行权限”,步骤如下:
打开终端,进入脚本所在的文件夹(列如脚本在桌面,就输cd ~/桌面);
输命令给权限:chmod +x auto_backup.sh(chmod +x是 “给文件加执行权限” 的意思);
执行脚本:./auto_backup.sh(./代表 “当前文件夹里的文件”,不能直接输auto_backup.sh,否则系统可能找不到)。
三、实战案例:写一个 “自动备份 + 清理日志” 的实用脚本
光说不练假把式,以 “每天自动备份文档 + 清理 7 天前的日志” 为例,完整脚本如下,每个步骤都标了注释,新手可直接抄改:
|
#!/bin/bash set -e # 出错就停 # 1. 定义变量:把要用到的路径、时间写在这里,方便后来修改 BACKUP_SRC=”/home/你的用户名/文档” # 要备份的源文件夹(改成你的文档路径) BACKUP_DST=”/mnt/backup” # 备份到的目标路径(列如U盘挂载路径) LOG_PATH=”/var/log/my_backup.log” # 脚本执行日志的保存路径 DATE=$(date +”%Y%m%d”) # 获取当前日期,格式如20251024 # 2. 写日志:记录脚本开始执行的时间 echo “===== $(date) 备份开始 =====” >> $LOG_PATH # 3. 检查目标路径是否存在:如果U盘没插,就报错并退出 if [ ! -d “$BACKUP_DST” ]; then echo “错误:目标路径 $BACKUP_DST 不存在!可能U盘没插?” >> $LOG_PATH exit 1 # 退出脚本,1代表执行失败 fi # 4. 执行备份:把源文件夹备份到目标路径,并重命名加日期(避免覆盖) cp -r “$BACKUP_SRC” “$BACKUP_DST/文档备份_$DATE” echo “备份完成:已把 $BACKUP_SRC 备份到 $BACKUP_DST/文档备份_$DATE” >> $LOG_PATH # 5. 清理7天前的备份日志:避免日志文件太大 find “$LOG_PATH” -mtime +7 -delete # -mtime +7 代表“修改时间超过7天的文件” echo “清理完成:已删除7天前的日志文件” >> $LOG_PATH # 6. 记录备份结束 echo “===== $(date) 备份结束 =====” >> $LOG_PATH |
怎么用?把你的用户名改成自己的 Linux 用户名,把BACKUP_DST改成你的 U 盘路径,按前面的 “加权限 + 执行” 步骤操作,就能自动完成备份和日志清理。
四、新手必避的 5 个坑:别让脚本 “白写了”
路径别写死,用变量取代:列如前面的脚本用BACKUP_SRC取代具体路径,后来要改备份文件夹,只需改变量,不用改所有命令;
空格和符号要注意:路径里有空格时,必须用双引号包起来(列如”~/我的文档”),否则系统会把 “我的文档” 当成两个文件;
别用 “rm -rf /” 这种危险命令:尤其是加了set -e也没用,一旦路径写错(列如多了个空格),可能删光系统文件,新手用rm前最好先输ls 路径确认;
先手动测命令,再写进脚本:列如要写cp -r /home/文档 /mnt/U盘,先在终端手动敲一遍,确认能备份成功,再写进脚本,避免脚本里命令写错;
加日志,方便查错:就像前面的脚本把执行过程写进my_backup.log,如果备份失败,打开日志文件就能看到 “哪一步错了”,不用瞎猜。
五、进阶技巧:让脚本 “更智能”
如果想让脚本更实用,还能加这些功能:
定时执行:用crontab让脚本每天自动跑(列如每天凌晨 3 点备份),输crontab -e打开定时任务,加一行:0 3 * * * /home/你的用户名/桌面/auto_backup.sh(0 3 * * *代表 “每天凌晨 3 点”);
加交互提示:在脚本里加read -p “确定要执行备份吗?(y/n) ” ans,执行时会问你 “确定吗”,输入 y 才继续,避免误点;
处理特殊情况:列如备份时磁盘满了,加df -h检查磁盘空间,不够就报错退出。
互动话题:你想用脚本解决什么问题?
实则 Linux 脚本没那么难,从 “自动清理文件”“批量改文件名” 这种小事开始练,很快就能上手。你平时在 Linux 里有没有 “重复做的麻烦事”?列如每天要输好几条命令,或者常常忘记备份?
欢迎在评论区说你的需求,我可以帮你拆分解决思路,甚至写个简单脚本框架!
如果你已经写过脚本,也可以分享你的经验,帮新手避坑~
(最后提醒:写脚本时,先在 “测试环境” 练,别直接在重大的系统上跑,避免误操作删文件!)
















暂无评论内容