Ich habe gesucht, aber nichts gefunden. Ich suche eine Funktionalität in Bash, mit einem Terminal.
Vor langer Zeit hatte ich einen Benutzer auf einem Debian-System und ein Freund richtete mich mit einer praktischen Verlaufssuchfunktion ein (ich glaube, ich habe damals tcsh verwendet), bei der ich den Anfang eines vorherigen Befehls eintippte. und es würde eine Suche basierend auf der Teilzeichenfolge durchführen.
ZB wenn meine Geschichte ist:
./script.pl
./script.pl arg1
cat output
cat output | grep yada
Und ich schreibe .
, und drücken Sie Pfeil nach oben, würde es mir zeigen: ./script.pl arg1
. Drücke es erneut und es würde sich zeigen ./script.pl
, etc.
Sehr gerne würde es eine grep
auf .bash_history durchführen. Gibt es eine Möglichkeit, diese Funktionalität zu erhalten?
Antworten:
Fügen Sie folgende Zeilen ein
~/.inputrc
:Zeilen, die mit beginnen,
#
sind Kommentare. Ich kann mich nicht erinnern, was rückwärts und was vorwärts ist. Experimentiere damit. Möglicherweise müssen Sie vorwärts und rückwärts schalten.Ein bisschen Hintergrundinformation:
Bash verwendet readline , um die Eingabeaufforderung zu verarbeiten.
~/.inputrc
ist die Konfigurationsdatei für readline. Beachten Sie, dass dies auch in anderer Software, die die readline-Bibliothek verwendet, z. B. IPython , wirksam wird .Weitere Informationen zu readline finden Sie im bash-Handbuch . Dort finden Sie auch weitere geschichtsbezogene Readline-Befehle .
So rufen Sie die Escape-Codes für die Pfeiltasten ab:
cat
in einem Terminal (nurcat
keine weiteren Argumente).^[[A
für den Aufwärtspfeil und^[[B
den Abwärtspfeil.^[
durch\e
.quelle
$include /etc/inputrc
, fügen Sie vorzugsweise die erste Zeile hinzu.Erstellen Sie eine Datei mit dem Namen setup_readline.sh im Modus 644 in /etc/profile.d/ mit folgendem Inhalt, melden Sie sich an und überprüfen Sie Ihre bevorzugten Schlüssel:
Ich denke, das ist der beste Weg, dies zu tun. Meistens, wenn Sie Konfigurationsmanagementsysteme wie Chefkoch, Marionette usw. Verwenden
Und Systemkonfiguration noch unberührt!
quelle
screen
. Das Seltsame ist, dass andere .inputrc-Verknüpfungen funktionieren, aber nicht diese. Deshalb verwende ich jetzt beide Lösungen.Strg + R gibt Ihnen diese Art von Funktionalität. Beginnen Sie mit der Eingabe eines Teilbefehls, und es werden alte Befehle angezeigt, die Sie mit den Aufwärts- und Abwärtspfeilen navigieren können. Weitere Informationen: http://www.nuxified.org/blog/ctrl_r_in_the_bash_shell
quelle
Ctrl+r
Um die Antwort von Lesmana in Bezug auf "~ / .inputrc", die ich unter Trusty 14.04 erstellen soll, zu vervollständigen, verifizieren Sie "~ / .bashrc" (die erste Zeile ist bereits in meinem "~ / .bashrc" vorhanden):
Es ist bereits in Französisch in https://doc.ubuntu-fr.org/terminal?&#pour_completer_les_commandes_a_partir_de_l_historique erklärt .
quelle
Vielleicht möchten Sie https://github.com/dvorka/hstr ausprobieren, das eine einfache und mehrzeilige Filterung des Bash-Verlaufs bietet, die auf Metriken basiert (wann, wie oft und wie lange von Befehlen abhängt) - die Sie verwenden können Pfeiltasten zum einfachen Navigieren im Verlauf:
Es kann leicht sein gebunden an Ctrl-rund / oderCtrl-s
quelle
Die folgende Lösung kombiniert und erweitert einige der oben genannten Ansätze: Fügen Sie Ihrer
~/.bash_aliases
Datei die folgenden Zeilen hinzu (dies ist nicht erforderlich~/.inputrc
), um das folgende Verhalten zu erzielen:Melden Sie sich erneut bei der Shell an (oder führen Sie sie aus
source ./bash_aliases
), um die Änderungen zu übernehmen.quelle