Tengo una máquina Linux con una carpeta de datos y una secuencia de comandos que produce un archivo de hoja de cálculo xlsx de informe sobre el contenido en constante cambio de la carpeta donde se ejecuta. Utilizo un script xlsx2tsv para convertirlo en texto tsv, lo que lleva menos de un segundo. La secuencia de comandos tarda aproximadamente 1 minuto en producir el archivo de hoja de cálculo y quiero tener una pantalla de terminal que muestre los resultados de la tabla en un búfer GNU menos, donde pueda moverme con los cursores y buscar contenido con /search , etc. de la versión más actualizada del contenido.
En este momento tengo una fiesta while true; do loop que primero calcula el contenido del script, luego lo transforma a tsv y lo canaliza a GNU less . Luego en otra pantalla de terminal tengo un while true; do un bucle que elimine el comando less cada 2 minutos. Pero esto me deja con 1 minuto de inactividad, donde estoy esperando que se actualice la hoja de cálculo antes de poder navegar por el contenido con less .
Me gustaría optimizar esta configuración para que se produzca una nueva hoja de cálculo en segundo plano, no cuando elimine el comando less, sino que comience 1 minuto antes, de modo que el comando less actualizado siempre me brinde una copia de trabajo que pueda navegar. Idealmente sin tener que crear una tercera ventana de terminal para ello.
¿Algunas ideas? ¿Quizás GNU paralelo?
Configuración actual:
# screen in the data folder with less command while true; do $HOME/script -dir $PWD && xlsx2tsv $(ls $PWD/*.xlsx) 1 | column -t | less -S -N; sleep 0.5; done # screen 2 with the less killing while true; do pkill less; sleep 120; doneMi página de menos manual dice esto sobre el comando "R"
R Vuelva a pintar la pantalla, descartando cualquier entrada almacenada en el búfer. Útil si el archivo está cambiando mientras se está viendo.
Entonces, simplemente presione R para actualizar.
while true; do (sleep 0.5 $HOME/script -dir $PWD && xlsx2tsv $(ls $PWD/*.xlsx) 1 | column -t > new; mv new old; killall less ) & less -S -N old done