Pour empêcher la journalisation des commandes "dangereuses" dans l'historique bash, j'ai ajouté la ligne suivante à mon .bashrc
fichier:
HISTIGNORE='rm *:mv *:cp *:cat*>*:pv*>*'
cela fonctionne bien, mais cela a un effet secondaire: je ne peux pas voir l'historique complet des commandes exécutées sur une machine. Disons que j'ai plusieurs machines pour les expériences, et je veux pouvoir voir toutes les commandes exécutées. J'utiliserais le bash internal history
pour afficher les commandes exécutées, et peut-être grep pour la date d'aujourd'hui:
history | grep Sep-28
Ce que j'aimerais avoir, c'est aussi enregistrer les commandes "dangereuses", mais mettre un #
au début de la ligne, de sorte que si j'exécute la commande à partir de l'historique par erreur, aucun dommage ne soit fait.
Je n'ai aucune idée si c'est possible.
Mise à jour et clarification:
La principale raison pour laquelle cela pose problème est que je suis généralement connecté à ma machine à partir de plusieurs terminaux, et toute commande exécutée sur un terminal est immédiatement lue dans l'historique des autres terminaux. Ceci est réalisé par
PROMPT_COMMAND="history -a; history -c; history -r"
Imaginons que j'ai deux terminaux ouverts. Dans l'un, j'ai un cat /dev/foo > file.out
processus en cours. Dans la seconde, je vérifie la progression avec ls -lAhF
. Je continue de répéter ls
en appuyant sur Upet ENTER(c'est-à-dire, la dernière commande de l'historique). Dès que la première commande se termine, la dernière commande de l'historique n'est plus ls
, mais cat /dev/foo > file.out
. Si je ne fais pas attention, je vais redémarrer cat et écraser file.out.
Ce que j'aimerais réaliser, c'est que la commande cat serait précédée d'un #
, afin qu'elle ne soit pas exécutée. Cependant, je le verrais toujours dans l'histoire et je peux le réutiliser (s'il s'agit d'une commande longue) en le décommentant.
watch ls -lAhF
ouwhile sleep 1; do ls -lAhf; done
; au lieu de regarder la taille du fichier, vous pouvez utiliserpv /dev/foo > file.out
( ivarch.com/programs/pv.shtml ).