web-dev-qa-db-ja.com

最後のコマンドのすべてのインスタンスで^ x ^ y UNIXトリック?

私のお気に入りのUnixトリックの1つは^x^y、これは最後のコマンドを受け取り、「x」の最初のインスタンスを「y」で置き換えます。しかし、同様のトリックが最後のコマンドでall "x"のインスタンスを "y"に置き換えるかどうか疑問に思いますか?

102
Mason

!!:gs/search/replace/必要なことを行うための表記。これは、グローバル検索と置換(:gs):

before

$ echo "harm warm swarm barm"
harm warm swarm barm

$ !!:gs/arm/orn/
echo "horn worn sworn born"
horn worn sworn born

参考文献

111
slm

^string1^string2に何かを追加してbashをすべての出現箇所に置き換える簡単な方法があるとは思いません。 slmが指摘するように、!!:gs/string1/string1と記述する必要があります。

ただし、zshでは、:Gを追加するだけです。

$ echo foo foo
foo foo
$ ^foo^bar^:G
echo bar bar
bar bar

bashzshの両方で、次のようにfc -sを使用することもできます。

$ echo foo foo
foo foo
$ fc -s foo=bar
echo bar bar
bar bar

これはしばしばrと呼ばれるエイリアスにされるので、次のようにすることができます:

$ echo foo foo
foo foo
$ r foo=bar
echo bar bar
bar bar
50
Mikel

「:&」を使用するのが最善の方法だと思います

$ echo "dog cat dog"
$ ^dog^cat^:&
echo "cat cat cat"
cat cat cat
3
Arthur Accioly