2012-06-02 17 views
6

Estoy ejecutando un script bash y me gustaría rellenar una línea de comando con algún comando después de ejecutar el script. La única condición es que la secuencia de comandos no se debe ejecutar en ese momento.Cómo rellenar la entrada de línea de comando

Lo que necesito es ...

  1. ejecute el script
  2. han llenado previamente texto en mi línea de comando después de la secuencia de comandos se ha detenido

¿Es posible? Todo lo que probé es simular un script bash usando

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

Pero estoy buscando algo más sencillo.

Respuesta

9

Necesita utilizar el ioctl TIOCSTI. He aquí un ejemplo de programa C que muestra cómo funciona:

#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; 
} 

compilar este y ejecutarlo y "fecha" estará búfer como entrada en la entrada estándar, que leerá su cáscara después de salir del programa. Puedes enrollar esto en un comando que te permite meter algo en la secuencia de entrada y usar ese comando en tu secuencia de comandos bash.

Cuestiones relacionadas