当我忘记了以下引文时,我的早晨咖啡还没有到达我的脑海:
alias grep="grep --color=always"
Run Code Online (Sandbox Code Playgroud)
所以我输入:
alias grep=grep --color=always
Run Code Online (Sandbox Code Playgroud)
留给我:
--color=always
grep=grep
Run Code Online (Sandbox Code Playgroud)
在我的别名中。
当我尝试使用 --color=always 清理时,unalias --color我得到:
bash: unalias: --: invalid option
unalias: usage: unalias [-a] name [name ...]
Run Code Online (Sandbox Code Playgroud)
我尝试逃避、引用和乞求,但我不知道如何让突击队 unalias 清理混乱。
(我知道重新启动可以解决问题,但肯定有另一种方法)
mta*_*tak 124
您可以通过--在任何参数之前添加来避免 POSIX 兼容系统解释命令中的破折号。
mtak@frisbee:~$ alias grep=grep --color=always
mtak@frisbee:~$ alias | grep color
alias --color='always'
mtak@frisbee:~$ unalias -- --color
mtak@frisbee:~$ alias | grep color
mtak@frisbee:~$
Run Code Online (Sandbox Code Playgroud)
这也适用于其他实用程序,假设您有一个名为-bla. 如果您尝试将其删除,rm则会出现以下错误:
mtak@frisbee:~$ ls -- -bla
-bla
mtak@frisbee:~$ rm -bla
rm: invalid option -- 'b'
Try 'rm ./-bla' to remove the file '-bla'.
Try 'rm --help' for more information.
Run Code Online (Sandbox Code Playgroud)
通过--在文件名之前使用,您将删除文件:
mtak@frisbee:~$ rm -- -bla
mtak@frisbee:~$ ls -- -bla
ls: cannot access '-bla': No such file or directory
Run Code Online (Sandbox Code Playgroud)
cho*_*oba 91
只需使用您用来设置别名的相同技巧
unalias whatever --color
Run Code Online (Sandbox Code Playgroud)