[BRLTTY] Appending NUL to cat

Michael Whapples mwhapples at aim.com
Mon Sep 28 15:26:42 EDT 2009


You are correct that you would put at the beginning of the script the line:
#!/bin/sh

Also how you said to start it is correct (in fact for running it in the 
way you describe that #!/bin/sh line wouldn't be needed).

An alternative would be to set the script to be executable, a command like:
chmod a+x your_file_name

will set the file you name in the place of your_file_name to be 
executable by all users. Then you can run it by simply giving the file 
name on the command line. However for this to work you MUST remember to 
include that #!/bin/sh line otherwise the system won't know what to run 
the script with. Also if you use this you can put the script in a 
directory pointed at by $PATH and you can run it using just the script's 
name (eg. if you called the script file "speak_lines" and placed it in a 
directory in $PATH (on my linux system /usr/local/bin would be a good 
choice) then it could be run just giving the speak_lines command).

Now for how this script behaves:
Precisely how you described you wanted things to work. Launch the script 
and the cursor is placed on a new line waiting for you to enter text. 
Enter text and press enter, it will append a NULL character to the text 
and send it to /dev/cu.usbserial-FTKVMAFF and hopefully the synth will 
talk. The cursor will have dropped down a line and be waiting for more 
text, keep entering lines of text until you get bored with it, at which 
point press ctrl+d on a blank line (ends file, tells the script no more 
text to read) or ctrl+c (not so preferred as this kills it) and in 
either case you will find yourself back at the shell prompt.

Michael Whapples
On 28/09/09 20:09, james collins wrote:
> Thanks for the responses. To make a script out of the lines you gave
> me, would I write in a text editor, first line:
> #!/bin/sh
> How would I invoke this script, like let's say I made a script, and
> called it samplescript.txt, if I was in the directory where it was
> located I would say:
> sh ./samplescript.txt
> what would happen next? In the script cat never gets called? Would my
> cursor drop down a line and I would enter text? And when I hit return
> a NUL character would be appended to the end of the text? And then if
> I hit cntrl-c it would exit cat?
>
> Sent from my iPhone
>
> On Sep 28, 2009, at 1:46 PM, Michael Whapples<mwhapples at aim.com>  wrote:
>
>    
>> You can do what you are asking for in three lines:
>>
>> while read myline ; do
>> echo -e -n "$myline\00">/dev/cu.usbserial-FTKVMAFF
>> done
>>      
> On my phone it is written as four lines?
>    
>> For convenience you may want to put those three lines in a text file
>> to
>> make a script.
>>
>> Michael Whapples
>> On 28/09/09 18:06, Dave Mielke wrote:
>>      
>>> [quoted lines by james collins on 2009/09/28 at 12:29 -0400]
>>>
>>>
>>>        
>>>> Just wondering what I am doing wrong? I want to use cat, but I
>>>> want to
>>>> append a NUL character to what I type? I tried typing:
>>>> echo -e -n '\000' | cat>   /dev/cu.usbserial -FTKVMAFF
>>>> What I was hoping would happen, is my cursor would drop down a line
>>>> and I would be in the cat command, I would then right some text and
>>>> when I hit return, a NUL character would be appended to the text I
>>>> had
>>>> written and my synthesizer would speak the words I had written?
>>>>
>>>>          
>>> I think you mustn't be very familiar with Unix-style operating
>>> systems.
>>>
>>> When you join two commands with |, what you're doing is redirecting
>>> the input
>>> of the second command (in your case, cat) away from your keyboard
>>> and to the
>>> output of the first command (in your case, echo).
>>>
>>> There's no magic way to do what you're wanting to do. If you want a
>>> NUL
>>> appended to each line you type before that line is written to your
>>> synthesizer
>>> then you're going to have to write a simple program to do exactly
>>> that. In this
>>> case, a fairly simple shell script should suffice.
>>>
>>>
>>>        
>> _______________________________________________
>> This message was sent via the BRLTTY mailing list.
>> To post a message, send an e-mail to: BRLTTY at mielke.cc
>> For general information, go to: http://mielke.cc/mailman/listinfo/brltty
>>      
> _______________________________________________
> This message was sent via the BRLTTY mailing list.
> To post a message, send an e-mail to: BRLTTY at mielke.cc
> For general information, go to: http://mielke.cc/mailman/listinfo/brltty
>    



More information about the BRLTTY mailing list