web-dev-qa-db-fra.com

Utilisation de la flèche vers le haut pour exécuter la commande précédente

De quelle configuration ai-je besoin pour utiliser la flèche vers le haut pour exécuter la commande précédente? Avec Mac, je peux utiliser la flèche vers le haut pour réexécuter la commande que je viens d’exécuter, mais cela ne semble pas fonctionner avec mon shell bash.

J'utilise 8.04 (je ne peux pas utiliser la dernière distribution à cause de problèmes de version de compilateur).

AJOUTÉE

Je n'ai rien changé puisqu'il s'agit d'une nouvelle installation avec VMWare Fusion sur Mac.

11
prosseek

Assurez-vous que votre historique est activé. Vous pouvez vérifier l'état actuel en exécutant:

set -o

La sortie doit contenir (notez la ligne history on):

histexpand      on
history         on
ignoreeof       off

Si ce n'est pas activé, vous devez exécuter set -o history. Pour que cette modification soit persistante, vous devez l'ajouter à ~/.bashrc:

set -o history

Si vous souhaitez exécuter la commande précédente, vous pouvez également exécuter la commande suivante:

!!

De page de manuel de Bash :

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.

Si vous utilisez Bash, vous pouvez également utiliser les raccourcis par défaut pour parcourir l'historique:

  • Ctrl + P: Commande précédente
  • Ctrl + N: Commande suivante

    Commandes de manipulation de l'historique previous-history (C-p) Extrait la commande précédente de la liste de l'historique, en revenant dans la liste. next-history (C-n) Récupère la commande suivante dans la liste d'historique, puis avance dans la liste.

10
Lekensteyn

Assurez-vous que vous utilisez réellement bash. Un casse-tête courant consiste à créer un nouvel utilisateur avec useradd au lieu de adduser ou l'application Users and groups (GUI). Dans le premier cas, le jeu de shell par défaut est /bin/sh. Exécutez chsh (change shell) pour vous assurer qu'il est défini sur /bin/bash.

13
geirha

En terminal entrez:

gedit  ~/.inputrc

Puis copier coller et sauvegarder:

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

À partir de maintenant, dans le terminal, vous pouvez effectuer une recherche incrémentielle. Tout ce que vous avez à faire pour rechercher une commande précédente consiste à entrer les deux ou trois premières lettres et la flèche dirigée vers le haut vous y conduisant rapidement.

1
Shailesh Singh