了解bashrc别名命令

时间:2014-09-05 23:30:09

标签: bash shell

这个特殊的别名命令有什么作用?

alias hello='sudo $(history -p \!\!)' 

我想了解历史和-p做什么!

1 个答案:

答案 0 :(得分:3)

Bash会跟踪您运行的命令。这称为命令历史记录history命令允许您访问和操作命令历史记录。

-p标志告诉history命令对其参数执行历史记录替换并在标准输出上打印结果。执行历史记录替换时,history会将!!替换为上一个命令。在您的情况下,每个!都会被转义为\!,大概是因为bash允许您将!设置为非常神奇,而此别名的作者想要抑制额外的魔法。< / p>

当bash看到$(...)时,它会执行命令替换。这意味着它在括号之间运行命令,并用命令的标准输出替换$(...)

sudo命令以root身份运行其参数。

因此,此别名允许您键入hello以root身份运行上一个命令。如果上一个命令引用了空格(我认为),你会遇到麻烦,但通常它应该有效。

使用fc,你可以通过(在我看来)获得同样的效果:

alias hello='sudo $(fc -ln -1)'

fc命令还执行历史记录访​​问和操作。 -l标志表示“打印一些历史记录条目”。 -n标志表示不打印历史条目号(只打印命令)。 -1(否定的)意味着只打印最近的历史记录条目。