2012-06-02 27 views
6

Bir bash komut dosyası çalıştırıyorum ve komut dosyasını çalıştırdıktan sonra komut satırını bir komutla önceden doldurmak istiyorum. Tek şart, komut dosyasının o anda çalışması olmamalıdır. Ben gerekenlerKomut satırı girdisi nasıl doldurulur

...

  1. komut

Hatta mümkün durduruldu SONRA

  • benim komut satırında metni önceden doldurulmuş olan komut dosyasını çalıştırmak için mi? Ne denedim Tüm

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

    Ama daha anlaşılır bir şey arıyorum kullanarak bir bash komut dosyası taklit etmektir.

  • cevap

    9

    TIOCSTI ioctl ürününü kullanmanız gerekir. Şu şekilde çalışır gösteren bir örnek C programı:

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

    bu derlemek ve ve "tarih" çalıştırın kabuk programı çıkar sonra okuyacak stdin girişi olarak tamponlu edilecektir. Bunu, giriş akışına herhangi bir şey ekleyebilmenizi ve bu komutun bash komut dosyanızda kullanabilmesini sağlayan bir komut haline getirebilirsiniz.