Bash

打擊角色!特殊歷史命令

  • March 30, 2021

我們如何更改 bash 字元!對於其他直接單鍵字元的特殊歷史命令,例如=

這可以使用變數histchars完成:

最多三個控制歷史擴展、快速替換和標記化的字元(請參閱歷史互動)。第一個字元是 歷史擴展字元,即表示歷史擴展開始的字元,通常是’ !’。第二個字元是表示“快速替換”的字元,當被視為一行中的第一個字元時,通常是“ ^”。可選的第三個字元是當作為單詞的第一個字元時,指示該行的其餘部分是註釋的字元,通常是’ #’。歷史註釋字元會導致為該行中的剩餘單詞跳過歷史替換。

所以:

$ echo foo
foo
$ histchars='=^'
$ =echo
echo foo
foo
$ 

但是:程式碼中偶爾會!出現歷史擴展字元的假設(主要用於設置異常,例如在萬用字元中)。設置它=會破壞很多東西,比如設置變數:

$ a=e
aecho foo
bash: aecho: command not found
$ a'='e
bash: a=e: command not found
$ a\=e
bash: a=e: command not found
$ printf -v a e
$ echo $a
e

引用自:https://unix.stackexchange.com/questions/642710