3 votos

sesión de shell desde un inicio la reconstrucción

Hay un montón de herramientas como el 'script', 'pantalla', 'ttyrec" que permite grabar el contenido de la concha de sesiones. Por el diseño de estos registros de la herramienta de todo lo que aparece en pty, incluyendo los caracteres de control. Sin embargo, parece ser que no hay solución para eliminar los caracteres de control y visualización de la transcripción de la grabación de la sesión en que fue visto por el usuario. Incluso reproducir programas no parecen funcionar correctamente con multi-línea de comandos.

He de pasar algún tiempo tratando de hacer un buen analizador de los manuscritos, y llegó a la conclusión de que en realidad es imposible en el caso general. El problema es moderno emuladores de terminal (terminator, xterm, rxvt) característica automática de la línea de ajuste y conchas (bash, zsh) hacer uso de ella. Las cosas salgan bien para el shell interactivo de proceso, puesto que es capaz de mantenerse en sincronía con el ancho de la terminal y ajustar las posiciones de cursor como sea necesario. Por desgracia, 'script' (ni otras herramientas tan lejos como puedo ver) no mantener un seguimiento de pty cambio de tamaño de los acontecimientos, y esta información simplemente se pierde. Como resultado una herramienta de representación en el manuscrito no tiene suficiente información y no puede reconstruir la apariencia de multi-línea de comandos.

He perdido de algo? ¿Hay una solución?

Veo las siguientes posibles soluciones, pero ninguna de ellas es fácil ni completa:

  • Usar el shell de no tener sofisticado editor de línea de comandos (como bourne shell)
  • Siempre se ejecutan con la 'x' en (genera un montón de lío con el comando auto-realización en bash)
  • Parche 'script' (y 'pantalla') herramienta para grabar pty cambios de tamaño (en Linux se puede alimentar de temporización info a stderr ya, sería lógico para añadir pty cambio de tamaño eventos)
  • Venir para arriba con un poco de astucia algoritmo para analizar el mal estado de transcripción. Por ejemplo, shell envía CR cuando se tiene que ir a otra línea durante multi-línea de comandos de edición. Envía CR+NL cuando el usuario envía el comando. Por desgracia bash también envía a CR cuando el manejo de algunos Ctrl-U los comandos del usuario.
  • Obtener el texto de la orden (que es el mal estado en el manuscrito) de otra fuente, por ejemplo, de shell de la historia. Pero esto requeriría la personalización del perfil de shell scripts, etc.

0voto

Pierre Carrier Puntos 2112

En el caso general, usted necesita para reproducir en un terminal del mismo tamaño.

  • Usted puede decidir ignorar por completo. Como se ha mencionado por sendmoreinfo, puede declarar en un PLAZO que no admite ninguna de estas características. No esperes vim o readline a comportarse en la agradable formas de acostumbré, aunque.

  • Usted podría almacenar junto con su transcripción y recrear el tamaño correcto cuando se repiten (por ejemplo xterm -geometry [...] -e [...]), pero el cambio de tamaño va a romper todo.

  • Si usted se preocupa mucho acerca de esto y quieren la perfecta solución, se puede aplicar a ti mismo!

    • Usted podría tener su ttyrec registro del tamaño del terminal y sus cambios por el manejo de la SIGWINCH de señal y el uso de ioctl(STDIN_FILENO, TIOCGWINSZ, [...]).

    • Su ttyplay tendría que tener cuidado de emular una terminal en sí, y su representación dentro de un terminal. Eso es complicado, pero por suerte hay un par de proyectos que ya están haciendo, por lo que se podría reutilizar un sistema bien establecido de código base. tmux viene a la mente, por ejemplo.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: