bash文字をどのように変更しますか?=
?のようなその他の直接単一キー文字に対する特殊記録コマンド
答え1
これは次の方法で行うことができます。histchars
変数:
履歴の拡張、高速交換、トークン化を制御するための最大3文字(参照:歴史的相互作用)。最初のキャラクターは 歴史的拡張文字、つまり歴史的拡張の始まりを表す文字として通常"
!
"。 2番目の文字は、行の最初の文字として扱われるときに「高速置換」を表す文字で、通常「^
」です。オプションの3番目の文字は、単語の最初の文字として見つかったときに行の残りの部分がコメント(通常 "#
")であることを示す文字です。過去のコメント文字のため、行に残っている単語の過去の置換項目をスキップします。シェルパーサーが必ず行の残りの部分をコメントアウトするようにするわけではありません。
だから:
$ 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