【技巧】所有命令都以逗号开头

💡 原文中文,约1300字,阅读约需3分钟。
📝

内容提要

作者在主目录下创建~/bin/目录,并将其添加到PATH中,以便使用自己设计的便利和shell脚本来补充Unix基本命令集。作者通过在自己的命令前加上逗号来避免命令冲突,并通过tab键快速浏览命令列表。作者推荐这种方法给其他希望保持命令名称干净整洁的人使用。

🔎

延伸解读

为什么自定义命令容易与系统命令冲突

文章指出,用户常将自定义脚本放在~/bin并加入PATH,但脚本名多为简短小写字母,与系统命令风格相似。在Debian等发行版中,系统命令数量庞大(作者用apt-file统计Ubuntu上有21733条),新命令可能恰好与自定义命令同名,导致冲突。这种冲突在早期System V或红帽系统中较少见,但现代Debian系风险更高。

逗号前缀如何避免冲突并保持易用性

作者选择逗号作为前缀,因为无需按Shift键,且逗号在文件名和shell中都是普通字符,不会像括号、反斜线、冒号等有特殊含义,也不像斜线和点有路径或隐藏文件的特殊作用。给所有自定义命令加上逗号后,它们与系统命令完全区分,彻底避免碰撞。

Tab补全让逗号命令集更易浏览和记忆

使用逗号前缀后,借助shell的Tab补全功能,只需输入逗号再按Tab,就能列出~/bin下所有自定义命令。文章示例显示,这能快速展示如,complete-scp、,go-thpgp等命令,方便回忆命令名称。作者认为这种方法既强大又有趣,并推荐给希望保持命令名整洁的用户。

❓

Q&A

为什么要在自己的命令前加逗号?

为了避免自定义命令与系统命令发生名称冲突。因为自定义命令通常也是简短的小写字母,而系统可能随时添加新命令,导致冲突。逗号是文件名中正常且无特殊含义的字符,加逗号后命令名与系统命令完全区分开。

如何快速查看自己定义的所有命令?

输入逗号然后按 Tab 键,就会列出所有以逗号开头的自定义命令。

为什么选择逗号而不是其他字符作为前缀?

因为其他可用字符大多有特殊含义:小写字母已被系统命令使用;括号、反斜线、冒号、引号对 shell 有特殊含义;斜线和点在文件名中有特殊含义。只有逗号是文件名中完全正常且无异议的字符。

这种方法适合哪些人使用?

适合所有拥有自己的 ~/bin/ 目录、希望命令名称保持干净整洁,并且避免与未来系统命令冲突的人。

作者使用这种方法多久了?效果如何?

作者已经使用了十年之久,认为这种方法非常强大,而且非常有趣。

在 Debian 等系统上命令冲突问题为什么更严重?

因为 Debian 支持大量命令,例如在 Ubuntu 笔记本电脑上可用命令有 21733 条,系统添加新命令时更容易与自定义命令名称相同。

🏷️

标签

➡️

继续阅读