Bash

^x^y 最後一個命令中所有實例的unix技巧?

  • July 10, 2020

我最喜歡的 Unix 技巧之一是^x^y,它將採用最後一個命令並將“x”的第一個實例替換為“y”。但是,我想知道類似的技巧是否可以在最後一個命令中用“y”替換所有“x”實例?

你可以使用!!:gs/search/replace/符號來做你想做的事。這利用了全域搜尋和替換 ( :gs):

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

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

參考

我不相信有一種簡單的方法可以添加一些東西來^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

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