A principal diferença é em qual shell os vários comandos são executados. Já que ssh
e wireshark
são processos externos, faz pouca diferença semanticamente qual deles você usa.
A diferença é mais relevante se um ou ambos os comandos forem de shell. Com mkfifo
, ambos os comandos são executados na instância atual do shell. Com um pipe, ambos os comandos são executados em subshells bifurcados do shell de chamada. Com a substituição do processo ( <(...)
), wireshark
é iniciado pelo shell atual, mas ssh
é iniciado em um subshell.
Isso pode afetar como as mudanças nas variáveis são tratadas. Considere:
-
x=0; echo foo | { x=1; cat; }; echo "$x"
produz um valor de 0 parax
. -
x=0; { x=1; cat; } < <(echo foo); echo "$x"
gera um valor de 1 parax
No seu caso, eu usaria o pipeline simples; não há necessidade de extensões não padrão, como substituição de processos.
ssh remote tcpdump -U -n -s0 <moreOpts> -w - | wireshark -k -i -