Effacer la commande du terminal sous OS X

24

Supposons que j'ai tapé une commande dans le terminal 'mv * .jpg .. \ photos' et que, pendant que je tape, je ne veux plus du tout exécuter cette commande. Je veux simplement supprimer l'intégralité de la déclaration. Je ne veux pas effacer tout l'écran ou supprimer tout historique de bash. Je veux simplement abandonner la ligne actuelle et l'effacer.

Existe-t-il un raccourci clavier ou dois-je réellement supprimer chaque caractère?

Paul Alexander
la source

Réponses:

36

En supposant que vous êtes en bash, utilisez Ctrl+ U.

John T
la source
Merci! ça l'a fait. Existe-t-il une liste de formats de raccourcis clavier documentée quelque part?
Paul Alexander
2
Cela a également fonctionné pour moi dans zshell.
LandonSchropp
1
Cela ne fonctionne que si votre curseur se trouve à la FIN de la ligne. Pour les situations où votre curseur est au début, vous devez utiliser CTRL-K
Jarrod Nettles
Comment causez-vous cela dans un script?
Jonny
7

De nombreux programmes qui attendent que vous tapiez une ligne de commande puis exécutent cette ligne, y compris bash, prennent Ctrl+ Cpour signifier «Abandonner la tâche en cours et revenir à l'invite principale».

Quelques programmes, dont bash, prennent Ctrl+ U( Effacer la commande du terminal sous OS X ) pour signifier «effacer le début de la ligne, jusqu'au curseur» (ou «effacer toute la ligne»).

En bash, les différences observables entre Ctrl+ Cet Ctrl+ Uincluent:

  • Vous pouvez annuler Ctrl+ U, mais pas Ctrl+ C.
  • Ctrl+ Uconserve la partie de la ligne après le curseur, le cas échéant.
  • Ctrl+ Uefface le texte affecté de l'écran; Ctrl+ Caffiche une nouvelle invite sous la ligne actuelle.

Parfois, vous voulez arrêter de taper une commande mais l'entrer dans l'historique du shell pour l'exécuter plus tard. Une astuce utile est de mettre un #au début de la ligne et de l'exécuter: puisque la ligne est maintenant un commentaire, elle ne fera rien. En bash, il existe un raccourci à touche unique: Alt+ #.

Gilles 'SO- arrête d'être méchant'
la source
2

Il existe une readlinefonction qui n'est probablement pas liée à une séquence de touches appelée kill-whole-linequi tuera la ligne entière au lieu de ne tuer que la partie avant le curseur ( unix-line-discardce qui est quelque peu inapproprié et est lié à Ctrl- u).

Vous pouvez le lier à n'importe quelle frappe disponible. J'aime ShiftAlt- Upuisque c'est une fonction connexe. Cette frappe peut être liée à do-lowercase-versionce qui signifie qu'elle fait tout ce que fait la version non décalée (dans ce cas upcase-word). Puisque nous n'avons pas vraiment besoin de deux clés pour cela, utilisons-la.

Vous pouvez l'essayer sur la ligne de commande en créant la liaison de cette façon:

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

ou le rendre persistant en mettant cette ligne dans votre ~/.inputrcfichier:

"\eU":kill-whole-line

Pour annuler un Ctrl- uou ShiftAlt- U(ou toute opération pouvant être annulée), appuyez sur Ctrl- Shift- _(soulignement) ou Ctrl- x Ctrl- u(deux frappes). Ou vous pouvez coller à nouveau (yank) ce que vous avez tué en appuyant sur Ctrl- yqui peut être répété si vous voulez plusieurs copies de ce texte.

Soit dit en passant, si vous souhaitez supprimer le texte du curseur jusqu'à la fin de la ligne, vous pouvez appuyer sur Ctrl- k. Ainsi, au lieu de faire la liaison décrite ci-dessus, vous pouvez tuer une ligne entière en appuyant sur Ctrl- u Ctrl- k. Seule la partie tuée par la seconde de ces frappes sera enregistrée dans le tampon de mise à mort, mais vous pouvez toujours annuler deux fois pour les récupérer toutes les deux.

En pause jusqu'à nouvel ordre.
la source