¿Existe una forma estándar de invertir el orden de salida de una salida de terminal, es decir:
~/Developer $ command0
-bash: comman0: command not found
~/Developer $ command2
-bash: command2: command not found
~/Developer $ command3
-bash: command3: command not found
~/Developer $
se mostrará como:
~/Developer $
-bash: command3: command not found
~/Developer $ command3
-bash: command2: command not found
~/Developer $ command2
-bash: comman0: command not found
~/Developer $ comman0
Siento que siempre tener su mensaje en la parte inferior es contrario a la intuición, una forma más efectiva de presentar la salida sería invertir el orden de salida. ¿Cómo podría implementar esto? Específicamente, ¿dónde se definió la parte de salida del programa del terminal OSX?
bash
).Respuestas:
En bash, esto mostrará el indicador / comando actual en la parte superior y su salida a continuación, pero sin desplazamiento ni comandos anteriores:
Esta función colocará comandos anteriores a continuación, pero debe canalizar cada comando individualmente. Desafortunadamente,
exec > >(f)
no puedo ayudar con esto, ya que redirige todo el bash, no los comandos individuales. Aquí está la función:Luego ejecuta cada comando como:
Guarda la salida, crea un número de líneas en blanco igual a la longitud + 1, luego vuelve a colocar la salida. Puede etiquetar una línea al final que muestre un aviso falso o una regla horizontal si lo desea. P.ej
Como alternativa basura pero automática a todo este asunto de la función, podemos agregar un comando al final de nuestro $ PROMPT_COMMAND anterior que borra unas 11 líneas algo arbitrarias:
También puede usar
tput -S
para evitar múltiples llamadas binarias.Obtuve el
$PROMPT_COMMAND
de https://github.com/swirepe/alwaysontop .fuente
Desafortunadamente, esto será bastante difícil. El protocolo entre las aplicaciones y el terminal OS-X es una variante del protocolo de control de terminal VT100 / ANSI , específicamente el protocolo XTerm .
Eso incluye un montón de suposiciones sobre la posición de la pantalla, etc., que sería difícil reasignar a un mundo donde la pantalla se invirtió.
Peor aún, todo lo que obtiene su emulador de terminal es una cadena de comandos de tipo "poner este personaje en esta posición". No hay distinción entre el símbolo del sistema y la salida de un comando ejecutado por él, por lo que no puede hacer una cosa para ambas partes, al menos, no sin la cooperación del shell debajo.
El shell y los programas suponen que la pantalla avanza hacia arriba: nuevos datos en la parte inferior y continúan hacia abajo para siempre.
Podría, al menos en teoría, modificar su emulador de terminal para que muestre líneas en orden inverso: la línea "inferior" primero, y así sucesivamente hasta la línea "superior" en la parte inferior de la pantalla.
Sin embargo, eso revertiría el orden de las líneas en la salida del comando, por lo que el resto del contenido también saldría hacia atrás. Si desea que los comandos (por ejemplo: ls, cat) se ejecuten "hacia abajo", pero los impulsos para moverse "hacia arriba" la vida es más difícil.
No conozco ningún software que implemente esto. (... pero vea el comentario de JdeBD a esto para un enlace a uno.) :)
fuente
Aunque esto no revertirá exactamente la salida, mantendrá su mensaje en la parte superior:
https://github.com/swirepe/alwaysontop
Para usarlo ejecuta:
Si decide que le gusta, simplemente ingréselo en su .bash_profile con algo como:
fuente