Bash
^x^y 最後一個命令中所有實例的unix技巧?
我最喜歡的 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
在
bash
和zsh
中,您也可以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