1 votes

Comment ajouter des commandes réussies à un fichier en utilisant bash Shell ?

Il y a peut-être un moyen plus simple de faire cela, mais je vais exécuter un certain nombre de commandes sur une boîte. Je veux garder la trace de celles qui ont réussi pour pouvoir en faire un script afin d'automatiser cela dans le futur.

J'ai essayé

<command> && echo "!!" >> file

mais le !! imprime la ligne qui précède celle-ci. J'ai essayé quelques autres choses mais je n'arrive pas à faire fonctionner quelque chose

3voto

aktivb Points 146

Vous pouvez procéder de la manière suivante :

PROMPT_COMMAND='[[ $? == 0 ]] && history 1 | sed -r "s/\ +[0-9]+\ +//" >> successful'

$PROMPT_COMMAND contient une commande que bash exécute avant d'afficher une invite. Cela permet donc d'évaluer le statut de sortie de la commande précédent commande ( après vous appuyez sur la touche "Entrée" pour exécuter la commande en cours, mais antes de bash l'évalue), et s'il a réussi, l'extrait de votre historique bash, supprime le numéro de commande, et l'ajoute dans un fichier séparé.

Désormais, vous n'avez plus besoin d'ajouter quoi que ce soit à vos commandes :

echo "exits successfully and will be appended"
ehco "only ends up in bash history"

Notez que la commande readline history, ! ! et le reste de sa famille, ne fonctionne que dans les shells interactifs, vous ne pouvez pas les utiliser dans les scripts.

Notez également que l'option -r est gnu sed, bsd sed ne l'a pas.

1voto

jowi Points 111

J'utiliserais un deuxième Shell et strace. Dans Shell 1, utilisez echo $$ pour trouver le PID de votre Shell. Utilisez ensuite strace -f -q -eexecve,exit_group -p that_pid_here pour suivre les commandes et les états de sortie. La sortie résultante peut ensuite être transformée en un script shell.

0voto

BluesRhythm Points 188

Cela suffira - noter qu'il s'agit de ' au lieu de "

<command> && echo '!!' >> file

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