Existe-t-il un moyen de sauvegarder toutes les commandes de terminal que j'ai tapées et de les afficher comme un historique dans un journal de bord ?
Réponses
Trop de publicités?Cela se fait automatiquement. Bash stocke vos commandes dans ~/.bash_history
. Si vous voulez jeter un coup d'œil à l'historique, vous pouvez imprimer la sortie de ce fichier en utilisant l'une des méthodes suivantes
cat ~/.bash_history
less ~/.bash_history
...any other pager or output command...
Ou vous pouvez utiliser la commande intégrée de bash :
history
Pour effacer l'historique, supprimez le fichier et effacez l'historique temporaire :
rm ~/.bash_history && history -c
La taille de l'historique est de 500 commandes par défaut. Vous pouvez cependant augmenter cette taille en ajoutant une ligne à votre fichier ~/.bashrc
pour définir le HISTSIZE
variable :
HISTSIZE=<number of entries, -1 for unlimited>
Cela ne prendra pas effet immédiatement, mais seulement pour les sessions nouvellement lancées. Pour l'appliquer, il suffit de re-sourcer le .bashrc
fichier :
. ~/.bashrc
ou courir HISTSIZE=...
dans votre session actuelle.
Vous pouvez taper history
sur un terminal pour visualiser toutes les commandes exécutées précédemment.
Vous pouvez tronquer la sortie à quelques lignes (où 5 est le nombre de lignes) :
history 5
Si vous souhaitez afficher uniquement les commandes contenant une chaîne de caractères (c.-à-d. mv
), vous pouvez faire ceci :
history | grep mv
Vous pouvez rappeler une commande en tapant !
suivi du numéro de l'entrée.
Disons que j'ai une histoire comme celle-ci :
1 ls -la
2 mkdir foo
3 mv bar.txt foo
- Pour exécuter
mkdir foo
vous pouvez taper!2
. - Pour exécuter la dernière commande, vous pouvez utiliser
!-1
o!!
- Pour exécuter l'avant-dernier, vous pouvez utiliser
!-2
Si vous exécutez une commande qui échoue parce qu'elle a besoin des privilèges de l'utilisateur root (c.-à-d. touch /etc/foo
), vous pouvez utiliser sudo !!
pour exécuter la dernière commande en tant que root.
- Si vous tapez
!man
vous exécuterez la dernière commande qui commence parman
- Si vous tapez
!?man?
il exécutera la dernière commande qui contientman
(pas nécessairement au début de la ligne)
Si vous avez une erreur de frappe dans une commande, vous pouvez la corriger de cette façon. Disons que je tape cat .bash_hi
pour remplacer .bash_hi
par .bash_history
Je dois seulement taper ^hi^history^
.
Souvent, je veux juste ces commandes récentes, aussi. Pour les poster dans mes notes de développement ou sur des sites d'échange de fichiers comme celui-ci... Cela s'est avéré très utile, en supprimant les numéros de ligne non pertinents :
history | cut -c 8- | tail
ou, si vous l'aimez en tant qu'alias, les numéros de ligne sont supprimés, et l'indentation est immédiate (comme pour le markdown des citations de code)
alias lastones="history | tail | sed -e 's/^ [0-9]\{1,5\} / /gi'"
Vous pouvez essayer https://github.com/dvorka/hstr qui permet à de simples navigation sur Le système de navigation et le filtrage de l'historique de vos activités par le biais d'une boîte à suggestions :
Il peut être facilement lié a Ctrl-r y/o Ctrl-s