Ao executar comandos, às vezes talvez você precise executar um comando com o argumento do último comando. Como você pode fazer isso?
É claro que, com exceção do uso das teclas de seta e Delchaves: ↑←←←... ←→→DelDelDel... Del<new_command>.
Ao executar comandos, às vezes talvez você precise executar um comando com o argumento do último comando. Como você pode fazer isso?
É claro que, com exceção do uso das teclas de seta e Delchaves: ↑←←←... ←→→DelDelDel... Del<new_command>.
Respostas:
Por exemplo, se você executar este comando:
mkdir long_path_here/new_dir
provavelmente você deseja ir no diretório criado recentemente. Você pode fazer isso usando os próximos "atalhos":
cd Esc.- digite cde após pressionar, Escseguido por .(não no mesmo tempo). Se o comando anterior não tiver argumentos, você receberá o próprio comando anterior.cd !*- neste caso, você obterá todos os argumentos do comando previuos. Se o comando anterior não tiver argumentos, você não receberá nada.cd Alt+ .- digite cde depois pressione Alte .(ao mesmo tempo). De fato, dessa maneira, e continuando pressionando .(sem liberar Alt), você obterá o último argumento para cada comando do histórico. Se um comando não tiver argumentos, você receberá o próprio comando.Em geral: <command> Esc.ou <command> !*ou <command> Alt+ ..
Existem alguns atalhos se você deseja todos os argumentos do comando anterior ou apenas o último argumento.
<command> !* <command> !$Exemplos:
ls foo/ bar/
ls !* # Gives the results of ls foo/ bar/
ls foo/ bar/
ls !$ # Gives the results of ls bar/
Se você deseja um único argumento de uma lista de argumentos do comando anterior, pode usar <command> !!:<argNumber>
Exemplo:
ls foo/ bar/ baz/
ls !!:2 # Gives the results of ls bar/
ls foo/ bar/ baz/
ls !!:1 # Gives the results of ls foo/
!na versão arg, por exemplo !:2,. Supondo que o bash padrão.
!^no lugar de !:1.
Mencionado !*e !$é uma coisa boa, mas quando você precisar fazer uma pequena edição, os atalhos da linha de leitura vêm para ajudar!
Por exemplo, em vez dos inúmeros ↑←←←... ←→→DelDelDel... Delvocê pode simplesmente pressionar ↑ Ctrl-a(pular para o início da linha) Alt+d(excluir para o final da palavra)
Para mais informações man readlinee procure Default key bindings.
Para pegar o nth argumento do seu comando anterior, digite Alt+ n+ Alt_. Por exemplo, depois de:
$ echo 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
digitar echoseguido de Alt2Alt_fornecerá isso no próximo prompt:
$ echo 2
A "captura de tela" depois que você clicar Alt2é:
(arg: 2) echo
Você pode repetir Alt_várias vezes para obter o nth argumento dos comandos anteriores em sucessão.
Outra idéia útil é definir alias r="fc -s". Em seguida, você pode fazer substituições de comando:
$ echo 1
1
$ r echo=history
history 1
27755 history 1