C'est quelque chose que je voulais savoir depuis très longtemps, mais jamais venu poser une question.
Je sais que dans le terminal fourni dans les distributions Linux, l'historique complet des commandes peut être vu en utilisant les touches fléchées (s'il existe une autre méthode, je n'en ai pas connaissance), alors comment cela se produit-il?
Y a-t-il un endroit où le terminal enregistre toutes les frappes? Est-ce une sorte de tampon? Mais, encore une fois, s'il s'agissait d'un tampon, il serait effacé après un certain temps, n'est-ce pas?
Comment fonctionne ce système?
command-line
gnome-terminal
Projjol
la source
la source
history
commande mais sur le fonctionnement de tout ce système de mémorisation des anciennes commandes.Réponses:
C'est l'historique des commandes et c'est une fonctionnalité du shell plutôt que du terminal.
Sur Ubuntu (et beaucoup, sinon la plupart des autres distributions Linux), le shell par défaut pour une utilisation interactive est Bash (
/bin/bash
). Bash conserve votre historique, c'est une liste des dernières commandes sur~/.bash_history
. Lorsque vous ouvrez un shell (généralement en ouvrant un terminal), ce fichier est lu et chargé dans l'historique interne de ce shell. Une fois que vous fermez le shell, les modifications sont réécrites dans le fichier. Par défaut, cela est limité aux 500 dernières commandes.Il y a quelques variables et options de shell qui peuvent changer le comportement de comment cela fonctionne exactement. Jetez un œil à la page de manuel bash (
man bash
) si vous voulez en savoir plus. Recherchez simplement HISTORIQUE (tapez/^HISTORY
et confirmez avec Enter, passez à la recherche suivante avec n)Il y a aussi beaucoup plus de méthodes pour faire le tour de l'histoire que juste Upet Down:
Par exemple, appuyez sur Ctrl+ Ret une partie d'une commande précédente, bash recherchera en arrière dans l'historique une commande correspondante, répétez en appuyant sur Ctrl+ Rsi la première correspondance n'est pas celle que vous recherchez. (Voir «Commandes de manipulation de l'historique» dans la page de manuel bash)
Copier
/etc/inputrc
vers~/.inputrc
et décommenter les lignes avechistory-search-forward
ethistory-search-backward
en eux. Si vous saisissez les premières lettres d'une commande et appuyez sur PgUp, bash n'affichera que les commandes de l'historique commençant par les mêmes lettres. (Ne fonctionne que dans les coquilles ouvertes après cette modification)Tapez
!!
au lieu d'une commande sur le shell, cela répétera la dernière commande (voir 'EXPANSION D'HISTORIQUE' dans la page de manuel bash pour plus d'informations à ce sujet).la source
unset HISTFILE
dans votre ~ / .bashrc. Ensuite, il ne gardera que l'historique en mémoire, l'effaçant pour chaque nouvelle invocation de shell.L'historique des commandes est généralement stocké par utilisateur dans le
.bash_history
fichier de votre répertoire personnel. Cela signifie que chaque utilisateur a son propre ensemble de commandes qu'il a exécutées.Lorsque plusieurs sessions de terminal sont ouvertes, elles peuvent afficher différentes commandes lorsque vous appuyez sur la touche fléchée, mais lorsque vous fermerez toutes les fenêtres de terminal, l'historique des différentes sessions de terminal sera fusionné dans un
~/.bash_history
fichier commun .la source