Come cancello rapidamente i miei comandi?


168

Uso il terminale per quasi tutte le attività. Diciamo che ho inserito un comando enorme come questo:

sudo a-huge-command

Qual è il modo più semplice per eliminare l'intero comando con un singolo collegamento, anziché continuare a premere il backspacetasto?

Sono un principiante di Ubuntu che cerca di utilizzare Ubuntu in modo professionale.


13
E 'anche la pena di notare che è possibile impostare bash(e diverse altre shell) per capire le chiavi VI: set -o vi. Si potrebbe poi fare esc, dd(o in altro modo modificare / sostituire, come si potrebbe fare in vi [m]).
Wayne Werner,

6
Home, '#', Enter
Alistair Buxton

5
questo è un trucco economico ma per quello che vale, di solito premo solo freccia su fino a quando non arrivo a un comando molto breve (ad esempio, ls) e poi backspace - questo di solito solo un paio di colpi di chiave, quindi non è così grande un ' affare.
KennyPeanuts,

CTRL <- toccato un paio di volte di solito mi consente di tornare all'inizio della mia query .. è questo che vuoi dire?
marc-andre benoit,

Risposte:


177

Usa Ctrl+ Uper tagliare il testo dalla posizione del cursore all'inizio della riga di comando. Successivamente, se lo desideri, usa Ctrl+ Yper incollare il testo tagliato.

Se vuoi semplicemente scartare la riga di comando corrente e ottenere un nuovo prompt pulito premi Ctrl+ C.

Per ulteriori riferimenti, consultare la documentazione di Ubuntu per l' utilizzo di The Terminal


Questa risposta funziona sia per bash (impostazione predefinita di Ubuntu) che per tsch.
Nick,

Pensavo che il trattino fosse quello predefinito di Ubuntu?
Chris,

15
dashè l'interprete predefinito per i /bin/shcomandi. bashè il login predefinito e la shell TTY.
darvids0n,

9
Trovo Ctrl + Cche sia una cattiva abitudine, poiché spesso invio accidentalmente segnali ai programmi con il loro prompt, uccidendoli e perdendo i miei progressi e / o slancio.
user606723

111

Ctrl+ Udovrebbe aiutarti.

Di seguito sono elencate le altre opzioni disponibili. Afferrato da qui

UNIX comprende diversi comandi del tasto di controllo, comandi immessi tenendo premuto il tasto di controllo (ctrl) mentre si preme un secondo tasto

CTRL+ S- blocca lo schermo e impedisce a qualsiasi visualizzazione sullo schermo di continuare (equivalente a un tasto di non scorrimento) (a volte impiega un momento per funzionare)

CTRL+ Q: consente di sbloccare lo schermo e continuare la visualizzazione dello schermo

CTRL+ C- interrompe un programma in esecuzione

CTRL+ \- uguale a CTRL - C ma più forte (usato quando il terminale non risponde)

CTRL+ Z- sospende un programma in esecuzione (utilizzare il comando fg per continuare il programma, vedere s $

CTRL+ H- elimina l'ultimo carattere digitato

CTRL+ W- elimina l'ultima parola digitata

CTRL+ U- elimina l'ultima riga digitata

CTRL+ R- cerca il testo dalla cronologia

CTRL+ D- termina l'inserimento di testo per molti programmi UNIX, inclusi posta e scrittura.

Nota:

Quando eliminiamo usando CTRL+ Wo CTRL+ U, stiamo anche eseguendo un'operazione (modifica) di "taglio" (yank in) (elimina e memorizza in buffer / appunti). Per incollare (strappare) la stringa in buffer / appunti, usare CTRL+ Y.


7
In realtà ctrl-r cerca il testo dalla cronologia.
Eric Carvalho,

@EricCarvalho Hai ragione. Rimozione di tale opzione dalla risposta.
devav2

2
Questi sono codici di controllo UNIX generici. Il terminale predefinito di Ubuntu è basato su bash, che è diverso.
OrangeDog,

Ctrl-U cancella dal cursore all'inizio della riga. Lo uso spesso posizionando il cursore appena prima degli argomenti su un comando della storia. In questo modo, posso digitare un nuovo comando usando gli stessi argomenti, come cambiare meno file in file kate in modo da poterlo modificare dopo averlo visto per vedere se sono necessarie modifiche.
Joe,

1
@OrangeDog - Questi vanno bene - li uso tutti nel mio terminale con bash basato su Ubuntu, ad eccezione del CTR- \ one.
belacqua,

61

Di solito sto usando Alt+ Backspace. Se si sta utilizzando bash, questo vi permetterà di eliminare fino a quando il carattere speciale precedente ( /, ;, , etc.). Se stai usando zsh, rimuoverà anche le barre e i punti e virgola. È molto più veloce del semplice colpire Backspace.

In bash, questo è diverso da Ctrl+ wnel senso che Ctrl+ wcancella la parola precedente dove Alt+ Backspacecancella fino a quando non viene trovato il carattere speciale precedente. In zsh, entrambe le combinazioni di tasti fanno la stessa cosa


8
Ctrl + W fa la stessa cosa.
hytromo,

Tuttavia, non funzionerà con terminali come rxvt.
sqram,

1
@lyrae Per me funziona perfettamente in rxvt, sebbene non in xterm. E funziona solo se set -o emacsimpostato.
Marco,

Io uso ALT+Backspaceanche CTRL+C. Funziona su qualsiasi Linux. :)
tftd

@hakermania: No, è diverso. Ctrl + w cancella una parola e Alt + Backspace cancella fino a quando il carattere speciale precedente ( /, ;, ``, ecc).
Jobin

35

Ecco un elenco di scorciatoie da tastiera che possono essere utilizzate con la 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

Quello che vuoi fare è raggiunto da Ctrl+ Co Ctrl+ Ualla fine della riga.


Questa è la lista più completa, anche se la risposta migliore è Ctrl+Co ( Ctrl+E Ctrl+U)
New Alexandria,

Quanti nell'elenco sono applicabili a tcsh, a cui sono interessato?
TCSGrad

@ shan23 Leggi la sezione "Comandi dell'editor" man tcsho usa bindkey -l. Sembra che sia molto diverso.
OrangeDog,

Nota che alcuni di questi falliranno se stai usando i collegamenti vi per Readline di bash (o di un'altra shell). Questi dovrebbero applicarsi principalmente anche a tcsh; questi bash datati. bash ha anche incorporato molte delle scorciatoie storiche di csh / tcsh.
belacqua,

25

Alt+ #(cioè Alt+ Shift+ 3) commenterà il comando corrente e continuerà sulla riga successiva.

Ad esempio, se si digita t, e, s, t, Alt+ #, si otterrà:

you@computer$ #test
you@computer$ 

Se si desidera ottenere il vostro vecchio comando indietro, è possibile premere la freccia su e cancellare il carattere hash ( Up, Home, Deleteo Up, Ctrl+ A, Delete).

Penso che sia una caratteristica di GNU Readline , poiché funziona in Bash, Python e MySQL.


22

Ctrl+ C- oltre all'interruzione dei comandi in esecuzione, può essere utilizzato anche per "interrompere" l'input della riga di comando.

Contrariamente a Ctrl+ U, vedrai ancora ciò che hai digitato, ma il tuo cursore salterà alla nuova riga e otterrai un prompt della riga di comando vuoto.


4
Preferisco questo semplicemente per via della memoria muscolare, e puoi ancora copiare / incollare qualsiasi cosa importante perché la riga di comando interrotta rimane lì.
Ish,

8

La readlinescorciatoia Bash Ctrl+ X+ Eè davvero molto utile quando lavori sulla riga di comando. Se stai inserendo un comando lungo e decidi che vuoi invece aprirlo nell'editor di testo predefinito, tutto ciò che devi fare è utilizzare il collegamento.

Fa uso della readlinelibreria di Bash e questo particolare collegamento è chiamato edit-and-execute-command. È possibile impostare l'editor predefinito posizionando export EDITOR="/usr/bin/vi"in ~/.bashrco ~/.bash_aliases.

Entra bind -Pper vedere i tuoi readlinecollegamenti attuali e fai riferimento man readlineo alle manpage di Ubuntu online per maggiori informazioni.


7

Uso anche Esc+ Backspaceper eliminare tutti i caratteri precedenti fino a quando non appare un carattere speciale. Questo è lo stesso è Alt+ Backspace. Comodo se stai solo cancellando poche parole alla volta.


3

Per vile combinazioni di tasti

Quando si utilizza una vimappa chiave come in bashcon set -o vio in zshcon bindkey -v:

Modalità di inserimento

È la stessa sequenza di tasti della modalità predefinita / emacs:

Ctrl+U

eliminazione dalla posizione corrente all'inizio della riga. Quindi elimina l'intera riga se il cursore si trova alla fine.

Modalità normale

Esistono diversi modi per eliminare la riga in due sequenze di tasti:

Elimina in modo lineare dd, con il conteggio predefinito di una riga:

dd

che è il più semplice in termini di tasti toccati.

Un altro modo è: Vai all'inizio della riga con ^ed elimina fino alla fine della riga con D:

^D

Entrambi eliminano l'intera riga, non solo a sinistra, come Ctrl+ Uin modalità inserimento, o il bleow variante.

Se sei attualmente alla fine della riga, quindi non è necessario eliminare nulla a destra, ciò farebbe anche:

Elimina da qui d, per iniziare la riga ^:

d^

Puoi usarli tutti dalla modalità inserto, devi prima utilizzare la solita fuga per passare alla modalità normale. Ad esempio, per eliminare l'intera riga dalla modalità di inserimento, utilizzare:

Escdd

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.