
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 bash
pá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:
- 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 bash
página de manual.
por exemplo:
cat foo/is/a/very/long/path/to/bar.c
rm $_