15 votes

Comment faire pour que le terminal auto-complète à partir de l'historique des commandes?

Sous Linux, j'avais réussi à configurer le terminal de telle manière que si je tape une partie d'une commande et que j'appuie sur la touche 'haut', elle se complèterait automatiquement avec la dernière commande qui commençait par ce que j'avais tapé.

J'ai essayé de faire la même chose sur MacOS en suivant les instructions sur cet article de MacWorld, mais cela ne semble pas fonctionner.

Est-ce que quelqu'un sait comment configurer cela sur un Mac?

2 votes

Il est préférable d'utiliser ctrl+r pour rechercher votre historique de commandes, de cette manière vous n'avez même pas besoin de vous souvenir du nom de la commande. Cela a accéléré mon utilisation du terminal de nombreuses fois. Hautement recommandé. De plus, je recommande le Z Shell et : ohmyz.sh

0 votes

Au final, j'ai installé le Shell Fish, qui propose des auto-complétions à partir de l'historique pendant que vous tapez, donc il vous suffit d'appuyer sur la flèche droite pour compléter la commande.

24voto

Denis Burtsev Points 196

Vous pouvez utiliser la recherche inversée. Il suffit d'appuyer sur ctrl+R et de commencer à taper votre commande, puis d'appuyer sur Entrée.

2 votes

Direct et très pratique, merci

2 votes

Je ne vois pas en quoi cela est infiniment pire que la solution Page-Up / Page-Down sous Linux.

7voto

Marogian Points 158

Attribuer une touche à history-search

Pour rechercher des lignes commençant par ce qui est tapé, comme expliqué dans un article Macworld, vous pouvez ajouter des raccourcis clavier, par exemple :

  • Touche Up attribuée à history-search-backward
  • Touche Down attribuée à history-search-forward

Pour les ajouter de manière permanente, modifiez votre fichier ~/.inputrc comme ceci :

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

La même chose peut être réalisée en utilisant la commande bind dans votre fichier ~/.bashrc en collant les lignes ci-dessus entre guillemets simples (') comme argument :

bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'

Note : pour que les deux paramètres prennent effet, vous devez redémarrer le terminal !

Alternative : utiliser les raccourcis de recherche d'historique intégrés

Vous pouvez utiliser la Recherche d'historique inverse dans Bash comme expliqué dans la question Rechercher dans l'historique de vos commandes sur le terminal macOS.

Les raccourcis suivants permettent de rechercher des parties de commandes dans l'historique des commandes Bash :

  • Ctrl + r pour reculer
  • Ctrl + s pour avancer

Tagger les commandes tapées pour une recherche facile ultérieure

Ne serait-il pas utile d'utiliser la recherche inverse ci-dessus si vous pouviez définir des mots-clés faciles à mémoriser ?

Pour exploiter la recherche d'historique partielle, vous pouvez également ajouter des commentaires aux commandes, par exemple en tapant une commande pour une utilisation ultérieure :

ls -l *.sh # liste scripts

Le commentaire ajouté (commençant par #) permet de rechercher liste scripts car le commentaire est enregistré dans l'historique.

0 votes

Cela s'applique à bash (shell par défaut pour macOS Mojave et versions antérieures) et avec quelques modifications également à zsh (shell par défaut à partir de macOS Catalina)

5voto

Luc C Points 447

Vous pouvez vous référer à la suggestion automatique.

Et pour les utilisateurs de zsh, zsh-autosuggestions sera très utile.

0 votes

Merci pour l'inclusion des suggestions automatiques zsh, c'est exactement ce que je cherchais.

0 votes

Enfin, je me tourne vers le shell Fish. Ça vaut vraiment la peine d'essayer!

0 votes

Est-ce que TOUS les scripts bash s'exécuteront parfaitement sur le shell Fish?

1voto

VirusC Points 1

Pour obtenir le comportement de recherche de l'historique avec les flèches haut/bas sur MacOS Monterey, j'ai dû mettre les bindings dans mon fichier .zshrc.

J'ai utilisé cette variante du comportement de recherche de l'historique :

bindkey "^[[A" history-beginning-search-backward
bindkey "^[[B" history-beginning-search-forward

Cela fera correspondre les chaînes de commandes exactement, même après qu'un espace soit tapé. Voir cette réponse pour plus de discussion.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X