Copyright © 2005-2024 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.
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.
#!/bin/bash #################################################################################################
# Copyright 2005-2024 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
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:
Si acostumbras trabajar en la línea de comandos de Linux, muy posiblemente uses el shell bash (Bourne Again Shell, derivado del b....
vi es el venerable y confiable editor de texto que encontrarás en TODAS las distintas versiones, distribucciones, sabores de Linu....
Observa la imagen siguiente, que corresponde a uno de los sitios de descargas de MySQL y notarás que todos los archivos que puede....
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....
Uno de mis clientes tiene múltiples aplicaciones basadas en VisualBasic 6 y como base de datos Access, que se ejecutan directamen....
La gente considera encriptar algunos o todos sus archivos por múltiples razones. Ya sea que no puedan depender en seguridad físi....
Hay múltiples maneras de cometer errores (algunos muy graves y desastrosos) cuando se administran servidores GNU/Linux, conócelo....
Este es un pequeño y útil tip que te permitirá crear PDF's a partir de páginas del manual. Cuando deseas ver la ayuda de un co....
Hay decenas de apliaciones para descargar archivos, la mayoría basadas en interfaces Web y de escritorio, y para todos los sistem....
Aqui, traté de enviar un archivo ejecutable (notepad.exe) a través de gmail, y sus mecanismos de seguridad me lo impidieron. Gma....