Comando Limpar do terminal no OS X


24

Digamos que digitei um comando no terminal 'mv * .jpg .. \ photos' e, enquanto digito, percebo que não quero mais executar esse comando. Quero apenas excluir a declaração inteira. Não quero limpar a tela inteira ou excluir nenhum histórico do bash, apenas quero abortar a linha atual e apagá-la.

Existe um atalho de teclado ou eu tenho que realmente excluir cada caractere?

Respostas:


36

Supondo que você esteja no bash, use Ctrl+ U.


Obrigado! isso foi feito. Existe uma lista de formatos de atalhos de teclado documentados em algum lugar?
Paul Alexander


2
Isso funcionou para mim no zshell também.
LandonSchropp

1
Isso só funciona se o cursor estiver no final da linha. Para as situações em que o cursor está no início você precisa usar CTRL-K
Jarrod Nettles

Como você causa isso em um script?
Jonny

7

Muitos programas que esperam que você digite uma linha de comando e, em seguida, execute essa linha, incluindo o bash, usam Ctrl+ Cpara significar "Interromper a tarefa atual e voltar ao prompt principal".

Alguns programas, incluindo o bash, usam Ctrl+ U( comando Limpar do terminal no OS X ) para significar "apagar o início da linha, até o cursor" (ou "apagar a linha inteira").

No bash, as diferenças observáveis ​​entre Ctrl+ Ce Ctrl+ Uincluem:

  • Você pode desfazer Ctrl+ U, mas não Ctrl+ C.
  • Ctrl+ Umantém a parte da linha após o cursor, se houver.
  • Ctrl+ Uapaga o texto afetado da tela; Ctrl+ Cmostra um novo prompt abaixo da linha atual.

Às vezes, você deseja parar de digitar um comando, mas inseri-lo no histórico do shell para executar mais tarde. Um truque útil é colocar um #no início da linha e executá-la: como a linha agora é um comentário, ela não fará nada. No bash, há um atalho de tecla única: Alt+ #.


2

Há uma readlinefunção que provavelmente não está vinculada a um pressionamento de tecla chamado kill-whole-lineque mata a linha inteira, em vez de matar apenas a parte antes do cursor ( unix-line-discardque é um pouco impróprio e está vinculado a Ctrl- u).

Você pode vincular isso a qualquer pressionamento de tecla disponível. Eu gosto ShiftAlt- Ujá que é uma função relacionada. Esse pressionamento de tecla pode estar vinculado, o do-lowercase-versionque significa que ele faz o que a versão não deslocada faz (neste caso upcase-word). Como realmente não precisamos de duas chaves para fazer isso, vamos usar essa.

Você pode experimentá-lo na linha de comando, criando a ligação desta maneira:

bind '"\eU":kill-whole-line'

ou torne-o persistente, colocando esta linha no seu ~/.inputrcarquivo:

"\eU":kill-whole-line

Para desfazer uma Ctrl- uou ShiftAlt- U(ou qualquer operação que possa ser desfeita), pressione Ctrl- Shift- _(sublinhado) ou Ctrl- x Ctrl- u(duas teclas). Ou você pode colar (puxar) o que matou pressionando Ctrl- o yque pode ser repetido se você desejar várias cópias desse texto.

A propósito, se você deseja eliminar o texto do cursor até o final da linha, pressione Ctrl- k. Portanto, em vez de fazer a ligação descrita acima, você pode eliminar uma linha inteira pressionando Ctrl- u Ctrl- k. Somente a parte eliminada pelo segundo pressionamento de tecla será salva no buffer de interrupção, mas você ainda poderá desfazer duas vezes para recuperar os dois.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.