6 votes

Comment puis-je enregistrer de manière unique chaque nouvelle commande que j'utilise, et éventuellement l'horodater ?

Je suis sous Linux depuis plus de 6 mois maintenant mais je ne me suis jamais trop penché sur le CLI (command-line interface ou terminal ou Shell).

Maintenant, lorsque je pose des questions ici, que j'obtiens des réponses ou de l'aide sur d'autres sites, j'apprends de nouvelles commandes...

Comment puis-je enregistrer chaque nouvelle commande dans un fichier texte ? Seulement nouveau / unique les commandes, et non les répétitions de la même commande.

Voici un exemple :

  1. Dans le terminal, j'entre les commandes comme suit

    $ command1 $ command2 $ command3 $ command4 $ command1

  2. Ces commandes doivent être sauvegardées dans un fichier texte intitulé commandrec comme ceci

    command1 command2 command3 command4

NOTE : La dernière commande dans le terminal qui était à nouveau command1 n'est pas réenregistrée dans le fichier texte.

La fois suivante, j'ouvre le terminal et j'entre une nouvelle commande command 5 il devrait être ajouté à la liste de la rubrique commandrec

(mais si la commande a été utilisée plus tôt à une autre date, elle doit être ignorée. Par exemple, command 1 a de nouveau été inscrite, de même que command 5 à un nouveau jour/heure mais command1 non enregistré car déjà utilisé)

  1. のことです。 commandrec ressemblera à quelque chose comme ceci

    31/05/12 12:00:00 command1 command2 command3 command4 01/06/12 13:00:00 command 5

(l'heure et la date seraient super si c'était possible, mais ça va même si ce n'est pas le cas)

De cette façon, je peux avoir un enregistrement de toutes les commandes que j'ai utilisées jusqu'à présent.

Comment procéder ?

6voto

ish Points 134738

Comment expérimenter avec succès la modification de ces paramètres dans .bashrc

  • Avant d'expérimenter : Sauvegarde de la situation actuelle .bash_history vers un autre fichier avec cp .

  • Lors de l'expérimentation avec ce qui fonctionne : rm ~/.bash_history après avoir modifié .bashrc avec des paramètres de contrôle de l'historique, sinon la combinaison d'anciennes et de nouvelles entrées peut donner des résultats bizarres.

    • Par exemple, toutes les entrées antérieures à l'activation de l'horodatage afficheront la même date/heure actuelle !
  • Une fois que vous avez trouvé quelque chose qui fonctionne NE PAS rm plus !!!

  • Il convient également de noter que toute modification apportée aux .bashrc ne sont prises en compte que lorsque vous quittez et instanciez un nouveau terminal/Shell.

Augmenter la taille de l'historique et éliminer les doublons

  • Ajoutez ces lignes à votre ~/.bashrc :

    export HISTCONTROL=erasedups
    export HISTSIZE=10000
  • La taille de l'historique est fixée à 10000, les doublons sont automatiquement éliminés, il y a donc beaucoup d'espace :)

Horodatage

  • L'heure peut être réglée facilement en ajoutant une autre ligne de la forme export HISTTIMEFORMAT="%F %T" L'heure et la date s'afficheront avant chaque ligne lors de l'utilisation de l'option history

    • Exemple : izx@preciseunity:~$ history 1 2012-06-01 07:16:22 rm ~/.bash_history 2 2012-06-01 07:16:23 exit 3 2012-06-01 07:16:27 ls 4 2012-06-01 07:16:31 test 5 2012-06-01 07:16:34 ls /etc 6 2012-06-01 07:16:36 down 7 2012-06-01 07:16:37 up 8 2012-06-01 07:16:40 hustory 9 2012-06-01 07:16:48 history

    • Il est à noter qu'en raison de l'élimination des doublons, le temps indiqué pour une commande est le le plus récent l'heure (la plus récente) à laquelle il a été exécuté pour la dernière fois.

    • Vous pouvez personnaliser les HISTTIMEFORMAT à votre choix/local en fonction de strftime

3voto

Jakob Points 9951

Votre objectif est d'apprendre de nouvelles commandes ? Je recommande d'utiliser Compagnon CLI :

CLI Companion est un outil permettant de stocker et d'exécuter des commandes de terminal à partir d'une interface graphique. Les personnes qui ne sont pas familiarisées avec le terminal trouveront dans CLI Companion un moyen utile de se familiariser avec le terminal et d'en exploiter tout le potentiel. Les utilisateurs expérimentés peuvent utiliser CLI Companion pour stocker leur longue liste de commandes dans une liste consultable.

enter image description here

Vous l'obtenez en courant :

sudo add-apt-repository ppa:clicompanion-devs/clicompanion-nightlies
sudo apt-get update
sudo apt-get install clicompanion

Si vous ne voulez pas ajouter le PPA, essayez ce dossier pour 12.04 (dernière version 1.1-6, publiée le 2012-04-14 - vérifier cette page pour les versions plus récentes). - ou supprimer le PPA après l'installation avec sudo add-apt-repository -r ppa:clicompanion-devs/clicompanion-nightlies .


PS : J'ai trouvé cette question ce qui pourrait également être utile.

1voto

Chan-Ho Suh Points 7524

En suivant la suggestion de Dirk de passer par .bash_history et la suggestion de Chris d'utiliser le sort ce que vous voulez probablement faire est :

cat ~/.bash_history | sed 's/sudo //g' | sort -u +0 -0 | cut -d\  -f1 > commandrec.txt

La deuxième commande du pipeline supprimera les occurrences de "sudo", de sorte que lorsque vous trierez, vous trierez les commandes que vous ne pouvez taper qu'après avoir invoqué la commande sudo .

L'historique de Bash ne garde pas trace de la date et de l'heure à laquelle la commande a été utilisée, mais vous pouvez écrire un script qui sera invoqué lorsque vous quitterez le terminal. Le script appellerait la commande ci-dessus (mais la sauvegarderait dans commandrec-$DATE.txt où vous auriez quelque chose comme DATE = `date "+%Y-%m-%dT%H:%M:%S"`). Ensuite, vous pouvez différencier avec .bash-history et ne conserver que les nouvelles commandes dans commandrec-$DATE.txt. Vous auriez donc une collection de ces fichiers commandrec datés. En fait, puisque .bash_history est limité (je pense que la valeur par défaut sur mon système est de 500), vous devriez probablement différer avec le fichier que vous obtenez par cat -ing tous vos fichiers commandrec*.txt et .bash_history .

Ensuite, lorsque vous souhaitez consulter toutes vos commandes à ce jour, vous pouvez enregistrer tous vos fichiers dans un fichier.

1voto

Zombo Points 1663

L'horodatage est facile. Pour ce faire, il suffit d'ajouter la ligne suivante à ~/.profile ou similaires :

HISTTIMEFORMAT='%x %r '

Il est difficile d'enregistrer chaque nouvelle commande de manière unique. Il faut d'abord ajouter à ~/.profile ou similaire :

HISTCONTROL=erasedups
PROMPT_COMMAND='history -w'

Vous devez ensuite ajouter à ~/.bash_logout :

history -a
history -w

0voto

Dans votre répertoire personnel, vérifiez le .bash_history il enregistre toutes les commandes que vous saisissez

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X