忽略别名很好吗?

bli*_*bli 2 shell bash alias nice

我有alias rm='rm -i'我的~/.bashrc文件(我刚刚了解到它被一些人认为是不好的做法)。

使用nice以下命令运行时似乎没有考虑别名:

bli@naples:~$ touch test
bli@naples:~$ rm test
rm: remove regular empty file 'test'? n
bli@naples:~$ nice rm test
bli@naples:~$ 
Run Code Online (Sandbox Code Playgroud)

为什么呢?

Ste*_*ris 5

默认情况下,nice是一个外部命令:

$ command -v nice
/usr/bin/nice
Run Code Online (Sandbox Code Playgroud)

这意味着它不知道别名,这是一个 shell 特性:

$ alias foo='echo hello'
$ foo
hello
$ nice foo
nice: foo: No such file or directory
Run Code Online (Sandbox Code Playgroud)

然而,shell 的一个特性允许别名也可以扩展更多的别名。您以空格结束扩展。

$ alias nice='/usr/bin/nice '
Run Code Online (Sandbox Code Playgroud)

在最后找到那个空间;这一点很重要。

现在...

$ nice foo
hello
$ command -v nice
alias nice='/usr/bin/nice '
Run Code Online (Sandbox Code Playgroud)

如果您希望 shell 进行别名扩展,任何外部命令都可以用这样的别名包装。