【技巧】所有命令都以逗号开头
内容提要
作者在主目录下创建~/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 条,系统添加新命令时更容易与自定义命令名称相同。