Como alterar rapidamente a primeira palavra em um comando Bash?

Como alterar rapidamente a primeira palavra em um comando Bash?

Gostaria de melhorar um pouco meu fluxo de trabalho com o Bash e percebo que muitas vezes desejo executar o mesmo comando em um executável diferente.

Alguns exemplos:

Git (onde gostaria de alterar rapidamente a segunda palavra):

git diff     foo/bar.c
git checkout foo/bar.c

Cat/rm (onde apenas a primeira palavra deve ser alterada):

cat foo/is/a/very/long/path/to/bar.c
rm  foo/is/a/very/long/path/to/bar.c

Eu sei que posso pressionar Ctrl+ apara Delremover a primeira palavra, mas estou me perguntando se existe uma maneira mais rápida de fazer isso.

Responder1

!$expande para a última palavra do seu comando anterior.

Então você poderia fazer:

cat foo/is/a/very/long/path/to/bar.c

rm !$

ou:

git diff foo/bar.c

git checkout !$

Seus exemplos repetiram apenas a última palavra, então !$funcionou bem. Se você realmente tiver muitos argumentos que deseja repetir e quiser apenas alterar a primeira palavra, poderá usar !*, que se expande para todas as palavras do comando anterior, exceto o zero.

Consulte a seção "EXPANSÃO DO HISTÓRICO" da bashpágina de manual. Há muita flexibilidade aí.

Responder2

Ctrl+ apara ir para o início da linha e Alt+ dpara excluir a primeira palavra.

Responder3

Não tenho certeza se seria realmente mais rápido ou não, mas vejaEste artigo,particularmente o ponto #.3:

  1. Substitua uma string do comando anterior usando ^str1^str2^

No exemplo a seguir, primeiro executamos o comando ls para verificar um arquivo. Mais tarde percebemos que queremos visualizar o conteúdo do arquivo. Em vez de digitar o nome completo do arquivo novamente, podemos simplesmente substituir “ls” no comando anterior por “cat” conforme mostrado abaixo.

$ ls /etc/cron.daily/logrotate

$ ^ls^cat^
cat /etc/cron.daily/logrotate

Responder4

Além da resposta do @jjlin, você pode se interessar pelas seguintes dicas:

  • Ctrl+ wexclui a palavra à sua esquerda
  • Ctrl+ kexclui do cursor até o final da linha de comando
  • Ctrl+ uexclui do cursor até o início da linha de comando
  • Alt+ bmove o cursor uma palavra para trás
  • Alt+ fmove o cursor uma palavra para frente
  • $_contém o último argumento da linha de comando anterior

Para obter mais informações sobre isso, consulte a seção "Nomes de comandos Readline" da bashpágina de manual.

por exemplo:

cat foo/is/a/very/long/path/to/bar.c
rm $_

informação relacionada