Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I've recently been trying to write a script that can be used to automate my c++ program in bash. If you know AutoIt, I can simply show you an example of what I am trying to do:

send("1{enter}")

or

send("!a")

OK For those who do not speak AutoIt:

The first example sends a simulated "1" keystroke followed by an enter(CR)

The second example sends alt-a

I'm specifically trying to do this in bash. No other scripting language will do

Also, I would not prefer a spoonfeed. Please specify how to write it. No writing the script for me is allowed.

share|improve this question
    
Are you automating a command-line, ncurses, or graphical program? –  grawity Apr 20 '13 at 16:02
    
I'm automating a command line for now. It is supposed to feed input into cin's(console inputs) automatically –  Ishan Apr 20 '13 at 16:09

2 Answers 2

up vote 1 down vote accepted

To feed text into a program's stdin, use pipes and/or redirection:

echo 1 | myprogram

(echo "First line"
 echo "Second line") | myprogram

myprogram <<EOF
First line
Second line
EOF
share|improve this answer
    
Both of the answers are equally good. But, this is what I weas more looking for. –  Ishan Apr 21 '13 at 4:57

You're looking for xdotool.

xdotool's equivalent of your example commands are:

xdotool key 1 Return
xdotool keydown Alt key a keyup Alt
share|improve this answer
    
this is good. but I was thinking about some pure bash code –  Ishan Apr 20 '13 at 16:32
1  
@Ishan: It's practically impossible to do such things with pure bash code. Bash cannot use X11 directly, and it cannot use any existing X11 library either. You would have to connect to the X11 socket directly (bash only does TCP, not Unix sockets), parse the X11 protocol by hand (parsing binary data in bash is destined to fail) and craft the apropriate responses. bash is a shell, it is designed to work by chaining external tools. –  grawity Apr 20 '13 at 16:38

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.