2012-06-02 17 views
6

प्रीफ़िल कैसे करें मैं एक बैश स्क्रिप्ट चला रहा हूं और मैं स्क्रिप्ट निष्पादित करने के बाद कुछ कमांड के साथ कमांड लाइन को प्रीफ़िल करना चाहता हूं। एकमात्र शर्त यह है कि उस समय स्क्रिप्ट नहीं चलनी चाहिए।कमांड लाइन इनपुट

मैं क्या जरूरत के लिए ...

  1. स्क्रिप्ट
  2. मेरे आदेश पंक्ति में पाठ पहले से भरे हुए है के बाद स्क्रिप्ट

यह भी संभव है रोक दिया गया है चलाने है? मैंने जो भी कोशिश की है वह

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

का उपयोग करके एक बैश स्क्रिप्ट अनुकरण करना है, लेकिन मैं कुछ और सरल खोज रहा हूं।

उत्तर

9

आपको TIOCSTI ioctl का उपयोग करने की आवश्यकता है। यहाँ एक उदाहरण सी कार्यक्रम से पता चलता है कि यह कैसे काम करता है:

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

इस संकलित करें और इसे और "तिथि" चलाने stdin पर इनपुट, जो आपके खोल कार्यक्रम बाहर निकलता है के बाद पढ़ा जाएगा के रूप में बफ़र कर दिया जाएगा। आप इसे एक कमांड में रोल कर सकते हैं जो आपको इनपुट स्ट्रीम में कुछ भी सामान देता है और उस बैकअप स्क्रिप्ट में उस कमांड का उपयोग करता है।