Wie lösche ich meine Befehle schnell?

168

Ich benutze Terminal für fast alle Aufgaben. Nehmen wir an, ich habe einen riesigen Befehl wie diesen eingegeben:

sudo a-huge-command

Was ist der einfachste Weg, um den gesamten Befehl mit einer einzigen Verknüpfung zu löschen, anstatt die backspaceTaste weiter zu drücken?

Ich bin ein Ubuntu-Neuling, der Ubuntu professionell einsetzen möchte.

Batman
quelle
13
Es ist auch erwähnenswert, dass Sie einstellen können bash(und einige andere Schalen) vi Schlüssel zu verstehen: set -o vi. Sie könnten dann tun esc, dd(oder auf andere Weise bearbeiten / ersetzen , wie Sie in vi [m] tun könnten).
Wayne Werner
6
Home, '#', Enter
Alistair Buxton
5
Dies ist ein billiger Hack, aber für das, was es wert ist, drücke ich in der Regel nur den Pfeil nach oben, bis ich einen wirklich kurzen Befehl erhalte (z. B. ls) und dann die Rücktaste - dies sind normalerweise nur ein paar Tastenanschläge, damit es nicht so groß ist ' Deal.
KennyPeanuts
Wenn ich ein paar Mal <- getippt habe, kann ich normalerweise zum Anfang meiner Abfrage zurückkehren. Ist das das, was Sie meinen?
Marc-Andre Benoit

Antworten:

177

Verwenden Sie Ctrl+ U, um Text von der Cursorposition zum Anfang der Befehlszeile zu schneiden. Wenn Sie möchten, können Sie den ausgeschnittenen Text später mit Ctrl+ Yeinfügen.

Wenn Sie nur die aktuelle Befehlszeile verwerfen und eine neue saubere Eingabeaufforderung erhalten möchten, drücken Sie Ctrl+ C.

Weitere Informationen finden Sie in der Ubuntu-Dokumentation zur Verwendung des Terminals

Eric Carvalho
quelle
Diese Antwort funktioniert sowohl für Bash (Ubuntu-Standard) als auch für TSH.
Nick
Ich dachte, Dash war Ubuntu Standard?
Chris
15
dashist der Standardinterpreter für /bin/shBefehle. bashist die Standard-Login- und TTY-Shell.
Darvids0n
9
Ich finde Ctrl + Ces eine schlechte Angewohnheit, da ich häufig versehentlich Signale an Programme mit eigener Eingabeaufforderung sende, sie töte und meinen Fortschritt und / oder Schwung verliere.
user606723
111

Ctrl+ Usollte dir helfen.

Nachfolgend sind die restlichen verfügbaren Optionen aufgeführt. Von hier aus gepackt

UNIX versteht mehrere Steuertastenbefehle, Befehle, die Sie eingeben, indem Sie die Steuertaste (Strg) gedrückt halten und gleichzeitig eine zweite Taste drücken

CTRL+ S- friert den Bildschirm ein und verhindert, dass eine Anzeige auf dem Bildschirm fortgesetzt wird (entspricht einer Nicht-Bildlauftaste) (manchmal dauert es einen Moment, bis sie funktioniert)

CTRL+ Q- friert den Bildschirm ein und lässt die Bildschirmanzeige fortfahren

CTRL+ C- unterbricht ein laufendes Programm

CTRL+ \- wie STRG - C, jedoch stärker (wird verwendet, wenn das Terminal nicht antwortet)

CTRL+ Z- unterbricht ein laufendes Programm (setzt das Programm mit dem Befehl fg fort, siehe s $

CTRL+ H- löscht das zuletzt eingegebene Zeichen

CTRL+ W- löscht das zuletzt eingegebene Wort

CTRL+ U- löscht die zuletzt eingegebene Zeile

CTRL+ R- sucht nach Text aus dem Verlauf

CTRL+ D- Beendet die Texteingabe für viele UNIX-Programme, einschließlich Mail und Write.

Hinweis:

Wenn wir mit CTRL+ Woder CTRL+ löschen U, führen wir auch eine (bearbeitete) "Ausschneide" -Operation (Löschen und Speichern in Puffer / Zwischenablage) durch. Verwenden Sie CTRL+ , um die Zeichenfolge in Puffer / Zwischenablage einzufügen (herauszuziehen) Y.

devav2
quelle
7
Tatsächlich durchsucht Strg-R den Text aus dem Verlauf.
Eric Carvalho
@EricCarvalho Du hast recht. Entfernen Sie diese Option aus der Antwort.
Devav2
2
Dies sind generische UNIX-Steuercodes. Das Standard-Ubuntu-Terminal ist bash-basiert, was anders ist.
OrangeDog
Strg-U löscht vom Cursor zum Zeilenanfang. Ich benutze es oft, indem ich den Cursor direkt vor die Argumente eines Befehls aus dem Verlauf setze. Auf diese Weise kann ich einen neuen Befehl mit den gleichen Argumenten eingeben, z. B. "less file" in "kate file" ändern, damit ich die Datei bearbeiten kann, nachdem ich sie überprüft habe, um festzustellen, ob Änderungen erforderlich sind.
Joe
1
@OrangeDog - Diese sind in Ordnung - Ich verwende alle diese in meinem Ubuntu-bash-bash-Terminal, mit Ausnahme der CTR- \ one.
Belacqua
61

Ich benutze normalerweise Alt+ Backspace. Wenn Sie verwenden bash, wird diese können Sie die vorherigen Sonderzeichen löschen , bis ( /, ;, , etc.). Wenn Sie verwenden zsh, werden auch die Schrägstriche und Semikolons entfernt. Es ist viel schneller als nur zu schlagen Backspace.

In bashist dies unterscheidet mich von Ctrl+ win dem Sinne , dass Ctrl+ wdas vorherige Wort wheres löscht Alt+ Backspacelöscht , bis die vorherigen Sonderzeichen gefunden werden. In machen zshbeide Tastenkombinationen dasselbe

Beschleunigung-G
quelle
8
Strg + W macht dasselbe.
Hytromo
Funktioniert jedoch nicht für Terminals wie rxvt.
5.
1
@lyrae Für mich funktioniert es perfekt in RXVT, wenn auch nicht in XTM. Und es funktioniert nur, wenn set -o emacsgesetzt ist.
Marco
Ich benutze ALT+Backspaceso gut wie CTRL+C. Dies funktioniert unter jedem Linux. :)
tftd
@ Hakermania: Nein, es ist anders. Strg + w löscht ein Wort und Alt + Backspace löscht , bis die vorherigen Sonderzeichen ( /, ;``, etc).
jobin
35

Hier finden Sie eine Liste der Tastaturkürzel, die mit der bashShell verwendet werden können.

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

Was Sie tun möchten, wird durch entweder Ctrl+ Coder Ctrl+ Uam Ende der Zeile erreicht.

OrangeDog
quelle
Dies ist die vollständigste Liste, obwohl die beste Antwort ist Ctrl+Coder ( Ctrl+E Ctrl+U)
New Alexandria
Wie viele auf der Liste gelten für tcsh, an denen ich interessiert bin?
TCSGrad
@ shan23 Lesen Sie den Abschnitt "Editor-Befehle" man tcshoder verwenden Sie bindkey -l. Es sieht ganz anders aus.
OrangeDog
Beachten Sie, dass einige davon fehlschlagen, wenn Sie vi-Bindungen für die Readline von bash (oder einer anderen Shell) verwenden. Diese sollten hauptsächlich auch für tcsh gelten. diese veralteten bash. bash enthielt auch viele nette History-Shortcuts von csh / tcsh.
Belacqua
25

AltMit + #(dh Alt+ Shift+ 3) wird der aktuelle Befehl auskommentiert und in der nächsten Zeile fortgesetzt.

Zum Beispiel, wenn Sie schreiben t, e, s, t, Alt+ #, die Sie erhalten:

you@computer$ #test
you@computer$ 

Wenn Sie möchten , wieder Ihren alten Befehl erhalten, können Sie auf den Pfeil nach oben drücken und löschen Sie das Raute - Zeichen ( Up, Home, Deleteoder Up, Ctrl+ A, Delete).

Ich denke, es ist eine Funktion von GNU Readline , da es in Bash, Python und MySQL funktioniert.

Schneeball
quelle
22

Ctrl+ C- Zusätzlich zum Unterbrechen von laufenden Befehlen kann es auch verwendet werden, um Ihre Befehlszeileneingabe zu "unterbrechen".

Im Gegensatz zum Ctrl+ sehen USie immer noch, was Sie eingegeben haben, aber Ihr Cursor springt in die neue Zeile und Sie erhalten eine leere Eingabeaufforderung.

Vilmantas Baranauskas
quelle
4
Ich bevorzuge dies einfach wegen des Muskelgedächtnisses, und Sie können immer noch alles Wichtige kopieren / einfügen, da die abgebrochene Befehlszeile dort bleibt.
ish
8

Die Bash readlineVerknüpfung Ctrl+ X+ Eist in der Tat sehr nützlich , wenn Sie auf der Kommandozeile arbeiten. Wenn Sie gerade einen langen Befehl eingeben und ihn stattdessen in Ihrem Standardtexteditor öffnen möchten, müssen Sie nur die Verknüpfung verwenden.

Es nutzt die readlineBibliothek von Bash und diese spezielle Verknüpfung heißt edit-and-execute-command. Sie können Ihren Standardeditor durch Platzieren export EDITOR="/usr/bin/vi"in ~/.bashrcoder festlegen ~/.bash_aliases.

Geben Sie ein bind -P, um Ihre aktuellen readlineBindungen anzuzeigen. Weitere Informationen finden Sie in man readlineoder auf den Ubuntu-Online-Hilfeseiten .


quelle
7

Ich verwende auch Esc+ Backspace, um alle vorherigen Zeichen bis auf ein Sonderzeichen zu löschen. Das ist das gleiche wie Alt+ Backspace. Praktisch, wenn Sie nur ein paar Wörter gleichzeitig löschen.

jytou
quelle
3

Für viTastenbelegungen

Wenn Sie eine viKey Map wie in bashmit set -o vioder in zshmit verwenden bindkey -v:

Einfügemodus

Es ist nur der gleiche Tastendruck wie im Standard / Emacs-Modus:

Ctrl+U

Löschen von der aktuellen Position zum Zeilenanfang. Es löscht also die gesamte Zeile, wenn sich der Cursor am Ende befindet.

Normaler Modus

Es gibt mehrere Möglichkeiten, die Zeile mit zwei Tastenanschlägen zu löschen:

Zeilenweise löschen dd, mit der Standardanzahl von einer Zeile:

dd

das ist das einfachste in Bezug auf die Tasten berührt.

Ein anderer Weg ist: Gehe zum Zeilenanfang mit ^und lösche zum Zeilenende mit D:

^D

Beides löscht die gesamte Zeile, nicht nur nach links, wie Ctrl+ Uim Einfügemodus oder die Variante bleow.

Wenn Sie sich derzeit am Ende der Zeile befinden und nichts rechts löschen müssen, gilt Folgendes:

Von hier aus löschen d, um mit der Zeile zu beginnen ^:

d^

Sie können diese alle aus dem Inset-Modus verwenden. Um in den normalen Modus zu wechseln, müssen Sie zunächst die übliche Escape-Funktion ausführen. Um beispielsweise die gesamte Zeile aus dem Einfügemodus zu löschen, verwenden Sie:

Escdd

Volker Siegel
quelle