web-dev-qa-db-fra.com

Je voudrais créer un journal de toutes les commandes tapées dans le terminal

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?

5
Siedrix

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
6
João Pinto

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:

  • Les commandes commençant par un espace ne sont pas enregistrées dans .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.

6
Stefano Palazzo

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?

0
geirha

Vous pouvez aussi utiliser CTRL+R dans le terminal pour rechercher votre historique.

  1. CTRL+R
  2. entrez des termes de recherche (par exemple, tapez 'Sudo apt-get')
  3. presse CTRL+R parcourir chaque match
0
user244368

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é!

0
nargetdev