3

I am trying to take the input from a serial port and write it to a file and also then read the file and send it back out the serial port to the host computer. A coworker suggested using the "tee" command but I can't find a good example/wrap my mind around the command. Is it possible to do this with "tee"? it seems that tee can only do one command, like cating a file to a different place, but not cating the port then writing to the document then reading the document and then sending it over the port. Or am i just not understanding the basics of the "tee" command.

3
  • 2
    tee can take multiple output file arguments, which in this case would be the output file and the serial port. Commented Jul 16, 2012 at 20:41
  • Oh awesome. Thanks for the clarification! Commented Jul 16, 2012 at 20:48
  • Related, but overkill here: How can I send stdout to multiple commands? Commented Jul 19, 2012 at 22:37

1 Answer 1

1

The tee command writes the input to standard output as well as to a file at the same time. A quick example would be

$ echo "Hi there..."|tee -a hi.txt
Hi there....
$cat hi.txt
Hi there....

In the above, example it presents the text in STDOUT and writes it to hi.txt. Another example could be

$cat hi.txt|tee -a final.txt
Hi there.....
$cat final.txt
Hi there....

So considering bash shell, your example could be-

$cat ./serial-port|tee -a <filename>

So if serial-port is 20002 then the above command would look like

$cat $serial-port|tee -a serial.txt
20002
$cat serial.txt
20002
5
  • And to pipe write it back to another serialport you would cat ./serial-port | tee -a localcopy.txt | ./outgoing-serial-port ... I think the OP wants to do that. Commented Jul 16, 2012 at 21:55
  • Yeah that is pretty much exactly what I want to achieve. Thanks! Commented Jul 16, 2012 at 22:01
  • When I run the command it says that ttyUSB0 directory doesn't exist. Did I do something wrong? cat ./ttyUSB0 | tee -a local.txt | ./ttyUSB0 Commented Jul 16, 2012 at 22:08
  • i think you want to do something like cat ./ttyUSB0 | tee -a local.txt > ./ttyUSB0 Commented Jul 16, 2012 at 23:33
  • 2
    Just to be clear... pipe sends the output of one command to another command in this case cat ./ttyUSB0 | tee -a local.txt | ./ttyUSB0 ./ttyUSB0 is not a command, rather maybe a file (or port). So in order to write the output back to the file (or port) u have to use > redirect operator Commented Jul 16, 2012 at 23:36

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.