sólo puedo responder por la parte Exec:
ejecutivo sin una orden dada puede usarse para cambiar las redirecciones de E/S. <> en este caso significa abierto para lectura + escritura. 5 es el número de canal (o el descriptor de archivo). Esto tiene sentido si otros comandos envían su salida/leen su entrada del canal 5.
Para "/ dev/tcp/$ {SERVER}/$ {PORT}" No sé si es una característica de un específico Versión de Linux o si es una función de bash (supongo que el último).
- EDIT: desde la página de manual de bash: -
Bash handles several filenames specially when they are used
in redirections, as described in the following table:
/dev/fd/fd
If fd is a valid integer, file descriptor fd is
duplicated.
/dev/stdin
File descriptor 0 is duplicated.
/dev/stdout
File descriptor 1 is duplicated.
/dev/stderr
File descriptor 2 is duplicated.
/dev/tcp/host/port
If host is a valid hostname or Internet address,
and port is an integer port number or service
name, bash attempts to open a TCP connection to
the corresponding socket.
/dev/udp/host/port
If host is a valid hostname or Internet address,
and port is an integer port number or service
name, bash attempts to open a UDP connection to
the corresponding socket.
Hay una advertencia importante en esta respuesta.Bash solo cumplirá con "/ dev/tcp" * si * la compatibilidad está habilitada cuando bash se genera. En particular, Red Hat construye bash con él habilitado, mientras que Debian no (o al menos no lo hicieron la última vez que lo verifiqué, que fue hace años). No esperes que esto funcione en todas las conchas, ni en todo. –
@WilliamPursell ¡De acuerdo! – trojanfoe