Befehl vom Terminal in OS X löschen

24

Angenommen, ich habe einen Befehl im Terminal 'mv * .jpg .. \ photos' eingegeben, und während ich tippe, wird mir klar, dass ich diesen Befehl überhaupt nicht mehr ausführen möchte. Ich möchte nur die gesamte Aussage löschen. Ich möchte nicht den gesamten Bildschirm löschen oder den Bash-Verlauf löschen, sondern nur die aktuelle Zeile abbrechen und löschen.

Gibt es eine Tastenkombination oder muss ich tatsächlich jedes Zeichen löschen?

Paul Alexander
quelle

Antworten:

36

Angenommen, Sie sind in der Bash, verwenden Sie Ctrl+ U.

John T
quelle
Vielen Dank! das hat es geschafft. Gibt es eine Formatliste von Tastenkombinationen, die irgendwo dokumentiert sind?
Paul Alexander
2
Das hat auch bei mir geklappt.
LandonSchropp
1
Dies funktioniert nur, wenn sich Ihr Cursor am Ende der Zeile befindet. In Situationen, in denen sich der Cursor am Anfang befindet, müssen Sie STRG-K
Jarrod Nettles,
Wie verursacht man das in einem Skript?
Jonny
7

Viele Programme, die darauf warten, dass Sie eine Befehlszeile eingeben und diese dann ausführen, einschließlich Bash, verwenden Ctrl+ , um Czu bedeuten, dass Sie die aktuelle Aufgabe abbrechen und zur Hauptaufforderung zurückkehren.

Einige Programme, einschließlich bash, verwenden Ctrl+ U( Befehl zum Löschen vom Terminal in OS X ), um "den Zeilenanfang bis zum Cursor zu löschen" (oder "die gesamte Zeile zu löschen").

In bash sind folgende Unterschiede zwischen Ctrl+ Cund Ctrl+ zu beobachten U:

  • Sie können Ctrl+ rückgängig machen U, aber nicht Ctrl+ C.
  • Ctrl+ Ubehält den Teil der Zeile nach dem Cursor bei, falls vorhanden.
  • Ctrl+ Ulöscht den betroffenen Text vom Bildschirm; Ctrl+ Czeigt eine neue Eingabeaufforderung unter der aktuellen Zeile.

Manchmal möchten Sie einen Befehl nicht mehr eingeben, sondern ihn in den Shell-Verlauf eingeben, um ihn später auszuführen. Ein nützlicher Trick besteht darin, ein #am Anfang der Zeile einzufügen und auszuführen: Da die Zeile jetzt ein Kommentar ist, wird nichts mehr getan. In der Bash gibt es eine Ein-Tasten-Verknüpfung: Alt+ #.

Gilles 'SO - hör auf böse zu sein'
quelle
2

Es gibt eine readlineFunktion, die wahrscheinlich nicht an einen Tastenanschlag gebunden ist, der aufgerufen kill-whole-linewird und die gesamte Zeile abbricht , anstatt nur den Teil vor dem Cursor abzubrechen ( unix-line-discardwas etwas falsch ist und an Ctrl- gebunden ist u).

Sie können dies an jeden verfügbaren Tastendruck binden. Ich mag ShiftAlt- Uda es eine verwandte Funktion ist. Dieser Tastenanschlag kann gebunden sein, do-lowercase-versionwas bedeutet, dass er (in diesem Fall upcase-word) unabhängig von der nicht verschobenen Version ausgeführt wird . Da wir dazu nicht wirklich zwei Schlüssel benötigen, verwenden wir diesen.

Sie können es an der Befehlszeile ausprobieren, indem Sie die Bindung folgendermaßen erstellen:

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

oder machen Sie es dauerhaft, indem Sie diese Zeile in Ihre ~/.inputrcDatei einfügen:

"\eU":kill-whole-line

Um ein Ctrl- uoder ShiftAlt- U(oder einen Vorgang, der rückgängig gemacht werden kann) rückgängig zu machen, drücken Sie Ctrl- Shift- _(Unterstrich) oder Ctrl- x Ctrl- u(zwei Tastenanschläge). Oder Sie können in (yank) einfügen zurück , was Sie durch Drücken getötet Ctrl- ydie wiederholt werden können , wenn Sie mehrere Kopien dieses Textes wollen.

By the way, wenn Sie Text vom Cursor bis zum Ende der Linie töten wollen, können Sie drücken Ctrl- k. Anstatt die oben beschriebene Bindung auszuführen, können Sie eine ganze Zeile durch Drücken von Ctrl- u Ctrl- beenden k. Nur der Teil, der durch den zweiten dieser Tastenanschläge getötet wurde, wird im Kill-Puffer gespeichert. Sie können jedoch noch zweimal rückgängig machen, um beide wiederherzustellen.

Bis auf weiteres angehalten.
quelle