Então, eu uso o upno meu shell (Bash no OSX ou Ubuntu, principalmente), mas algumas vezes sei que quero o material após a localização atual do cursor. Existe alguma maneira de ter a linha que eu estou completa com a linha acima? Bater upe depois lefté chato.
Quaisquer outros truques também seriam legais, exceto tab, sobre o que todos nós estamos falando agora :)
Aqui está um exemplo (por solicitação do ~ quack):
Eu digito mkdir /where/the/hell/is/that/thing
e quero cd no mesmo diretório. Mas agora eu sei sobre meta-b :)
keyboard-shortcuts
bash
Dan Rosenstark
fonte
fonte
Respostas:
Tente o seguinte:
depois pressione alt+.
dependendo do seu sistema operacional e do terminal que você pode ter que digitar esc, em seguida,.
Você também pode pressionar alt+ 1+ .para selecionar um argumento anterior específico.
Isso é muito melhor do que !! ou! $ porque você pode realmente ver o que está prestes a executar e, de qualquer maneira, leva menos pressionamentos de tecla.
editar: a rigor, metanão é alt, portanto, também pode funcionar com a tecla "windows", dependendo da configuração do teclado.
fonte
Você deve ler o man bash no seu sistema, particularmente a seção Readline , pois esse é o mecanismo de entrada interativo do bash. O manual do Bash em gnu.org tem uma boa seção sobre Edição de Linha de Comando que ajudará a preencher algumas das lacunas.
Por padrão, você pode usá-los para percorrer a linha de comando (apenas listando alguns aqui; consulte o link para obter uma lista completa):
Você pode usá-los para "matar" (também conhecido como "cortar") o texto de uma linha:
Assim, você pode combiná-las para selecionar um pedaço de alguma linha de comando que deseja repetir, eliminá-la e colá-la no final do seu próximo comando.
Agora, para torná-lo ainda mais divertido, vamos considerar a expansão do histórico do bash . É isso
!!
que a resposta de Studer menciona . A expansão do histórico divide-se em designadores de eventos , designadores de palavras e modificadores .Os designadores de eventos têm esta aparência (novamente, veja os links para a lista completa):
!
- inicia uma substituição do histórico!n
- o n-ésimo comando na lista de histórico do bash, para algum número inteiro n (funciona também para negativos)!!
- o comando anterior; equivalente a!-1
!string
- o comando mais recente começando com stringDesignadores de palavras selecionam determinadas partes de um evento. Use
:
para separar o evento do designador de palavras. As palavras são numeradas de 0 a partir do início da linha e inseridas na linha atual, separadas por espaços únicos.$
- designa o último argumento (por exemplo,!!:$
é o último argumento do último comando; pode ser reduzido para!$
)n
- designa a n-ésima palavra (por exemplo,!str:2
é o segundo argumento do comando mais recente que começa com str ;!!:0
é o comando do último comando)Portanto, para acompanhar o seu exemplo, se o seu último comando for
mkdir /some/really/long/path
, apenas a execução!!
executará o comando novamente. Mas você desejacd
seguir esse caminho:Agora, digamos que você execute alguns outros comandos e, em seguida, deseje voltar ao caminho novamente. Se esse foi o último comando mkdir que você executou, você pode usá-lo para repetir esse caminho:
fonte
bind -p
oubind -P
imprimirá as combinações de teclas atuais; essa é a referência definitiva para o que o seu bash usa.Se você é um usuário do vi, pode colocar o shell no modo vi digitando
set -o vi
.Você pode fazer todos os tipos de coisas poderosas na linha de comando após digitar
Esc + k
.O que eu uso mais é
Esc+K
, em seguida,/
qualquer texto digitado após a barra será usada para pesquisar seu histórico de linha de comando.por exemplo
Esc + k
/smbclient
, dará o último comando smbclient digitado. Você pode rolar por todas as pesquisas usando as teclas vi padrão (j
ek
para cima e para baixo, mas acho que as setas para cima e para baixo também funcionarão).Para obter mais ajuda aqui , também existem algumas coisas bash embutidas nesse link que podem ser mais o que você está procurando.
Saúde, Stu.
fonte
Você pode usar o
!!
que representa o último comando:fonte
!!
é um sinônimo para!-1
: gnu.org/software/bash/manual/bashref.html#Event-DesignatorsNo exemplo que você fornece, use! $ Para representar o último parâmetro do comando anterior:
Você também pode usar variações numeradas para extrair parâmetros específicos dos comandos anteriores.
fonte
Recentemente, achei esta folha de dicas readline muito útil. Muitas coisas que eu não sabia. Eu costumava usar
!$
o tempo todo até descobrir o Alt+ ., que agora uso o tempo todo. :)fonte