Gibt es eine Möglichkeit, einen Befehl im Bash-Verlauf zu speichern, ohne ihn auszuführen? z.B
$ cmd [a long list of arguments]
und jetzt erinnere ich mich, dass ich beim Tippen zuerst etwas anderes machen möchte. Kann ich so etwas haben?
$ cmd [a long list of arguments][some-key-strokes]
und dies wird nicht ausgeführt, sondern geht in die Bash-Geschichte, damit ich es später verwenden kann?
#
und drücke dann die Eingabetaste.Antworten:
Es gibt vielleicht einen besseren Weg, aber Sie können den
:p
Modifikator der Verlaufserweiterung verwenden , um die aktuelle Kommentarzeile zu drucken, ohne sie auszuführen.!#
ist die aktuelle Zeile und%
wird an sich nichts entsprechenquelle
ls -al
+1Verwenden Sie die
-s
Option für denhistory
Befehl:Der Aufruf an sich
history -s
selbst wird bequemerweise nicht zum Befehlsverlauf hinzugefügt, sodass es in Ihrem Verlauf so aussieht, als hätten Sie ihn ausgeführt,cmd
ohne dies tatsächlich zu tun.quelle
Normalerweise wird dies von erledigt
Beachten Sie, dass der Name des Verlaufs auf Ihrem System unterschiedlich sein kann. Daher können Sie die
HISTFILE
Umgebung var verwendenwas macht:
quelle
Normalerweise füge ich einfach ein # am Anfang der Zeile hinzu, um die Zeile in einen Kommentar umzuwandeln:
Ich bevorzuge diesen Weg, weil Sie es mit nur 3 [4 tun können, wenn Sie SHIFT benötigen, um #] Tastatureingaben einzufügen
^ a geht zum Anfang der aktuellen Zeile
# fügt den Kommentar hinzu
ENTER führt den Kommentar aus
quelle
... oder verwenden Sie die Tastenkombination:
ESC #
Siehe auch: Bash - Befehl speichern, ohne ihn auszuführen
quelle
Sie können versuchen, ein Leerzeichen und | hinzuzufügen (Pipe) am Ende der Zeile, drücken Sie die Eingabetaste und dann Strg-C'ing.
( Space, |, Enter, Ctrl+ C)
Der Befehl wird in Ihrem Verlauf mit einem | angezeigt am Ende (kann einfach mit der Rücktaste entfernt werden) anstelle eines # am Anfang (möglicherweise mühsamer zu entfernen).
HAFTUNGSAUSSCHLUSS: Ich weiß nicht, ob das immer funktioniert! Benutzung auf eigene Gefahr!
quelle
Sie könnten versuchen, diese Zeile zu verwenden:
history -s -p $COMMAND
Von
help
:Dies bedeutet, dass Sie Dinge wie erweitern
!!
und das Ergebnis am Ende des Verlaufs speichern können.quelle
history -s
wurde in einer Antwort vor zwei Jahren gegeben. Ist die-p
Verbesserung der auf das? Was macht-p
das (Soweit dies sinnvoll ist, sollten Sie Ihre Antwort bearbeiten , um sie zu verbessern, und nicht auf meinen Kommentar mit einem anderen Kommentar antworten.)Eine andere Möglichkeit besteht darin, an den Anfang der Zeile zu gehen und das zu tun, was Sie tun wollten, gefolgt von &&, wie z
Wenn das, was Sie tun wollten, erfolgreich ist, wird Ihr Befehl unmittelbar danach ausgeführt, und wenn er fehlschlägt, wird Ihr Befehl nicht ausgeführt, aber er befindet sich in der Historie. Sie könnten auch tun
Da der Test ohne Argumente fehlschlägt, ist dies im Vergleich zur
#
Methode eine Handvoll zusätzlicher Tastenanschläge .quelle
Ich denke, die "einige Tastenanschläge", die Sie möchten, sind Strg-U und Strg-Y, die eine Zeile im Kill-Ring speichern und später wieder herausziehen. Es geht nicht in die Geschichte ein, aber ich denke, es sollte nicht so sein, wie du es nicht getan hast.
Readline-Tötungsbefehle
Töten und reißen
Ich habe das vor Jahren gelernt, dann vergessen und auch nach diesen Tastenanschlägen gesucht.
Es wird auch hier besprochen: /unix/140741/how-to-save-a-command-you-entered-without-executing-it
quelle