【发布时间】:2014-07-04 12:18:29
【问题描述】:
使用/bin/rm abc.txt 与有时必须使用alias rm 的时候有什么区别,然后使用rm abc.txt 执行
【问题讨论】:
-
我猜这取决于
rm的别名... -
我认为
alias rm是rm的另一个额外命令,直到 jforberg 发布答案
标签: shell
使用/bin/rm abc.txt 与有时必须使用alias rm 的时候有什么区别,然后使用rm abc.txt 执行
【问题讨论】:
rm 的别名...
alias rm 是rm 的另一个额外命令,直到 jforberg 发布答案
标签: shell
/bin/rm 将始终引用系统上的二进制 rm 命令。如果您只写rm abc.txt,则可能会发生以下情况之一:
您的 shell 直接将 rm 实现为内置函数,或者有一个名为 rm 的 shell 函数(没有运行外部命令)。
rm 以前被别名(alias rm=<substituted-command>)表示不同的含义。通常,别名命令在功能上是相似的,但并非必须如此。
如果以上都不适用,shell 会在/bin 中查找外部命令并运行它。
您可以使用alias 查看所有已定义的别名。还可以查看command -V shell 内置命令,它可以告诉您给定命令是外部命令、shell 函数、内置命令还是特殊内置命令。
【讨论】:
alias rm,看看当出现特定错误时,这两个命令都可以使用。
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
为rm 创建别名的典型原因是添加-i 或-I 选项。在“交互”模式下,rm 会在删除任何内容之前要求确认。
$ alias rm="/bin/rm -i"
$ rm myfile
rm: remove regular file ‘myfile’? _
【讨论】:
rm时真正思考