Je voudrais avoir un journal de toutes les commandes qui sont tapées sur le terminal.
J'ai vérifier "script" mais cela génère un fichier avec les commandes et le répond tout ensemble. Y at-il un moyen d'avoir les commandes seulement?
Si vous utilisez les shells defaullt, toutes les commandes sont déjà enregistrées dans $ HOME/.bash_history. Il y a plusieurs variables d'environnement qui affectent la conservation de l'historique, vous pouvez en savoir plus sur celles avec:
info bash
Type: / HIST
Si vous souhaitez appliquer le paramètre à tous les utilisateurs, modifiez/etc/profile.
Exemple:
export HISTFILESIZE=5000
Tout ce que l'utilisateur saisit manuellement dans le terminal est enregistré dans ~/.bash_history
, où ~
est un raccourci pour le répertoire de base de l'utilisateur actuellement connecté. Notez également que les fichiers commençant par .
sont masqués; dans Nautilus, vous pouvez leur montrer en tapant Ctrl+H.
Jetez un coup d'oeil en tapant
cat .bash_history
Pour afficher votre historique, annoté avec des numéros séquentiels, tapez
history
Vous pouvez exécuter les commandes que vous voyez à nouveau en tapant !2129
, par exemple, qui exécuterait le numéro de commande 2129, comme indiqué par la commande history
.
Notez que la commande history
vous indique les deuxièmes journaux au maximum. .bash_history
n'est alors sauvegardé que lorsque vous vous êtes déconnecté du terminal.
Petite information intéressante:
.bash_history
. Si vous exécutez une commande telle que rm -R mydir/
, vous voudrez peut-être la préfixer d'un espace pour éviter de l'exécuter à nouveau par inadvertance en appuyant sur la flèche dirigée vers le haut.Comme le dit João, la taille de l'historique sauvegardé peut être contrôlée avec export HISTFILESIZE=5000
.
Si vous voulez dire que vous voulez un journal de toutes les commandes que vous exécutez dans un shell interactif, voir BashFAQ 88 - Comment puis-je éviter de perdre des lignes de l'historique?
Vous pouvez aussi utiliser CTRL+R dans le terminal pour rechercher votre historique.
J'ai écrit une fonction pour cela:
function begin_install_log() {
if [ $# -eq 0 ]
then
echo "No arguments supplied"
HIST_NUM=""
else
HIST_NUM=$(history|tail -n 1|awk '{ print $1 }')
HIST_NUM=$((HIST_NUM + 2))
OUTPUT_FILE=$HOME/environment/ansible/.install_cache/${1}
fi
}
function capture_install_log() {
if [ ! $HIST_NUM ]
then
echo "run 'begin_install_log' first"
else
history|grep -A999 $HIST_NUM|awk '{$1=""; print $0}' >> $OUTPUT_FILE
HIST_NUM=""
fi
Usage:
$ begin_install_log some_file_name
$ blah
$ blah
$ blah
$ capture_install_log
Vous devrez bien sûr modifier la variable OUTPUT_FILE en fonction de vos besoins.
À votre santé!