Ese mensaje se emite en stderr como todos los mensajes de advertencia y error.
Puede descartar toda la salida de error:
tail -f file 2> /dev/null
O para filtrar solo los mensajes de error que contienen truncate
:
{ tail -f file 2>&1 >&3 3>&- | grep -v truncated >&2 3>&-;} 3>&1
Sin embargo, eso significa que pierde el estado de salida de tail
. Algunos shells tienen una pipefail
opción (habilitada con set -o pipefail
) para que la tubería informe el estado de salida de tail
si falla.zsh
y bash
también puede informar el estado de componentes individuales de la tubería en su $pipestatus
/ $PIPESTATUS
matriz.
Con zsh
o bash
, puedes usar:
tail -f file 2> >(grep -v truncated >&2)
Pero tenga en cuenta que el grep
comando no se espera, por lo que los mensajes de error, si los hay, pueden aparecer después de las tail
salidas y el shell ya ha comenzado a ejecutar el siguiente comando en el script.
En zsh
, puede abordar eso escribiéndolo:
{ tail -f file; } 2> >(grep -v truncated >&2)
Eso se discute en la zsh
documentación eninfo zsh 'Process Substitution'
:
Hay un problema adicional con >(PROCESS)
; cuando se adjunta a un comando externo, el shell principal no espera a que finalice el PROCESO y, por lo tanto, un comando inmediatamente posterior no puede confiar en que los resultados se completen. El problema y la solución son los mismos que se describen en la sección MULTIOS en la nota Redirección :: . Por lo tanto, en una versión simplificada del ejemplo anterior:
paste <(cut -f1 FILE1) <(cut -f3 FILE2) > >(PROCESS)
(tenga en cuenta que no hay MULTIOS involucrados), PROCESS se ejecutará de forma asíncrona en lo que respecta al shell padre. La solución es:
{ paste <(cut -f1 FILE1) <(cut -f3 FILE2) } > >(PROCESS)
Los procesos adicionales aquí se generan desde el shell principal que esperará su finalización.
(
)
en lugar de un comando complejo{
}
?Si
grep
no se deshace de la salida, lo más probable es que se imprima en un error estándar. La forma más sencilla de deshacerse de eso es simplemente volcarlo:fuente
Quizás ayude si se puede arreglar el origen de este error. Sucedió porque algo escribir en el archivo con sobrescribir ">" no con agregar ">>".
fuente