我的个人生活里,用 Shell 脚本安排得惊人。俗话说,鞋匠的孩子赤脚走路——所以,虽然我在工作时会用 Ansible 或 Perl/Python 等语言处理一些非日常任务,但在家里,Shell 脚本却成了我的囊中之物。我敢肯定,某个更机智的人肯定能想出一个跟 Shell 有关的双关语。我……知道我做了什么吗?抱歉,这周过得真漫长。
最近我在两个不同的场合注意到了这种“鞋匠式”的贝壳恶作剧。该死,我今天连头韵都押不好。咖啡不够吗?
第一次是在我整理~/.local/bin
里的个人脚本文件夹的时候。我猜想我们解决问题或试图自动化生活中的重复任务时,这些脚本都会逐渐积累起来。要是我能写脚本来与现实世界进行更多互动就好了,比如自动叠衣服。拜托,用人工智能来做这件事吧。虽然不是法学硕士,它可能会把所有东西都扭在一起,然后叫它被子。这让我想起了那些老开罗吉姆的书,里面他会惊呼“好吧,把我的头削尖,叫我金字塔!”我还记得小时候以为这会让他变成一个锥头,不是吗?他是一位优秀的埃及古物学家,但不是几何专业的。
哇,这篇文章太乱了。我是哪一个?
令我惊讶的是,自 2020 年以来,上述文件夹中以pl
结尾的脚本大多已被以sh
结尾的脚本所取代。这些 Shell 脚本是在假设 POSIX 兼容环境的情况下编写的,因为并非每个人都安装了 bash(尽管某些人坚持认为并非如此),但 Perl 在任何情况下都能正常工作!好吧,前提是使用File::Path
,并且不要进行太多依赖于特定语法或扩展的system()
调用。
不管怎样,我意识到自己编写大型程序的日子基本结束了,而且我不知不觉地开始写一些小脚本,如果需要的话,可以拼凑起来用来做大事。嗯,也许UNIX 之道对我大脑的影响比我想象的还要大。接下来,我可能会想要自由的生活,或者染一下我越来越稀疏的头发。
第二个背景来自 Mastodon,当时我关注的一个人说(释义):
如果您的 shell 脚本长度超过一屏文本,或者使用了函数,则应该用真正的工具来替换它。
我倾向于认为他们是对的,不过我猜我通过将我的个人程序分解成原子脚本来解决这个问题。需要执行foo
或调用bar
吗?用.
获取相关脚本,就完成了。或者更好的是,使用编排工具。不过,我不得不承认,用绳子粘在一起的纸板并不能做出一双结实的家用鞋,而且我觉得我还没准备好。真正的鞋子 (a) 是用来走路的,(2) 是用来工作的。
作者: Ruben Schade ,悉尼,2025 年 6 月 12 日。
原文: https://rubenerd.com/when-a-shell-script-needs-replacement/