Existe um atalho para executar novamente um comando com argumentos do último comando (não cd, ls ou echo)

Existe um atalho para executar novamente um comando com argumentos do último comando (não cd, ls ou echo)

Pesquisando no Logfile passado com algo assim:

gato/caminho/para/arquivo de log | grep -iEw 'algum-endereço-ip-aqui |correspondig-mac-adress-aqui'

Isso me dá todas as linhas de log passadas até agora para que eu possa ver o que aconteceu. Agora eu também quero ver o que está acontecendo, então preciso trocar catcom tail -fisso:

cauda -f/caminho/para/arquivo de log | grep -iEw 'algum-endereço-ip-aqui |correspondig-mac-adress-aqui'

Responder1

Você pode usar !!:*para se referir a todas as palavras, exceto o zero da última linha de comando.

!!refere-se ao comando anterior, :separa a especificação do evento da palavra designador, *refere-se a todas as palavras, exceto o zero.

Isto é da HISTORY EXPANSIONseção do bash(1).

wieland@host in ~» cat foo | grep bar
bar
wieland@host in ~» tail -f !!:*
tail -f foo | grep bar
bar

Você também pode usar a substituição rápida onde ^string1^string2^repete o último comando, substituindo string1por string2:

wieland@host in ~» cat foo | grep bar
bar
wieland@host in ~» ^cat^tail -f
tail -f foo | grep bar
bar

Responder2

  1. Pressione Upou Ctrl+ Ppara recuperar a linha anterior. Repita se quiser a linha anterior, etc.
  2. Pressione Homeou Ctrl+ Apara ir para o início da linha.
  3. Pressione Alt+ Dpara excluir a palavra sob o cursor, ou seja, o comando que deseja substituir.
  4. Digite o comando que deseja executar agora.
  5. Pressione Enterpara executar o comando.

informação relacionada