【问题标题】:Potential Dangers of ALIASing a Unix Command Starting with "."?给以“.”开头的 Unix 命令起别名的潜在危险?
【发布时间】:2010-11-14 18:42:27
【问题描述】:

在目录中搜索代码文件时,我想使用别名为自己创建一些命令,但我有点紧张,因为它们以“.”开头。下面是一些例子:

$ alias .cpps="ls -a *.cpp"

$ alias .hs="ls -a *.h"

我应该担心遇到任何困难吗?有其他人这样做过吗?

【问题讨论】:

  • 我不知道 '.' 有什么问题,但一般来说,很多人根本不鼓励使用别名并推荐适当的 shell 函数。 (例如 .cpps() {ls -a *.cpp})
  • 这实际上更有意义。我很想知道 /usr/bin 与别名与 shell 函数中的命令之间的优先级如何排列。嗯.....谢谢你的回答!
  • @daveslab:内置命令type 会告诉你哪个被调用。
  • 谢谢@greyfade,不知道。
  • @Daveslab:您询问别名与在 PATH 上找到的命令的比较等等。为此,您需要阅读手册。 AFAIK,首先搜索别名;如果没有找到别名,那么它会查看内置命令,然后查看 PATH 上的命令。但我会更正内置插件如何适应这一点。

标签: unix shell command-line ksh


【解决方案1】:

在名称中加上点有什么好处?这似乎是一个不必要的额外字符。我只使用基本名称(hs 和 cpps)作为别名。

我想有人可能会争辩说,点表示命令是别名——但为什么这种区别是有益的? Unix 的一大优点是它消除了操作系统提供的神圣命令和用户编写的程序之间的区别。它们都是平等的——只是位于不同的地方。

我认为使用以点开头的别名没有任何真正的危险。我从来没有想过尝试;我有点惊讶他们被允许。但考虑到他们是被允许的,我看不出有什么真正的风险。

【讨论】:

    【解决方案2】:

    我怀疑是否存在任何技术问题,尽管它可能会让长期使用 Unix 的任何人感到困惑。在我的世界中,命令中没有点,文件名没有空格或大写字母!

    【讨论】:

      【解决方案3】:

      我不会使用 '.'开始你的别名,因为它在'/'旁边,你可能会错误地将两者打在一起并意外地在当前目录中运行一个可执行文件(特别是如果你使用制表符完成)。

      【讨论】:

      • 它们成为当前目录中的命令./cpps 的可能性有多大——这会造成什么损害?我不认为我用过点和斜线键 - 我打错了很多东西,但不记得这是个问题。
      • 如果您正在编译可执行文件,那么在当前工作目录中很可能存在以“c”开头的内容。我认为作为一般规则,如果您的输入速度比终端显示的速度快(例如,使用滞后的 SSH 连接)并使用制表符完成,例如./c 这将是一个潜在的危险。我不知道有多少人花时间在炮弹中,他们没有一个恐怖的故事可以分享,当他们打错字或使用^替代^错误并大发雷霆时。
      猜你喜欢
      • 2011-03-07
      • 2016-02-04
      • 2011-12-19
      • 2011-11-09
      • 1970-01-01
      • 2011-06-21
      • 2011-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多