Pregunta Especificar un nombre de registro para la salida de pantalla sin depender de .screenrc


En un script de bash, uso "screen -L" para registrar los comandos ejecutados en color. Por ejemplo :

   pantalla -l árbol

Luego leemos logfile con less -R.

Cuando se ejecuta este script, es posible que se ejecuten otras pantallas, por lo que no sabemos qué registro de pantalla. * Contiene nuestra salida. No puedo exigir al usuario que personalice su .screenrc.

¿Hay una manera de especificar un nombre de registro en la línea de comandos o para leer específicos .screenrc comandos


6
2018-03-16 16:31


origen


ver mi respuesta aquí: stackoverflow.com/questions/14208001/… - lepe


Respuestas:


Tengo un par de pensamientos sobre esto. En primer lugar, tenga en cuenta que puede controlar la pantalla de inicio al invocar la pantalla a través de -c interruptor de línea de comando. Segundo, puedes usar variables de entorno en tu .screenrc. Poniendo todo esto junto, aquí hay un script de shell para hacer algo como lo que quieres:

#!/bin/bash

cat << EOF >/tmp/screenrc.$$
logfile /tmp/screenlog.$$
EOF

screen -c /tmp/screenrc.$$ -L
rm /tmp/screenrc.$$

echo "logfile is /tmp/screenlog.$$"

ese script anula el control de pantalla del usuario y coloca la salida en un archivo específico. En este caso estoy usando $$ para generar el nombre del archivo agregando el nombre del proceso de script. Tenga en cuenta que generalmente debe usar mktemp en lugar de crear archivos temporales seguros, pero ahora estoy flojo.

También esto reemplaza completamente al usuario. .screenrc. Si aún desea leer la configuración de ese archivo, debe cambiar el archivo de configuración generado a algo como esto:

logfile /tmp/screenlog.$$
source $HOME/.screenrc

10
2018-03-17 01:59





Porque no haces

tree -C > tree.log

los -C la opción fuerza el color incluso cuando la salida no está en un tty. Similar:

ls -l --color=always > ls.log
grep --color=always foo bar > grep.log
ack --color foo > ack.log

Las utilidades que emiten color a menudo tienen formas de forzarlo cuando la salida se envía a una tubería o se redirige.


2
2018-03-17 04:31



Después de volver a leer la pregunta, mi sospecha es que algo como esto podría ser más lo que realmente se necesita. - Phil Hollenback


Alternativamente, hay una manera de hacerlo en línea.

Ingrese el modo de comando en la pantalla a través de Ctrl-una  : y usar el logfile comando con el nombre del archivo que desea como archivo de registro de argumentos whatevernameyoulike.log

Fuente: página de manual de pantalla


0
2018-06-21 17:46