bash – Cómo usar el comando watch con una cadena de comandos / programas canalizados

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'

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım