![Bashの^foo^barの組み合わせは何をしますか? [コピー]](https://linux33.com/image/123936/Bash%E3%81%AE%5Efoo%5Ebar%E3%81%AE%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B%E3%81%AF%E4%BD%95%E3%82%92%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
最近Bashで誰かが処刑される映像を見ました^foo^bar
。この組み合わせの用途は何ですか?
答え1
バッシュがそれを呼ぶクイック交換。 Bashのマニュアルページの「記録拡張」セクションの「イベントインジケータ」セクション(オンラインマニュアル):
^string1^string2^
迅速な交換。前のコマンドを繰り返して、string1をstring2に置き換えます。等しい
!!:s/string1/string2/
したがって、^foo^bar
以前に実行されたコマンドは実行されますが、最初の発生はfoo
置き換えられますbar
。
の場合、s/old/new/
bashのマニュアルページに「最後の区切り文字がイベントラインの最後の文字である場合はオプションです」と示されています。そのため、使用できますが、^foo^bar
必ずしもそうする必要はありません^foo^bar^
。
(望むよりこの回答他のいくつかの指定子については言及していませんが)。
答え2
^foo^bar
最後のコマンドを実行して最初のインスタンスfoo
をbar
。たとえば、
$ ech "hello"
-bash: ech: command not found
$ ^ech^echo
echo "hello"
hello