Um dos meus truques favoritos do Unix é ^x^y
, que pegará o último comando e substituirá a primeira instância de "x" por "y". No entanto, eu estou querendo saber se um truque semelhante funciona para substituir todas as instâncias de "x" por "y" no último comando?
bash
shell
command-line
command-history
Pedreiro
fonte
fonte
command-history
tag para isso. Adicionado. Além disso, suponho que você esteja se referindo aobash
shell?Respostas:
Você pode usar a
!!:gs/search/replace/
notação para fazer o que quiser. Isso utiliza a pesquisa global & replace (:gs
):antes
depois de
Referências
fonte
[subhrcho@slc04lyo pcbpel]$ echo "hat that bat" hat that bat [subhrcho@slc04lyo pcbpel]$ !!:gs/at/xx/ echo "hxx that bat" hxx that bat
. o que estou perdendo?bash --version
= 4.2.45 (1) - liberação.Eu não acredito que há uma maneira fácil de adicionar algo a
^string1^string2
fazerbash
substituir todas as ocorrências. Como slm aponta, você deve escrever!!:gs/string1/string1
.Mas
zsh
, basta adicionar:G
:Nos dois
bash
ezsh
, você também pode usarfc -s
assim:Isso geralmente é transformado em um alias chamado
r
para que você possa fazer:fonte
Eu acredito que a melhor opção é usar ": &"
fonte
:&
houver mais ocorrências para substituir.