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.
1 Answer
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
-
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– Bananguin2012-07-16 21:55:50 +00:00Commented Jul 16, 2012 at 21:55 -
Yeah that is pretty much exactly what I want to achieve. Thanks!Julien– Julien2012-07-16 22:01:39 +00:00Commented 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 | ./ttyUSB0Julien– Julien2012-07-16 22:08:58 +00:00Commented Jul 16, 2012 at 22:08
-
i think you want to do something like
cat ./ttyUSB0 | tee -a local.txt > ./ttyUSB0Anjan Biswas– Anjan Biswas2012-07-16 23:33:06 +00:00Commented Jul 16, 2012 at 23:33 -
2Just 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 operatorAnjan Biswas– Anjan Biswas2012-07-16 23:36:52 +00:00Commented Jul 16, 2012 at 23:36
teecan take multiple output file arguments, which in this case would be the output file and the serial port.