【问题标题】:Difference between alias rm and /bin/rm别名 rm 和 /bin/rm 的区别
【发布时间】:2014-07-04 12:18:29
【问题描述】:

使用/bin/rm abc.txt 与有时必须使用alias rm 的时候有什么区别,然后使用rm abc.txt 执行

【问题讨论】:

  • 我猜这取决于 rm 的别名...
  • 我认为alias rmrm 的另一个额外命令,直到 jforberg 发布答案

标签: shell


【解决方案1】:

/bin/rm 将始终引用系统上的二进制 rm 命令。如果您只写rm abc.txt,则可能会发生以下情况之一:

  • 您的 shell 直接将 rm 实现为内置函数,或者有一个名为 rm 的 shell 函数(没有运行外部命令)。

  • rm 以前被别名(alias rm=<substituted-command>)表示不同的含义。通常,别名命令在功能上是相似的,但并非必须如此。

  • 如果以上都不适用,shell 会在/bin 中查找外部命令并运行它。

您可以使用alias 查看所有已定义的别名。还可以查看command -V shell 内置命令,它可以告诉您给定命令是外部命令、shell 函数、内置命令还是特殊内置命令。

【讨论】:

  • 非常感谢这篇内容丰富的文章。我想我必须在星期一检查我电脑中的alias rm,看看当出现特定错误时,这两个命令都可以使用。
  • 我不知道有任何 shell 将 rm 实现为内置函数。您忘记的一种情况是rm 可执行文件存在于$PATH/bin 之前的某个目录中(例如/usr/local/bin/rm)。对于 bash,type -a rm 提供的信息比 command -V rm 更多。
  • 刚刚发现我电脑中的alias rm函数如下:Usage: /bin/rm [OPTION]... FILE...在某种意义上类似于/bin/rm方法,我猜?但是,当我尝试使用 -a-v 方法时,我根本没有得到任何结果,或者我会收到一条错误消息,指出 -v: Command not found
  • @yan 你没有告诉我们你使用的是什么操作系统和外壳,所以我假设是 Linux 和 Bash。在该平台上, command -V 将为您提供有关命令类型的信息。确保你得到的是大 V,而不是小 V。
【解决方案2】:

rm 创建别名的典型原因是添加-i-I 选项。在“交互”模式下,rm 会在删除任何内容之前要求确认。

$ alias rm="/bin/rm -i"

$ rm myfile
rm: remove regular file ‘myfile’? _

【讨论】:

  • 不推荐。这让你习惯于拥有一个安全网,而不是在你输入rm时真正思考
猜你喜欢
  • 2021-04-09
  • 2012-08-12
  • 2019-10-26
  • 1970-01-01
  • 2012-07-02
  • 1970-01-01
  • 2012-02-07
  • 2014-07-21
  • 2014-06-26
相关资源
最近更新 更多