反对别名的案例

2025-06-10

反对别名的案例

快速浏览一下这里的时间线,你会发现 shell 别名是一个热门话题。shell 函数、git 别名和包装器脚本仍然很流行,但程度略低。

喜欢别名并没有错!

但我认为,就像所有事情一样,在做某件事之前你应该明白自己在做什么。

复制粘贴

当你使用别人的别名时,通常是直接粘贴一大堆,或者直接下载整个文件。你有没有仔细阅读并理解所有内容?里面是不是有什么恶意的内容?是不是有一些不太恶意,只是为了开玩笑而加进去的?

货物崇拜

你在互联网上看到的一些别名非常主观。举个简单的例子,mkdirshadow应该被使用吗command mkdir -p?你知道为什么这么做吗?还是这只是别人的偏好?

递归

如果一个别名调用另一个别名,而另一个别名又调用另一个别名(或自身),会发生什么情况?
通常可以通过command在适当的情况下明确指定别名的使用方式,或者确保提供别名的脚本顺序正确且注释清晰,来解决这个问题。

我敢打赌你得花几秒钟才能弄清楚。

效率

alias gcma='git commit -a -m'
Enter fullscreen mode Exit fullscreen mode

打字肯定gcma比打字更高效git commit -a -m吧?这难道不明显吗?当然,前提是你已经把它变成了肌肉记忆。在此之前,你需要一段学习期,每次都要查阅或理解你使用的缩写。

可预测性

如果它是一个别名,你会记得消息参数gcma是必需的,并且必须用引号括起来,因为它是一个单独的参数吗?
如果你把它构建成一个shell函数……

gcma() {
  git commit -a -m "$@"
}
Enter fullscreen mode Exit fullscreen mode

...而不是使用别名来包含引号,这样您就可以输入gcma foo bar baz,如果您第二次包含它们,或者您完全忘记了该消息,它会做什么?

如果您想将另一个参数传递给git commit,例如 ,该怎么办--squash?您可以使用那里的别名,但不能直接使用函数本身。省去输入额外引号的巧妙做法限制了您的选择。

当您拥有一长串快捷方式时,您能否在不亲自测试的情况下预测所有别名的行为?

可用性(本地)

如果您习惯使用某个程序的别名,而现在尝试在终端会话之外的某个地方使用它,您确定知道会发生什么吗?如果脚本或代码行中的别名cron正在隐藏可执行文件,它要么不起作用,要么会执行其他操作。您是否有足够的信心,因为您已经非常依赖别名,以至于它已经成为您的第二天性,所以您不会犯错?

可移植性(远程)

当你使用外部系统时,你的别名就不存在了。如果你出于某种原因进入了 VPS 或本地容器,你该怎么办?如果你被所有那些推广文章所吸引zsh,决定尝试使用不同的 shell,该怎么办?

阴影(系统之间)

如果您没有注意到别名不存在,但您输入的命令却没有按预期执行,因为您已在本地对其进行了阴影处理,该怎么办?您思考了一会儿,打开页面man浏览了一下,想知道一切以前是如何运作的,是自己记性不好还是有点疯了。

审计线索

查看你的shell历史记录,找出上周遇到同样问题时的操作——你还记得要搜索什么吗?是隐藏的别名还是完整的命令?究竟隐藏了什么?

让我借用一下Python 之禅

明确优于隐晦。
可读性很重要。

这些警告主要是为了提醒你何时何地使用了别名。别名确实很方便,但是……一定要小心,好吗?

封面图片(基本无关)来自morguefile.com的 ArielleJay

鏂囩珷鏉ユ簮锛�https://dev.to/moopet/the-case-against-aliases-2mb1
PREV
隆重推出 Tailwinder - Tailwind 粉丝之家 - 由 Appwrite 提供支持 🚀 欢迎来到 Tailwinder 👋
NEXT
您的项目中可能没有的 3 个友好文件。