2014-09-05 73 views
0

這個特定的別名命令做什麼?瞭解bashrc別名命令

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

我想了解歷史和-p做了什麼!

+1

http://www.gnu.org/software/bash/manual/bashref.html#Using-History-Interactively – jm666 2014-09-05 23:32:10

+0

你的問題不是關於別名。是關於一個命令。歷史命令輸出存儲在var中。是我能告訴你的,但最簡單的是搜索歷史命令 – wonderwhy 2014-09-05 23:38:21

回答

3

Bash會記錄您運行的命令。這稱爲您的命令歷史記錄。使用history命令可以訪問和操作您的命令歷史記錄。

-p標誌告訴history命令在它的參數執行歷史替換並打印在標準輸出的結果。執行歷史替換時,history將用前一個命令替換!!。在你的情況下,每個!都被轉義爲\!,大概是因爲bash可以讓你將!設置爲超魔法,並且這個別名的作者想要壓制額外的魔法。

當bash看到$(...)時,它執行命令替換。這意味着它運行括號之間的命令,並用命令的標準輸出替換$(...)

sudo命令以root身份運行其參數。

因此,此別名可讓您鍵入hello以root身份運行您的上一個命令。如果前面的命令引用了空格(我認爲),你會遇到麻煩,但通常它應該起作用。

您可以通過使用fc得到相同的效果(在我看來)魔法少一點:

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

fc命令還執行歷史訪問和操作。 -l標誌表示「打印一些歷史條目」。 -n標誌表示不打印歷史記錄條目編號(僅打印命令)。 -1(負數)意味着只打印最近的歷史記錄。