2012-06-02 17 views
6

Sto eseguendo uno script di bash e vorrei eseguire il prefill di una riga di comando con un comando dopo l'esecuzione dello script. L'unica condizione è che lo script non debba essere in esecuzione in quel momento.Come precompilare l'input da riga di comando

Che cosa ho bisogno è quello di ...

  1. eseguire lo script
  2. hanno preriempita testo nella mia linea di comando dopo che lo script è stato arrestato

E 'anche possibile? Tutto quello che ho provato è simulare uno script bash usando

read -e -i "$comm" -p "[[email protected]$HOSTNAME $PWD]$ " input 
command $input 

Ma sto cercando qualcosa di più semplice.

risposta

9

È necessario utilizzare l'ioctl TIOCSTI. Ecco un esempio di programma C che mostra come funziona:

#include <sys/ioctl.h> 

main() 
{ 
    char buf[] = "date"; 
    int i; 
    for (i = 0; i < sizeof buf - 1; i++) 
     ioctl(0, TIOCSTI, &buf[i]); 
    return 0; 
} 

compilare questo ed eseguirlo e "data" da inserire come input su stdin, che la shell leggerà dopo l'uscita dal programma. È possibile eseguire il rollup in un comando che consente di inserire qualsiasi cosa nel flusso di input e utilizzare tale comando nel proprio script bash.

Problemi correlati