Acontece que o comando que você está executando em nohup nunca grava em stdout ou stderr e que você não está enviando nenhuma entrada para ele. Mas nohup não tem como saber disso, então ele diz que qualquer entrada seria descartada e qualquer saída seria gravada em nohup.out .
Para evitar isso, redirecione stdin, stdout e stderr de nohup para /dev/null .
ssh -t esolve@hostname 'sudo nohup bash -c "ls > log 2>&1 &" </dev/null >/dev/null 2>/dev/null'
Quanto a |& , do manual do bash :
The format for a pipeline is
[time [-p]] [!] command1 [ [| or |&] command2 …]The output of each command in the pipeline is connected via a pipe to the input of the next command. That is, each command reads the previous command’s output. This connection is performed before any redirections specified by the command.
If
|&is used, the standard error ofcommand1is connected tocommand2’s standard input through the pipe; it is shorthand for2>&1 |.
Esta é uma extensão do bash, também presente no zsh.