I am trying to understand a codebase where I see a line like below:
socat /tmp/haproxy - <<< "show servers state" > /var/state/haproxy/global
What is socat doing here? What does <<<
mean?
I am trying to understand a codebase where I see a line like below:
socat /tmp/haproxy - <<< "show servers state" > /var/state/haproxy/global
What is socat doing here? What does <<<
mean?
The socat
command creates a bidirectional pipe between the file /tmp/haproxy
and stdin
which is expressed by passing -
to socat
.
In fact it appends stdin to /tmp/haproxy
and writes the resulting output to /var/state/haproxy/global
<<<
is a bash feature, a so called here string. It passes the string "show server state" as stdin to socat
.
A posix shell version would be:
echo "show servers state" | socat /tmp/haproxy - > /var/state/haproxy/global
<<<
is a bashism to put a string on stdin
The man
pages of the socat
command and bash
may help (Note that <<<
is a bash feature)
Try:
man socat
man bash
# Type the following when the bash man page is open
# it will point you right to the explanation of <<<
/<<<