Cancella comando dal terminale in OS X


23

Supponiamo di aver digitato un comando nel terminale 'mv * .jpg .. \ photos' e mentre sto scrivendo realizzo che non voglio più eseguire questo comando. Voglio solo cancellare l'intera affermazione. Non desidero cancellare l'intero schermo o eliminare qualsiasi cronologia bash, voglio solo interrompere la riga corrente e cancellarla.

Esiste una scorciatoia da tastiera o devo effettivamente eliminare ogni carattere?

Risposte:


32

Supponendo che tu sia in bash, usa Ctrl+ U.


Grazie! quello lo ha fatto. Esiste un elenco di formati di scorciatoie da tastiera documentati da qualche parte?
Paul Alexander,


1
Questo ha funzionato anche per me in zshell.
LandonSchropp,

1
Funziona solo se il cursore si trova alla fine della linea. Per quelle situazioni in cui il cursore si trova all'inizio, devi usare CTRL-K
Jarrod Nettles

Come si causa questo in uno script?
Jonny,

7

Molti programmi che attendono che tu digiti una riga di comando e quindi esegua quella riga, incluso bash, prendono Ctrl+ Cper significare "Interrompi l'attività corrente e torna al prompt principale".

Alcuni programmi, incluso bash, prendono Ctrl+ U( comando Clear dal terminale in OS X ) per indicare "cancella l'inizio della riga, fino al cursore" (o "cancella l'intera riga").

In bash, le differenze osservabili tra Ctrl+ Ce Ctrl+ Uincludono:

  • Puoi annullare Ctrl+ U, ma non Ctrl+ C.
  • Ctrl+ Umantiene la parte della linea dopo il cursore, se presente.
  • Ctrl+ Ucancella il testo interessato dallo schermo; Ctrl+ Cmostra un nuovo prompt sotto la riga corrente.

A volte vuoi smettere di digitare un comando ma immetterlo nella cronologia della shell per eseguirlo in seguito. Un trucco utile è mettere #a all'inizio della riga ed eseguirla: poiché la riga è ora un commento, non farà nulla. In bash, c'è una scorciatoia a tasto singolo: Alt+ #.


1

C'è una readlinefunzione che probabilmente non è legata a una sequenza di tasti chiamata kill-whole-lineche ucciderà l'intera linea invece di uccidere solo la parte prima del cursore ( unix-line-discardche è in qualche modo impropria ed è legata a Ctrl- u).

Puoi associarlo a qualsiasi sequenza di tasti disponibile. Mi piace ShiftAlt- Udal momento che è una funzione correlata. Quella do-lowercase-versionsequenza di tasti può essere legata al che significa che fa qualunque cosa faccia la versione non spostata (in questo caso upcase-word). Dal momento che non abbiamo davvero bisogno di due chiavi per farlo, usiamo quella.

Puoi provarlo dalla riga di comando creando l'associazione in questo modo:

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

o rendilo persistente inserendo questa riga nel tuo ~/.inputrcfile:

"\eU":kill-whole-line

Per annullare un Ctrl- uo ShiftAlt- U(o qualsiasi operazione che può essere annullata), premere Ctrl- Shift- _(trattino basso) o Ctrl- x Ctrl- u(due battute). Oppure puoi incollare indietro (yank) ciò che hai ucciso premendo Ctrl- yche può essere ripetuto se vuoi più copie di quel testo.

A proposito, se vuoi uccidere il testo dal cursore alla fine della riga, puoi premere Ctrl- k. Quindi, invece di eseguire l'associazione sopra descritta, puoi eliminare un'intera linea premendo Ctrl- u Ctrl- k. Solo la parte uccisa dal secondo di questi tasti verrà salvata nel kill buffer, ma puoi comunque annullare due volte per recuperarli entrambi.

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.