0 votos

Interacción entre `od -xc` y el cambio de color de los terminales

Si hago una lista de las etiquetas ID3 de un archivo MP3 con ojoD3 El nombre/ruta completa del archivo se muestra en verde, y el tamaño del archivo se sitúa en el borde derecho de la ventana del Terminal.  Antes y después, una línea de guiones también va a todo lo ancho. Pero si canalizo la salida a través de od -xc La línea de guiones es mucho más corta, las secuencias de escape no se muestran, tres puntos sustituyen gran parte de la ruta/nombre y no hay espacio entre el nombre del archivo y el tamaño.  Ejemplo de ello.

¿Es un error? Si es así, ¿en qué herramienta está el error? (I sospechoso no es posible que eyeD3 detecte la tubería y cambie de comportamiento).

0000540      676e    0a5d    614c    676e    6175    6567    2d0a    2d2d
           n   g   ]  \n   L   a   n   g   u   a   g   e  \n   -   -   -
0000560      2d2d    2d2d    2d2d    2d2d    2d2d    2d2d    2d2d    2d2d
           -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0000600      2d2d    2d2d    2d2d    2e0a    2e2e    6f72    206c    7542
           -   -   -   -   -   -  \n   .   .   .   r   o   l       B   u

3voto

Jose Chavez Puntos 645

No, no es un error, es un comportamiento previsto.

Tu sospecha es incorrecta - realmente es posible que eyeD3 detecte la tubería - y eso es lo que hace.

Si se mira el código fuente para eyeD3 en el archivo eyeD3/console.py Aproximadamente la línea 75 - verá lo siguiente:

def _term_supports_color():
        if (os.environ.get("TERM") == "dumb" or
                os.environ.get("OS") == "Windows_NT"):
            return False
        return hasattr(sys.stdout, "isatty") and sys.stdout.isatty()

Lo que ocurre aquí es que eyeD3 comprueba si la salida estándar es un tty o no - y que se utiliza para decidir si se utilizan códigos de escape para (entre otras cosas) colorear la salida. Cuando ejecutas el comando normalmente, tienes un tty. Cuando ejecuta el comando y lo canaliza en od Ya no tienes un tty.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X