¿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-2025 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:  

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-2025 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

Traducción del capítulo del libro "Stealing the Network: How to Own a Continent." escrito por Fyodor, autor de nmap. Excelente a....


EL espacio disponible en disco se determina con este comando built-in del sistema operativo Linux, df.....


Si ya has usado la línea de comandos o shell de Linux por un tiempo, seguramente entonces, el comando date ya te es familiar, lo ....


Lo primero que debes hacer una vez que instalas un servidor de base de datos MySQL (casi todas las distros actuales lo instalan po....


¿Has visto esa combinación de r,w,x,- cuando listas un directorio?, tienes cierta idea que son los permisos, pero ¿como se usan....


Ya son varios los lectores que me preguntan que CMS (content management system) utilizo para este sitio. Ejemplos de CMS son mambo....


Imagínate que eres un administrador de sistemas Linux que trabaja desde un equipo Windows y usas Putty para conectarte a los serv....


El editor en línea (stream editor) sed es un editor de texto en línea que realiza operaciones de edición sobre datos provenient....


GNU/Linux es increiblemente fácil de configurar, no bases de datos raras, no registros, no directorios regados por aquí y por al....


En linux cualquier comando (o cualquier cosa) que se teclea se le conoce como que está utilizando la entrada estándar [STDIN]. L....



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