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.