我知道在bash中使用别名命令可以在bash中定义自定义函数,甚至可以覆盖内置函数(例如别名sudo =“help”有效)。 Unalias -a 可以整理alias命令造成的混乱,但 unalias 也可以别名(我已经运行 alias unalias =“unalias”命令成功,所以我猜它也适用于其他命令 - 我不想搞乱操作系统,因为它是公共计算机)。
我的问题是,如果我将unalias别名为别名,然后是别名,如果它们本身不可用,我可以重置命令吗?如果我别名sudo会怎么样?
对于例如如果我想成为一个巨魔并在我的一个朋友的机器上运行此命令
alias sudo="clear" && alias unalias="clear" && alias alias="clear"
所有这些命令都将无法使用,因此我确信恢复sudo的功能将很难。是否可以不重新安装操作系统?
(我可以考虑使用ctrl + alt + f1切换到终端,但我不知道别名的东西是否也有别名。如果我在那里做同样的事情怎么办?) / p>
答案 0 :(得分:8)
一种常用的技术,使用反斜杠(\
)为命令添加前缀,以确保避免任何别名并从系统默认路径运行它:
示例:
$> alias ps=date
$> ps
Wed Feb 18 12:33:17 EST 2015
$> \ps
PID TTY TIME CMD
615 ttys000 0:00.66 -bash
621 ttys001 0:07.36 -bash
913 ttys002 0:01.19 -bash
正如您可以使用运行\ps
运行系统默认/bin/ps
运行ps
时运行别名命令date
。
答案 1 :(得分:2)
展开anubhava's answer:您还可以使用单引号或双引号:
$ alias ps=date
$ ps
Wed Feb 18 12:33:17 EST 2015
$ "ps"
PID TTY TIME CMD
615 ttys000 0:00.66 -bash
621 ttys001 0:07.36 -bash
913 ttys002 0:01.19 -bash
通常,任何计算结果为 ps 的表达式都将是unaliase。
答案 2 :(得分:1)
如果要执行二进制文件而不是具有相同名称的别名,只需键入二进制文件的完整路径:
/usr/bin/sudo <cmd>
这些别名只能在交互式shell中使用,而不能在shell脚本中使用,也不会破坏任何其他内容。
要“删除”该别名,只需将其从.bashrc
中删除,然后启动新的shell。