Lorsque j'exécute mes analyses à l'aide du shell bash, je veux souvent enregistrer les commandes que j'ai utilisées qui m'ont donné de bons résultats dans un fichier du même répertoire (mon "LOGBOOK", comme on l'appelle) pour pouvoir vérifier ce que Je l'ai fait pour obtenir ces résultats. Jusqu'à présent, cela m'a signifié de copier la commande à partir du terminal ou d'appuyer sur "up" pour modifier la commande en une echo"my command" >> LOGBOOK
ou d'autres pitreries similaires.
J'ai trouvé qu'il y avait un history
outil l'autre jour, mais je ne peux pas trouver un moyen de l'utiliser pour obtenir la commande précédemment exécutée afin que je puisse faire quelque chose comme getlast >> LOGBOOK
.
Existe-t-il un moyen facile et facile de le faire. Sinon, comment les autres gèrent-ils l'enregistrement des commandes pour les résultats qu'ils ont?
la source
fc -lnr | head -n 1
peut être abrégé enfc -lnr -1
.help fc
pour ma documentation. La page de manuel bash contient plus de détails, y compris cette utilisation d'indices négatifs. L'éliminationhead
est bonne car la seule commande restante est intégrée, il n'y a donc plus de fork / exec.fc
...Un problème avec la réponse de @ camh est que si vous avez une commande qui s'étend sur plusieurs lignes, elle n'affiche que la première ligne:
Essaye ça:
la source
cmdhist
corrigera cela: "S'il est défini, bash tente d'enregistrer toutes les lignes d'une commande sur plusieurs lignes dans la même entrée d'historique. Cela permet de rééditer facilement les commandes sur plusieurs lignes."Au lieu d'utiliser la flèche vers le haut, vous pouvez utiliser
"!!"
pour vous référer à la commande précédente.par exemple
note: cela ne cite pas le texte littéral
la source
ls | less
->echo !! >> LOGBOOK
->echo ls | less >> LOGBOOK
.Vous pouvez le faire avec la commande suivante si vous utilisez le shell bash:
Cela ajoutera toutes vos commandes de la session en cours à ce fichier, vous pouvez également ajouter un alias sur votre fichier ~ / .bashrc pour le faire avec une seule commande:
la source