Historique des commandes exécutées dans le terminal

38

Existe-t-il un moyen de sauvegarder toutes les commandes de terminal saisies et de l’afficher comme un historique dans un journal?

    
posée rgr 17.05.2015 - 14:35
la source

4 réponses

54

Ceci est fait automatiquement. Bash stocke vos commandes dans ~/.bash_history . Si vous souhaitez consulter l'historique, imprimez la sortie de ce fichier en utilisant l'un des

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 500 par défaut. Vous pouvez cependant augmenter cette valeur en ajoutant la ligne suivante à votre ~./bashrc :

HISTSIZE=<number of entries, -1 for unlimited>

Cela ne prendra pas effet immédiatement, mais uniquement pour les sessions nouvellement démarrées. Pour appliquer cela, ressourcez le fichier .bashrc:

. ~/.bashrc

ou exécutez HISTSIZE=... dans votre session en cours.

    
réponse donnée s3lph 17.05.2015 - 14:40
la source
23

Vous pouvez taper history sur un terminal pour voir toutes les commandes précédemment exécutées.

Vous pouvez tronquer la sortie sur certaines lignes (où 5 est le nombre de lignes):

history 5

Si vous souhaitez afficher uniquement les commandes contenant une chaîne (c.-à-d. mv ), vous pouvez le faire:

history | grep mv

Vous pouvez rappeler une commande en tapant ! suivi du numéro d’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 ou !!
  • Pour lancer l'avant-dernière étape, vous pouvez utiliser !-2

Si vous exécutez une commande qui échoue car elle nécessite des privilèges 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 commençant par man
  • Si vous tapez !?man? , il exécutera la dernière commande contenant man (pas nécessairement au début de la ligne)

Si vous avez une faute 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 Il me suffit de taper ^hi^history^ .

Source: lien

    
réponse donnée Helio 17.05.2015 - 14:37
la source
6

Tapez simplement:

history > print.txt

Un nouveau fichier appelé print.txt sera créé dans votre répertoire de travail en cours.

    
réponse donnée Bilal 17.05.2015 - 15:07
la source
3

Je ne veux souvent que ces commandes récentes. Pour publier sur mes notes de développement ou, bien, sur des sites stackexchange comme ceux-ci ... Cela s'est avéré très utile, supprimant les numéros de ligne non pertinents:

history | cut -c 8- | tail

ou, si vous l’aimez comme un alias, les numéros de lignes sont supprimés et mis en retrait immédiatement (comme cela est nécessaire pour le marquage des codes)

alias lastones="history | tail | sed -e 's/^ [0-9]\{1,5\}  /    /gi'"
    
réponse donnée Frank Nocke 28.10.2016 - 06:14
la source

Lire d'autres questions sur les étiquettes