2017-06-28 6 views
0

J'essaye de récupérer par programme l'historique d'un terminal bash à partir d'un processus enfant (allez exécutable). Je cherche essentiellement les dernières N commandes que le terminal a lancées.Est-il possible d'aller chercher la dernière commande exécutée dans un terminal parent?

Débit:

  1. terminal bash ouvert PID = 5
  2. exécuter quelques commandes (sed, rpm, gpg)
  3. course aller exécutable PID = 32 PPID = 5
  4. d'extraction des commandes et paramètres (sed, rpm, gpg) à partir du processus parent (terminal bash) et les imprimer

Le bash intégré history ne donne pas de sultes lorsqu'il est exécuté sous go/shell out.

La lecture ~/.bash_history n'est pas précise car l'historique d'un terminal bash est écrit lorsque l'invite est fermée.

Vous vous demandez si c'est possible du tout?

+0

ce lien peut aider https://unix.stackexchange.com/questions/147563/how-do-i-repeat-the-last-command-without-using-the-arrow-keys – amrit

+0

régler 'PROMPT_COMMAND = ' export last_command = "!!" '', puis utilisez la variable d'environnement' last_command'. NOTE: Je ne sais pas si c'est un mécanisme sûr, w.r.t. shell injection ... – anishsane

Répondre

1

Comme suggéré here vous pouvez enregistrer les nouvelles commandes dans un fichier avec history -a <file_path>, puis dans le processus enfant, vous pouvez lire les dernières lignes N du fichier (avec tail -n <N>).

+0

Terminé en utilisant cette réponse et en l'utilisant dans bashrc. – rvk