Angenommen, Sie beginnen in bash mit dem Schreiben eines Befehls wie:
$ rm -rf /foo/bar/really/long/path/here
und dann merke, dass du das doch nicht ausführen willst. Gibt es eine Möglichkeit, die Eingabe mit ein oder zwei Tastenanschlägen zu löschen?
Was ich in letzter Zeit gemacht habe, ist das Echo voranzustellen und die Eingabe in Anführungszeichen (Strg + A ,, echo "
Strg + E, "
) zu setzen und dann die Eingabetaste zu drücken . Gibt es einen schnelleren Weg?
Antworten:
Drücken Sie Ctrl- U, um alles vor dem Cursor zu löschen. Der gelöschte Befehl wird in einem Puffer gespeichert. Drücken Sie Ctrl-, Yum den gelöschten Befehl einzufügen.
(Optional: Drücken Sie Endoder Ctrl- E, um zuerst zum Ende der Eingabe zu springen.)
Alternativ drücken Ctrl- Cabzubrechen , was Sie schreiben.
quelle
stty -a
. Und das funktioniert mit jedem Programm, das die Terminalsteuerungen nicht aktiv ändert.Versuchen Sie Ctrl+ U. Das löscht die Eingabezeile.
quelle
Gefunden einen kurzen Hinweis auf http://www.ice2o.com/bash_quick_ref.html während der Suche .
ctrl+ e(wenn nicht am Ende der Zeile) plus ctrl+ uwird es tun.
quelle
Ctrl- U, Ctrl- Kmacht den Trick auch.
Ctrl- Ulöscht alles vom Zeilenanfang bis zum Cursor, Ctrl- Klöscht alles vom Cursor bis zum Zeilenende. (Es ist manchmal nützlich, nur einen von ihnen zu verwenden.)
quelle
Hierfür gibt es zwei Möglichkeiten
ctrl+ c- Dies löscht die gesamte Zeile, unabhängig davon, wo sich der Cursor befindet.
ctrl+ u- Dies löscht die Linie von der Position des Cursors bis zum Anfang.
quelle
Eine schöne Verknüpfung drückt Esc#. Es wird ein
#
Zeichen vorangestellt (wodurch die Zeile zu einem Kommentar wird) und dann die Eingabetaste gedrückt. Wenn Sie dann entscheiden, dass Sie den Befehl noch benötigen, haben Sie ihn immer noch in Ihrer Geschichte :)quelle
Durch Drücken von EscPlus Backspacein Bash wird alles bis zur Position des Cursors gelöscht.
(In Cygwin wird dadurch die Eingabe bis zum nächsten Wort gelöscht. Wörter werden durch Leerzeichen, Unterstriche usw. getrennt.)
quelle
Beachten Sie, dass mit Ctrl- U(oder Ctrl- Eund dann Ctrl- U) das, was Sie löschen, in einem Puffer gespeichert wird, damit Sie es später mit Ctrl- einfügen können Y.
quelle
Wenn Sie Bash im vi-Modus verwenden (einstellen mit
set -o vi
), drücken Sie Esc, um in den normalen Modus von vi zu wechseln, und geben Sie eindd
, um die aktuelle Zeile zu löschen!quelle
Dies ist eine Erweiterung von Knittls Antwort , bei der die Zeile im Konsolenverlauf durch Präfixieren eines Hash gespeichert wird . Überwindung von Nachteilen der Zwischenablage, z. B. versehentliches Überschreiben oder Unfähigkeit, die Schnittlinie als Referenz anzuzeigen.
Kommentarzeile & Neue Eingabeaufforderung zurücksenden
Verwenden Sie eine der Tastenkombinationen:
#
Der Zeile wird ein Hash-Zeichen vorangestellt, wodurch die gesamte Zeile in einen Kommentar umgewandelt wird. Es wird auch eine neue Eingabeaufforderung zurückgegeben, als ob der Benutzer die Eingabetaste gedrückt hätte. z.BKommentierte Zeile abrufen
Verwenden Sie eine der folgenden Verknüpfungen, um die alte Zeile aus dem Konsolenverlauf wiederherzustellen:
Wiederholen Sie die Tastenkombination, bis die gewünschte Zeile angezeigt wird.
Schnelle Entfernung des Hash-Präfixes
Um das Hash-
#
Präfix der Zeile zu entfernen, stehen verschiedene Optionen zur Verfügung:Entfernen Sie das erste Zeichen und führen Sie sofort den Befehl aus:
Bewegen Sie den Cursor, um das erste Zeichen zu starten und zu entfernen, ohne den Befehl auszuführen:
quelle
Versuchen Sie Folgendes, um die aktuelle Zeile zu löschen:
Ctrl- X, Ctrl-U
Alternativ können Sie Folgendes verwenden:
Esc- -D
was erfordert in ~ / .inputrc:
Siehe: http://codesnippets.joyent.com/posts/show/1690
quelle
"\e\e": kill-whole-line