Existem várias variantes de um comando watch, algumas que geram um shell para interpretar uma linha de comando feita da concatenação dos argumentos passados para watch
(com caracteres de espaço no meio). Naqueles que você pode fazer:
watch 'ls | shuf'
o mesmo que:
watch ls '|' shuf
(os watch
são realmente executados: "/bin/sh", ["sh", "-c", "ls | shuf"]
e são bastante perigosos porque o segundo nível de interpretação pode abrir as portas para bugs e problemas de segurança quando não previstos, o relógio do processado pode evitar esse comportamento com o -x
opção).
E há aqueles que apenas executam o comando cujo nome é dado no primeiro argumento com todos os argumentos como argumentos. Nesses:
watch sh -c 'ls | shuf'