Pregunta:
Por lo general, uso la utilidad watch
Linux para ver la salida de un comando repetidamente cada n
segundos, como en watch df -h /some_volume/
.
Pero parece que no puedo usar el watch
con una serie de comandos canalizados como:
$ watch ls -ltr|tail -n 1
Si hago eso, watch
realmente está viendo ls -ltr
y la salida se pasa a tail -n 1
que no ls -ltr
nada.
Si intento esto:
$ watch (ls -ltr|tail -n 1)
yo obtengo
$ watch: syntax error near unexpected token `ls'
Y cualquiera de los siguientes falla por alguna razón u otra:
$ watch <(ls -ltr|tail -n 1)
$ watch < <(ls -ltr|tail -n 1)
$ watch $(ls -ltr|tail -n 1)
$ watch `ls -ltr|tail -n 1)`
Y finalmente si haces esto:
$ watch echo $(ls -ltr|tail -n 1)
No veo ningún cambio en la salida en el intervalo dado porque el comando dentro de $()
se ejecuta solo una vez y la cadena de salida resultante siempre se imprime ("observa") como un literal.
Entonces, ¿cómo hago para que el comando watch
funcione con una cadena de comandos entubada [además de ponerlos dentro de un script]?
Respuesta:
watch 'command | othertool | yet-another-tool'