Verwenden Sie den Aufwärtspfeil, um den vorherigen Befehl auszuführen


11

Welches Setup muss ich verwenden, um den vorherigen Befehl mit dem Aufwärtspfeil auszuführen? Mit Mac kann ich den gerade ausgeführten Befehl mit dem Aufwärtspfeil erneut ausführen, aber es scheint nicht mit meiner Bash-Shell zu funktionieren.

Ich verwende 8.04 (ich kann die neueste Distribution aufgrund einiger Probleme mit der Compilerversion nicht verwenden).

HINZUGEFÜGT

Ich habe nichts geändert, da es sich um eine Neuinstallation mit VMWare Fusion auf dem Mac handelt.


3
In der Standardkonfiguration funktioniert der Aufwärtspfeil einwandfrei: Haben Sie etwas geändert?
Enzotib

wie @enzotib sagt, wird bash dies standardmäßig tun, aber einige andere, z. B. sh werden es nicht tun!
Rory Alsop

Antworten:


10

Stellen Sie sicher, dass Ihr Verlauf aktiviert ist. Sie können den aktuellen Status überprüfen, indem Sie Folgendes ausführen:

set -o

Die Ausgabe sollte enthalten (beachten Sie die history onZeile):

histexpand      on
history         on
ignoreeof       off

Wenn dies nicht aktiviert ist, müssen Sie ausführen set -o history. Um diese Änderung dauerhaft zu machen, müssen Sie sie an Folgendes anhängen ~/.bashrc:

set -o history

Wenn Sie den vorherigen Befehl ausführen möchten, können Sie auch den nächsten Befehl ausführen:

!!

Von der Bash-Handbuchseite :

Event Designators
   An event designator is a reference to a command line entry in the history list.

   !      Start a history substitution, except when followed by a blank, newline,
          carriage return, = or ( (when the extglob shell option  is
          enabled using the shopt builtin).
   !n     Refer to command line n.
   !-n    Refer to the current command line minus n.
   !!     Refer to the previous command.  This is a synonym for `!-1'.
   !string
          Refer to the most recent command starting with string.
   !?string[?]
          Refer to the most recent command containing string.  The trailing ? 
          may be omitted if string is followed immediately by a newline.
   ^string1^string2^
          Quick  substitution.  Repeat the last command, replacing string1 with
          string2.  Equivalent to ``!!:s/string1/string2/'' (see Modifiers below).
   !#     The entire command line typed so far.

Wenn Sie Bash verwenden, können Sie auch die Standardverknüpfungen zum Navigieren durch den Verlauf verwenden:

  • Ctrl+ P: Vorheriger Befehl
  • Ctrl+ N: Nächster Befehl

    Befehle zum Bearbeiten des Verlaufs des vorherigen Verlaufs (Cp) Rufen Sie den vorherigen Befehl aus der Verlaufsliste ab und kehren Sie in die Liste zurück. next-history (Cn) Ruft den nächsten Befehl aus der Verlaufsliste ab und bewegt sich in der Liste vorwärts.


1
Ich habe überprüft, ob das Setup korrekt ist, aber die Aufwärtspfeiltaste funktioniert nicht. Ich kann jedoch Strg-P ​​/ N verwenden, um das gleiche Ergebnis zu erzielen. Vielen Dank.
Prosseek

@prosseek Hast du dich in diesem Fall geändert /etc/inputrcoder ~/.inputrc? Welche Escape-Sequenz erzeugt der Aufwärts- und Abwärtspfeil in dem von Ihnen verwendeten Terminal? Um dies zu überprüfen, laufen Sie cat, drücken Sie dann in der leeren Zeile den Aufwärts- und Abwärtspfeil und dann Strg + C, um die Katze zu verlassen. Hier produziert es ^[[A^[[B.
Geirha

@geirha: Ich habe die Datei ~ / .inputrc nicht und habe nichts geändert / etc / inputrc. Und für die Fluchtsequenz habe ich nichts auf dem Bildschirm gesehen.
Prosseek

@prosseek Dann klingt es so, als würden die Pfeiltasten das Terminal überhaupt nicht erreichen. Vielleicht filtert die VMWare-Schnittstelle sie heraus oder so.
Geirha

13

Stellen Sie sicher, dass Sie tatsächlich Bash verwenden. Ein häufiges Problem ist das Erstellen eines neuen Benutzers mit useraddanstelle adduserder Benutzer- und Gruppenanwendung (GUI). Bei ersteren ist der Standard-Shell-Satz /bin/sh. Führen Sie chsh( ch ange sh ell) aus, um sicherzustellen, dass es auf eingestellt ist /bin/bash.


1

Geben Sie im Terminal Folgendes ein:

gedit  ~/.inputrc

Dann kopieren, einfügen und speichern:

"\e[A": history-search-backward
"\e[B": history-search-forward
"\e[C": forward-char
"\e[D": backward-char

Von nun an können Sie im Terminal eine inkrementelle Suche durchführen. Um einen vorherigen Befehl zu finden, müssen Sie nur noch die ersten zwei oder drei Buchstaben eingeben und der Aufwärtspfeil bringt Sie schnell dorthin.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.