In fast allen modernen Befehlszeilenumgebungen, die ich verwendet habe, können Sie den Pfeil nach oben drücken, um einige Befehle in Ihrem Verlauf zurückzugehen und einen früheren Befehl erneut auszuführen. In einigen Befehlszeilenumgebungen, die ich verwendet habe, können Sie an der nächsten Eingabeaufforderung danach auch den Abwärtspfeil drücken, um den Verlauf an der Stelle zu durchsuchen, an der der vorherige Befehl im Verlauf angezeigt wurde.
Angenommen, Sie tun Folgendes:
$ vi mysource.c
$ make
$ make test
Angenommen, Ihr Test schlägt fehl und Sie möchten diese Schritte erneut ausführen. Drücken Sie also dreimal den Aufwärtspfeil, um zu zurückzukehren vi mysource.c
und traf Rückkehr das laufen zu lassen. Bei der nächsten Eingabeaufforderung danach möchte ich in der Lage sein, den Abwärtspfeil einmal zu drücken, um zu gelangen make
. Und bei der nächsten Eingabeaufforderung danach möchte ich einmal den Abwärtspfeil drücken, um zu gelangen make test
.
Ich weiß nicht, ob es sich um die Standardeinstellung von Mac OS X handelt bash
Einstellungen oder Standardeinstellungen für Terminal.app oder was, aber diese Funktion ist standardmäßig nicht aktiviert.
Ich habe das durchgesehen bash(1)
Manpage und gefunden:
forward-search-history (C-s)
...aber ^S
schien nichts zu tun. Ich bin mir nicht sicher, ob es von Terminal als Old School verschluckt wurde XOFF
oder so etwas (obwohl es nicht zu pausieren schien Terminal-Ausgabe).
Ein paar andere Anmerkungen:
- Ich verwende Mac OS X Snow Leopard 10.6.6.
- Ich kenne bereits viele andere unterhaltsame Möglichkeiten, mit der Shell-Historie zu arbeiten. Es ist nur diese eine Sache, die ich gerade zu bearbeiten versuche.
- Obwohl alle Hinweise in die richtige Richtung hilfreich wären, funktionieren die bekannten Lösungen auf 10.6.x.
bash
in Terminal.app wäre super extra hilfreich.
Antworten:
^S
macht das Gegenteil von^R
(nachdem du getan hast^R
). Möglicherweise müssen Sie tunstty -ixon
um das zu deaktivierenXOFF
Verhalten.Die nächstgelegene Adresse wird von bereitgestellt
^O
(Zeile lesenoperate-and-get-next
). Drücken Sie den Aufwärtspfeil, um einen vorherigen Befehl abzurufen, und drücken Sie^O
anstattEnter
. Der Befehl wird ausgeführt. Wenn die Eingabeaufforderung erneut ausgegeben wird, wird der nächste Befehl im Verlauf in die Befehlszeile eingefügt. Sie können Pfeile, Enter oder verwenden^O
An diesem Punkt.quelle
bind -p
eingebaut sagt mir dasC-o
ist gebunden anoperate-and-get-next
. Ich habe es sogar über das Gastkonto versucht, um sicherzustellen, dass ich irgendwann in der fernen Vergangenheit nicht meine Terminal- oder Bash-Umgebung kaputt gemacht habe.^O
wurde vom tty als "discard" -Zeichen gefressen.stty discard "^-"
behoben. Ich habe die Operate-and-Get-Next-Funktion ausprobiert und festgestellt, dass sie nicht nah genug an dem ist, wonach ich suche. Die Suche geht weiter ...Abhängig von Ihrer Version von stty benötigen Sie möglicherweise "stty flush undef". (Derzeit dokumentiert die OS X-Manpage stty "flush", die Ausgabe stty -a zeigt jedoch weiterhin den Wert "discard" an.)
Verwenden Sie ^ o, um einen Befehl aus dem Verlauf auszuführen, wenn Sie glauben, dass Sie auch den nächsten Befehl möchten. Wenn Sie es wollen, wiederholen Sie einfach das ^ o. Wenn Sie es doch nicht wollen, bewegen Sie sich ab diesem Punkt mit ^ p, ^ n, ^ s usw. im Verlauf oder löschen Sie die Befehlszeile mit ^ u.
quelle