O que faz a combinação ^ foo ^ bar no Bash? [duplicado]

20

Recentemente vi um vídeo em que alguém executou ^foo^bar no Bash. Para que serve essa combinação?

    
por chevallier 18.12.2017 / 22:07

2 respostas

25

O Bash chama isso de substituição rápida . Está na seção "Expansão do Histórico" da página man do Bash, na seção "Event Designators" ( manual on-line ):

^string1^string2^

Quick substitution. Repeat the previous command, replacing string1 with string2. Equivalent to !!:s/string1/string2/

Portanto, ^foo^bar executaria o comando executado anteriormente, mas substituiria a primeira ocorrência de foo por bar .

Note que, para s/old/new/ , a página do bash man diz "A final               delimitador é opcional se for o último caractere do               linha de evento. "É por isso que você pode usar ^foo^bar e não é necessário usar ^foo^bar^ .

(Consulte esta resposta para um monte de outros designadores, embora eu não tenha mencionado isso aqui.

    
por 18.12.2017 / 22:13
15

^foo^bar executa o último comando, substituindo a primeira instância de foo por bar . Por exemplo:

$ ech "hello"
-bash: ech: command not found
$ ^ech^echo
echo "hello"
hello
    
por 18.12.2017 / 22:12

Tags