自动化脚本是程序员必备的技能,今天我们来聊聊如何用 Python 和 Bash 写出实用的自动化脚本。想象一下,你每天都要重复做一些事情,比如备份文件、检查日志、发送报告,这些事情交给脚本去做,不仅能节省时间,还能减少人为错误。
先从 Bash 说起。Bash 脚本最适合处理系统级别的任务。比如你想每天凌晨备份某个目录,可以写一个脚本,用 tar 命令打包文件,然后用 mv 命令移动到备份目录。关键是要加上时间戳,这样每次备份的文件名都不一样,不会覆盖之前的备份。你可以用 date 命令生成时间戳,格式写成年月日时分秒,这样排序和查找都很方便。脚本写完后,别忘了用 chmod 加 x 命令给它执行权限,然后用 crontab 设置定时任务,让它每天自动运行。
Python 脚本则更适合处理复杂逻辑。比如你要从多个日志文件里提取错误信息,然后汇总成报告。Python 的 glob 模块可以帮你找到所有匹配的文件,用正则表达式匹配错误行,最后把结果写入新文件。这里有个实用技巧,用 with 语句打开文件,这样不用手动关闭,即使出错也能保证文件正确关闭。另外,Python 的 subprocess 模块可以调用系统命令,这样你就能在 Python 脚本里执行 Bash 命令,结合两者的优势。
写脚本时有几个习惯要养成。第一是给变量起有意义的名字,不要用什么 a、b、c 这种让人看不懂的缩写。第二是加上注释,说明这段代码是做什么的,尤其是复杂的逻辑。第三是做好错误处理,比如检查文件是否存在、命令是否执行成功,出了问题要有提示。第四是测试,先在测试环境跑几遍,确认没问题再放到生产环境。
还有一个重要原则是脚本要幂等,就是多次执行结果一样。比如你写一个创建目录的脚本,如果目录已经存在了,不应该报错,而是直接跳过。这样即使脚本被意外执行多次,也不会出问题。可以用 test 命令或者 Python 的 os.path.exists 来检查。
最后说说调试技巧。Bash 脚本可以在开头加上 set -x,这样每行命令执行前都会打印出来,方便追踪问题。Python 脚本可以用 logging 模块代替 print,这样能控制日志级别,生产环境只记录重要信息。如果脚本出错了,不要慌,看错误信息,定位到具体哪一行,然后一步步排查。
写脚本就像学做菜,刚开始照着菜谱做,慢慢就理解其中的道理了。多写多用,自然就能写出高效可靠的自动化脚本。