web-dev-qa-db-fra.com

Comment trouver l'historique des commandes Shell depuis la création de la machine?

J'ai créé une machine virtuelle Ubuntu il y a quelques semaines et je travaille sur des projets par intermittence depuis.

Maintenant, j'aimerais trouver la syntaxe de certaines commandes que j'ai tapées dans le terminal il y a une semaine, mais j'ai ouvert et fermé la fenêtre du terminal et redémarré la machine de nombreuses fois.

Comment puis-je obtenir la commande history pour revenir à la première commande que j'ai tapée après avoir créé la machine?
Ou existe-t-il un autre endroit où toutes les commandes sont stockées dans Ubuntu?

23
Edward Tanguay

Il peut être possible ou non d'obtenir toutes les commandes. Cela dépend du nombre de commandes que vous avez exécutées et de la définition de la limite d’historique.

Cependant, vous pouvez voir la liste de l'historique sont stockés ici

/home/<YOUR_USERNAME>/.bash_history

Question connexe (pour gérer plusieurs antécédents de shell):

Est-il possible d'écrire immédiatement dans .bash_history?

26
Web-E

Par défaut, il n'y a pas d'endroit où toutes les commandes sont enregistrées et conservées indéfiniment, bien que ~/.bash_history contienne les dernières commandes (si vous utilisez bashname__, qui est le shell par défaut d'Ubuntu).

Si vous voulez chaque commande saisie dans bashenregistrée pour toujours, vous devez la configurer vous-même. Par exemple, vous pouvez insérer les éléments suivants dans votre fichier ~/.bashrc pour consigner toutes les commandes saisies dans un shell bash_ dans le fichier ~/.command_log:

# log every command typed and when
if [ -n "${BASH_VERSION}" ]; then
    trap "caller >/dev/null || \
printf '%s\\n' \"\$(date '+%Y-%m-%dT%H:%M:%S%z')\
 \$(tty) \${BASH_COMMAND}\" 2>/dev/null >>~/.command_log" DEBUG
fi

Ce qui précède définit une interruption sur DEBUGname__, qui est exécutée juste avant l'exécution d'une commande ordinaire. Le nom intégré callerest utilisé pour vérifier si la commande est en cours de saisie sur un shell interactif ou exécutée via quelque chose comme ~/.bashrc. La valeur ${BASH_COMMAND} contient la commande en cours d'exécution.

6
Richard Hansen

Vous pouvez également trouver un moyen d’intéresser votre historique de commandes précédent. Vous pouvez effectuer une recherche inverse dans votre historique sur la ligne de commande en appuyant sur Ctrl+r, puis en tapant les lettres que vous souhaitez faire correspondre. Si vous avez plusieurs commandes correspondantes, appuyez à nouveau sur Ctrl+r. Pour quitter la recherche inversée, appuyez sur Ctrl+g.

http://www.ice2o.com/bash_quick_ref.html

5
Sepero

Vous ne pouvez revenir en arrière que dans la mesure où votre limite d’historique est définie; une fois qu'il aura atteint ce point, l'historique commencera à être écrasé. Cependant, il est possible d'avoir une taille d'historique plus importante pour l'avenir. Mettez ceci dans votre .bashrc et spécifiez une valeur (la mienne est fixée à 1000):

export HISTSIZE=1000
4
user76204