Como faço para excluir meus comandos rapidamente?

168

Eu uso o terminal para quase todas as tarefas. Digamos que eu digitei um comando enorme como este:

sudo a-huge-command

Qual é a maneira mais fácil de excluir todo o comando com um único atalho, em vez de continuar pressionando a backspacetecla?

Sou um novato no Ubuntu procurando usar o Ubuntu de uma maneira profissional.

homem Morcego
fonte
13
É também interessante notar que você pode definir bash(e várias outras conchas) para entender as chaves VI: set -o vi. Você poderia, então, fazer esc, dd(ou não editar / substituir como você poderia fazer em vi [m]).
Wayne Werner
6
Início, '#', Enter
Alistair Buxton
5
esse é um truque barato, mas para o que vale a pena, geralmente eu pressiono a seta para cima até chegar a um comando muito curto (por exemplo, ls) e depois retrocesso - geralmente, são apenas algumas teclas pressionadas, por isso não é tão grande assim. ' acordo.
precisa saber é o seguinte
CTRL <- tocado algumas vezes geralmente permite voltar ao início da minha consulta .. é isso que você quer dizer?
Marc-Andre Benoit

Respostas:

177

Use Ctrl+ Upara cortar o texto da posição do cursor até o início da linha de comando. Posteriormente, se desejar, use Ctrl+ Ypara colar o texto recortado.

Se você quiser apenas descartar a linha de comando atual e obter um novo prompt de limpeza, pressione Ctrl+ C.

Para obter mais referências, consulte a documentação do Ubuntu para usar o terminal.

Eric Carvalho
fonte
Esta resposta funciona para o bash (padrão do Ubuntu) e o tsch.
Nick
Eu pensei que o traço era o padrão do Ubuntu?
Chris
15
dashé o intérprete padrão para /bin/shcomandos. bashé o logon padrão e o shell TTY.
darvids0n
9
Acho Ctrl + Cque é um péssimo hábito, pois muitas vezes vou acidentalmente enviar sinais para programas com seu próprio prompt, matando-os e perdendo meu progresso e / ou impulso.
user606723
111

Ctrl+ Udeve ajudá-lo.

Abaixo estão as demais opções disponíveis. Agarrado a partir daqui

O UNIX compreende vários comandos da tecla Control, comandos que você digita mantendo pressionada a tecla Control (Ctrl) enquanto pressiona uma segunda tecla

CTRL+ S- congela a tela e impede que qualquer exibição na tela continue (equivalente a uma tecla sem rolagem) (às vezes leva um tempo para funcionar)

CTRL+ Q- descongela a tela e permite que a exibição continue

CTRL+ C- interrompe um programa em execução

CTRL+ \- igual a CTRL - C, mas mais forte (usado quando o terminal não responde)

CTRL+ Z- suspende um programa em execução (use o comando fg para continuar o programa, consulte s $

CTRL+ H- exclui o último caractere digitado

CTRL+ W- exclui a última palavra digitada

CTRL+ U- exclui a última linha digitada

CTRL+ R- pesquisa texto do histórico

CTRL+ D- finaliza a entrada de texto para muitos programas UNIX, incluindo correio e gravação.

Nota:

Quando excluímos usando CTRL+ Wou CTRL+ U, também estamos executando uma operação de "cortar" (cortar) (apagar) (excluir e armazenar no buffer / área de transferência). Para colar (puxar) a sequência no buffer / área de transferência, use CTRL+ Y.

devav2
fonte
7
Na verdade, ctrl-r pesquisa texto do histórico.
Eric Carvalho
@EricCarvalho Você está certo. Removendo essa opção da resposta.
precisa saber é
2
Esses são códigos de controle UNIX genéricos. O terminal ubuntu padrão é baseado em bash, que é diferente.
OrangeDog 5/09/12
Ctrl-U exclui do cursor até o início da linha. Costumo usá-lo colocando o cursor antes dos argumentos para um comando do histórico. Dessa forma, posso digitar um novo comando usando os mesmos argumentos - como alterar menos arquivo para arquivo kate, para poder editar o arquivo depois de analisá-lo para ver se são necessárias edições.
Joe
1
@ OrangeDog - Tudo bem - eu uso tudo isso no meu terminal bash do Ubuntu, com exceção do CTR- \ one.
Belacqua
61

Eu normalmente estou usando Alt+ Backspace. Se você estiver usando bash, isso permitirá que você excluir até que o caractere especial anterior ( /, ;, , etc.). Se você estiver usando zsh, ele removerá as barras e o ponto-e-vírgula também. É muito mais rápido do que apenas bater Backspace.

Em bash, isso é diferente de Ctrl+ wno sentido de que Ctrl+ wexclui a palavra anterior, onde Alt+ Backspaceexclui até que o caractere especial anterior seja encontrado. Em zsh, ambas as combinações de teclas fazem a mesma coisa

Exeleração-G
fonte
8
Ctrl + W faz a mesma coisa.
Hytromo 04/04/12
Porém, não funcionará para terminais como o rxvt.
Sqram
1
@lyrae Para mim, funciona perfeitamente no rxvt, embora não no xterm. E só funciona se set -o emacsestiver definido.
Marco Marco
Eu uso ALT+Backspacetambém CTRL+C. Isso funciona em qualquer linux. :)
tftd
@ hakermania: Não, é diferente. Ctrl + w exclui uma palavra e Alt + Retrocesso exclui até que o carácter especial anterior ( /, ;, ``, etc).
jobin 28/05
35

Aqui está uma lista de atalhos de teclado que podem ser usados ​​com o bashshell.

Ctrl + A    Go to the beginning of the line you are currently typing on
Ctrl + E    Go to the end of the line you are currently typing on
Ctrl + L    Clears the Screen, similar to the clear command
Ctrl + U    Clears the line before the cursor position. If you are at the end of the line, clears the entire line.
Ctrl + H    Same as backspace
Ctrl + R    Lets you search through previously used commands
Ctrl + C    Kill whatever you are running or start a new prompt
Ctrl + D    Exit the current shell
Ctrl + Z    Puts whatever you are running into a suspended background process. fg restores it.
Ctrl + W    Delete the word before the cursor
Ctrl + K    Clear the line after the cursor
Ctrl + T    Swap the last two characters before the cursor
Esc + T     Swap the last two words before the cursor
Alt + F     Move cursor forward one word on the current line
Alt + B     Move cursor backward one word on the current line
Tab         Auto-complete files and folder names

O que você quer fazer é alcançado com Ctrl+ Cou Ctrl+ Uno final da linha.

OrangeDog
fonte
Esta é a lista mais completa, embora a melhor resposta seja Ctrl+Cou ( Ctrl+E Ctrl+U)
New Alexandria
Quantos na lista são aplicáveis ​​ao tcsh, no qual estou interessado?
TCSGrad 5/12/12
@ shan23 Leia a seção "Comandos do editor" man tcshou use bindkey -l. Parece que é muito diferente.
OrangeDog 6/09/12
Observe que alguns deles irão falhar se você estiver usando as ligações do vi para o Readline do bash (ou de outro shell). Eles devem se aplicar principalmente ao tcsh também; estes bash pré-datado. O bash também incorporou muitos dos atalhos de histórico do csh / tcsh.
Belacqua
25

Alt+ #(ou seja, Alt+ Shift+ 3) comentará o comando atual e continuará na próxima linha.

Por exemplo, se você digitar t, e, s, t, Alt+ #, você obterá:

you@computer$ #test
you@computer$ 

Se você deseja receber o seu antigo comando de volta, você pode pressionar a seta para cima e apagar o caracter ( Up, Home, Deleteou Up, Ctrl+ A, Delete).

Eu acho que é um recurso do GNU Readline , pois funciona em Bash, Python e MySQL.

Bola de neve
fonte
22

Ctrl+ C- além de interromper os comandos em execução, também pode ser usado para "interromper" a entrada da linha de comando.

Ao contrário do Ctrl+ U, você ainda verá o que digitou, mas o cursor saltará para a nova linha e você receberá um prompt de linha de comando vazio.

Vilmantas Baranauskas
fonte
4
Prefiro isso simplesmente por causa da memória muscular, e você ainda pode copiar / colar qualquer coisa importante, porque a linha de comando abortada permanece lá.
Ish
8

O readlineatalho do Bash Ctrl+ X+ Eé muito útil quando você está trabalhando na linha de comando. Se você estiver digitando um comando longo e decidir que deseja abri-lo no seu editor de texto padrão, tudo o que você precisa fazer é usar o atalho.

Ele faz uso da readlinebiblioteca do Bash e esse atalho específico é chamado de edit-and-execute-command. Você pode definir o seu editor padrão, colocando export EDITOR="/usr/bin/vi"em ~/.bashrcou ~/.bash_aliases.

Entre bind -Ppara ver suas readlineligações atuais e consulte man readlineou as páginas de manual do Ubuntu online para obter mais informações.


fonte
7

Também uso Esc+ Backspacepara excluir todos os caracteres anteriores até um caractere especial. É o mesmo que é Alt+ Backspace. Prático, se você estiver apenas excluindo algumas palavras de cada vez.

jytou
fonte
3

Para viligações de teclas

Quando usin um vimapa de teclas, como em bashcom set -o viou zshcom bindkey -v:

Modo de inserção

É apenas a mesma tecla que no modo padrão / emacs:

Ctrl+U

excluir da posição atual para o início da linha. Portanto, ele exclui toda a linha se o cursor estiver no final.

Modo normal

Existem várias maneiras de excluir a linha com dois pressionamentos de tecla:

Exclua no sentido da linha dd, com a contagem padrão de uma linha:

dd

que é o mais simples em termos de teclas tocadas.

Outra maneira é: Vá para o início da linha ^e exclua até o final da linha com D:

^D

Os dois excluem a linha inteira, não apenas para a esquerda, como Ctrl+ Uno modo de inserção ou a variante bleow.

Se você está no final da linha atualmente, não precisa excluir nada à direita, isso também faria:

Exclua daqui d, para o início da linha ^:

d^

Você pode usar tudo isso no modo de inserção; primeiro é necessário o escape usual para entrar no modo normal. Por exemplo, para excluir a linha inteira do modo de inserção, use:

Escdd

Volker Siegel
fonte