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.

Julien
  • 31

1 Answers1

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
Ulrich Dangel
  • 25,369
Anjan Biswas
  • 216
  • 1
  • 3
  • 10
  • 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. – Bananguin Jul 16 '12 at 21:55
  • Yeah that is pretty much exactly what I want to achieve. Thanks! – Julien Jul 16 '12 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 – Julien Jul 16 '12 at 22:08
  • i think you want to do something like cat ./ttyUSB0 | tee -a local.txt > ./ttyUSB0 – Anjan Biswas Jul 16 '12 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 – Anjan Biswas Jul 16 '12 at 23:36