Existem muitas maneiras de esfolar esse gato!
Para substituir uma sequência específica, ^old^new^extra
execute o comando anterior, substitua old
por new
e acrescente extra
. Você pode parar o quanto quiser; por exemplo ^old
, substituirá old
a sequência vazia e acrescentará a sequência vazia (essencialmente excluindo old
e não fazendo mais nada).
1. ^diff^checkout
2. ^cat^rm
Variante especialmente útil disso:
for i in `seq 1 10`; do echo something complicated; done
# inspect the output to see if it looks right
^echo
Para substituir uma palavra específica, você pode usar !m:n-p
para se referir às palavras n
através p
do comando m
(números negativos uso de contar para trás a partir do comando atual). Você pode omitir a -p
parte para se referir a uma única palavra e omitir a :m-p
parte para se referir a um comando inteiro. Formulários especiais !!
para !-1
, !$
para a última palavra do comando anterior e !*
para os argumentos (exceto a palavra 0
) do comando anterior são bastante úteis.
1. !!:0 checkout !!:2-
2. rm !*
Costumo usar os dois; O zsh é especialmente bom aqui, pois pressionar a tecla tab expandirá as coisas enigmáticas para garantir que você esteja certo.
Também existem muitas maneiras de fazer isso com a edição de linhas. Leia as combinações de teclas do seu shell.