Bash chama isso de substituição rápida . Está na seção "Expansão do histórico" da página de manual do Bash, na seção "Designadores de eventos" ( manual online ):
^string1^string2^
Substituição rápida. Repita o comando anterior, substituindo string1 por string2. Equivalente a !!:s/string1/string2/
Portanto ^foo^bar, executaria o comando executado anteriormente, mas substituiria a primeira ocorrência de foopor bar.
Observe que, para s/old/new/, a página de manual do bash diz "O delimitador final é opcional se for o último caractere da linha de evento". É por isso que você pode usar ^foo^bare não é obrigado a usar ^foo^bar^.
(Veja esta resposta para um monte de outros designadores, embora eu não tenha mencionado este lá).
Bash chama isso de substituição rápida . Está na seção "Expansão do histórico" da página de manual do Bash, na seção "Designadores de eventos" ( manual online ):
Portanto
^foo^bar
, executaria o comando executado anteriormente, mas substituiria a primeira ocorrência defoo
porbar
.Observe que, para
s/old/new/
, a página de manual do bash diz "O delimitador final é opcional se for o último caractere da linha de evento". É por isso que você pode usar^foo^bar
e não é obrigado a usar^foo^bar^
.(Veja esta resposta para um monte de outros designadores, embora eu não tenha mencionado este lá).
^foo^bar
executa o último comando, substituindo a primeira instância defoo
porbar
. Por exemplo: