¿Requieres de una instalación o configuración de Linux o sus servicios?
¿Un desarrollo WEB empresarial a la medida?
¿Un curso o capacitación a la medida?
Revisa el sitio de SERVICIOS de LinuxTotal


Mostrar un reloj en la consola de texto (reloj.sh) 

Copyright © 2005-2018 LinuxTotal.com.mx
Se concede permiso para copiar, distribuir y/o modificar este documento siempre y cuando se cite al autor y la fuente de linuxtotal.com.mx y según los términos de la GNU Free Documentation License, Versión 1.2 o cualquiera posterior publicada por la Free Software Foundation.

Autor: Sergio González D.  

El siguiente script te presenta la manera de colocar un reloj (hora y fecha) en la parte superior derecha de una terminal de texto. Sobre todo es útil cuando estás en consolas "linux" (CTRL-ALT-F1 por ejemplo), es decir no terminales "xterm" que son las que se abren bajo un ambiente Xwindow.


reloj.sh

#!/bin/bash
#################################################################################################
# Copyright 2005-2018 Sergio González Durán (sergio.gonzalez.duran@gmail.com)
# Se concede permiso para copiar, distribuir y/o modificar este programa siempre
# y cuando se cite al autor y la fuente de linuxtotal.com.mx y según los términos
# de la GNU General Public License,
# Versión 3 o cualquiera O Posterior publicada por la Free Software Foundation.
#################################################################################################
# ************************* # reloj.sh # linuxtotal.com.mx # ************************* # dentro de un ciclo sin condiciones se ejecuta el script while : do # se formatea la hora y la fecha como la veremos en pantalla cmd=`date +"%H:%M:%S %F"` # se guarda la posición actual del cursor echo -n -e "\033[s" # estas dos líneas puedes descomentarlas y su resultado # es que la línea superior de la consola siempre estará limpia, # solo el reloj, pero causa parpadeo #tput cup 0 0 #tput el # se calcula el total de columnas de la terminal o consola # y se posiciona el cursor en esa posición menos 19 caracteres # que es lo que mide 'HH:MM:SS AAAA-MM-DD' C=$((`tput cols` - 19)) tput cup 0 $C # establecemos el color del reloj en verde invertido # setaf 2 = verde, smso = invertido COLOR=`tput setaf 2; tput smso` # se regresa a texto normal, sino todo saldría verde NORMAL=`tput sgr0` # mandamos a la pantalla la variable con la fecha y hora # junto con los cambios de color echo -n $COLOR$cmd$NORMAL # se reestablece el cursor a donde se encontraba originalmente echo -n -e "\033[u" # el ciclo se ejecuta cada segundo sleep 1 done

La variable $cmd tiene la hora y fecha al momento con un formato espécifico (En este artículo de LinuxTotal.com.mx encuentras como formatear fechas), después con un echo -n -e se indica con la opción -n que no de un salto de línea y la opción -e se inicia una secuencia de escape '\033[' que también se puede indicar como '\E[' y el parámetro 's' indica guardar la posición actual del cursor.

Ahora hay que posicionar el cursor en el extremo superior derecho menos 19 caracteres, lo que mide la cadena 'HH:MM:SS AAAA-MM-DD' que es el valor de $cmd. Esto se logra con la opción cols del comando tput que como imaginarás es el total de columnas de la terminal. $C es el resultado de una operación aritmética '$((`tput cols` - 19))' que en bash se indica entre dobles paréntesis. Y se indica la posición con la opción cup que sus valores son 'renglón' 'columna', en este caso renglón 0 (la primera línea de la terminal) y columna lo que valga $C.

Las variables $COLOR y $NORMAL se explican en el código y después de imprimir en pantalla el conjunto de variables 'echo -n $COLOR$cmd$NORMAL' que respectivamente cambia a verde/invertido, hora y fecha, y regreso a texto normal, se reestablece el cursor a donde originalmente se encontraba, esto se logra con otra secuencia de escape y la opción uu que indica a la terminal reestablecer el cursor a la posición guardada previamente. Por último esperamos un segundo con sleep 1 y el ciclo se vuelve a ejecutar.


Para ejecutarlo establece sus permisos en 711 (chmod 711 reloj.sh) e inicialo asi:

$> ./reloj.sh &
[1] 9765
$>

Es importante ejecutarlo como proceso en background con la opción '&'. Esto te regresa el número de 'job' trabajo que es [1] y su PID, pero como cada segundo se ejecuta el comando, entonces el PID cambia todo el tiempo. Para terminar con el reloj.sh debes usar entonces su número de 'job':

$> jobs
[1]+  Running                 ./reloj.sh &
$> kill %1
[1]+  Terminado               ./reloj.sh
$>

Con un kill %1 que en este caso es el número de trabajo en background se termina la ejecucción del reloj. Más sobre el manejo de procesos en este artículo de LinuxTotal.com.mx

v



¿Requieres de una instalación o configuración de Linux o sus servicios?
¿Un desarrollo WEB empresarial a la medida?
¿Un curso o capacitación a la medida?
Revisa el sitio de SERVICIOS de LinuxTotal

LinuxTotal en:

Si encuentras útil la información que proveé LinuxTotal, considera realizar un donativo que estimule a seguir proporcionando contenido de calidad y utilidad. Gracias.


Dona a través de paypal::


O a través de bitcoins:


14TNQv5wM3xkSv65gHGQ6s6f8yTZuFTohE
Más artículos de LinuxTotal

Sistemas Linux con gran cantidad de usuarios, como servidores de correo, servidores samba, etc., tarde o temprano tienen el proble....


Hay ocasiones que cuando busco un archivo dentro del listado de un directorio con varios archivos, usando ls, deseo ver solamente ....


Hoy en día los usuarios de Windows y Linux tenemos múltiples formas de combinarlos en el mismo equipo. Ya sea que uses el tradic....


Entre los administradores de sistemas Linux es común el término 'one liners', algo asi como 'los de una línea', y se refiere a ....


Linux es un sistema multiusuario, por lo tanto, la tarea de añadir, modificar, eliminar y en general administrar usuarios se conv....


Una tarea administrativa algo común, es eventualmente tener que añadir un nuevo disco duro (IDE) al o a los que ya se tienen, de....


En el artículo de LinuxTotal.com.mx sobre permisos se explica lo que es un archivo con permisos SUID o SGID, pueden ser potencial....


La gente considera encriptar algunos o todos sus archivos por múltiples razones. Ya sea que no puedan depender en seguridad físi....


Para Linux todo es un archivo, incluyendo dispositivos como discos duros, cdroms, disquetes, unidades de cinta, memorias usb, etc.....


Una de las dificultades con una base de datos MySQL grande y activa es la de realizar respaldos limpios sin tener que desconectar ....



Copyright © LinuxTotal.com.mx 2006-2018
info@linuxtotal.com.mx · linuxtotal.com.mx@gmail.com