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

像许多 Unix 用户一样,我很久以前就在我的主目录下创建了 ~/bin/ 目录,并将其添加到我的 PATH 中,这样我就可以用自己设计的一些便利和 shell 脚本来补充丰富的 Unix 基本命令集。

当然,问题是有可能发生冲突。因为我的 shell 脚本名称往往是简短精炼的小写字符集,就像默认的系统命令一样,所以不知道 Linux 什么时候会添加一条新命令,而这条命令的名称又恰好与我的命令相同。这种情况在 20 世纪 80 年代的 System V Revision 3 工作站上其实不太可能发生,但当我进入 Debian 的世界后,麻烦就变得更加严重了。红帽公司从未让我真正担心过,因为他们打包的软件(相对而言)太少了。但如今的 Debian 支持大量的命令;我的 Ubuntu 笔记本电脑上显示有数千条可用命令:

$ apt-file search -x '^/usr/bin/[^/]*$' | wc -l
21733

解决的办法显然是调整我的命令名称,使它们仍然易于键入,但绝不会被选为系统命令名称。对我来说,”易于键入 “意味着无需使用移位键,而在现代键盘上,未移位时可用的字符非常少。小写字母正是系统命令中使用的字符;括号、反斜线、冒号、后打钩和单打钩对 shell 都有特殊含义;斜线和点字符在文件名中都有特殊含义。(斜线将目录名与文件名分开,因此不能出现在文件名中,而点如果出现在文件名的前面,则表示 “隐藏该文件,使其无法正常浏览”,在许多其他情况下,点将文件与其扩展名分开)。

现在只剩下一个字符:简单、谦虚的逗号。

通过快速实验,我发现逗号正是我一直在寻找的字符!所有触手可及的工具和外壳都将逗号视为文件名中一个完全正常且无异议的字符。只需在我的每条自定义命令前加上逗号,它们就能与系统命令完全区分开来,从而避免了任何碰撞的可能性。

最重要的是,有了神奇的tab符完成功能,浏览我的全部命令集变得非常容易。当我试图记住某个系统中我的 ~/bin/ 目录下有哪些命令时,或者只是试图记住某些命令的名称时,我只需输入一个逗号,然后输入制表符,我的命令列表就会出现:

$ ,«tab»
,complete-scp        ,go-thpgp            ,range
,complete-ssh        ,gr                  ,svn-store-password
,coreoff             ,hss                 ,umount
,coreon              ,mount-thpgp
,find                ,mount-twt

我衷心向所有拥有自己 ~/bin/ 目录、希望自己的命令名称保持干净、整洁,并且与未来可能出现在系统中的任何命令完全对立的人推荐这种方法。我使用这种方法已经有十年之久,你应该会发现它非常强大。最后,它还非常有趣。

你也许感兴趣的:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注