Prefiero usar el terminal y pasar la mayor parte del tiempo usándolo. Estoy buscando una forma de ver el tiempo en la terminal mientras lo uso en paralelo. El tiempo cambiará automáticamente cuando pase. Sería increíble si se mostrara a la izquierda en mi símbolo del sistema.
Si este es mi símbolo del sistema en la terminal:
saurav@saurav-P4I45Gx-PE:~$
Entonces me gustaría ver el reloj (hora) como:
saurav@saurav-P4I45Gx-PE[06:27:01]:~$
o
saurav@(06:27:01):~$
o cualquier otro formato. donde 06:27:01
esta el tiempo Lo que quiero es mostrar el tiempo que cambia cuando pasan los segundos.
Entonces, ¿hay alguna manera de lograr esto?
command-line
gnome-terminal
Saurav Kumar
fuente
fuente
$PS1
variable (solicitud) para que tenga tiempo, pero no estoy seguro de si los cambios.\@
, pero la hora solo se volverá a calcular cada vez que se muestre el mensaje, no la hora actual.Respuestas:
No estoy seguro de que sea tan simple lograr esto usando el shell bash predeterminado (pero no digo que sea imposible). Probablemente necesitará un comando / función que pueda actualizar el símbolo del sistema cada segundo sin interferir con nada de lo que escriba en el indicador.
El shell Z (zsh) tiene un comando incorporado, llamado
zle
, que, cuando se usa con elreset-prompt
argumento, obliga a que la solicitud se vuelva a expandir y luego vuelve a mostrar el búfer de edición.Si quieres probarlo, sigue los siguientes pasos:
Instale Z shell con este comando:
Cuando corras
zsh
por primera vez, elige0
cuándo se te pedirá.Edite el
~/.zshrc
archivo y agregue las siguientes líneas:Guarde el archivo y ciérrelo.
En su terminal, cuando todavía está usando zsh, ejecute
source ~/.zshrc
, o simplementezsh
, para restablecer su solicitud. Ahora su aviso debería verse así:con algunos colores
Si lo desea, ejecute
chsh -s /bin/zsh
para cambiar su shell actual a/bin/zsh
(es necesario volver a iniciar sesión para que este cambio surta efecto).Ejecútelo
exit
si desea salir del shell zsh.Aquí hay un screencast de 15 segundos desde mi terminal:
fuente
chsh
para cambiar su shell predeterminado de/bin/bash
a/bin/zsh
. Debe cerrar sesión e iniciar sesión nuevamente.zsh
comando para entrar en este modo de reloj ...Si desea mostrar el tiempo de ejecución en su terminal, puede usar este comando. Mostrará la hora en la parte superior derecha de su terminal.
Pero tenga en cuenta que mostrar el tiempo usando este comando en algún momento puede superponerse al texto presente en la terminal. Entonces use este comando con poca precaución.
Otra forma puede ser usar el carácter de control en la PS1
Pero en este método, su tiempo se actualizará solo después de presionar enter.
Si desea el método anterior permanente, agregue el comando anterior (el que le guste o ambos) en su
~.bashrc
archivo.fuente
Si todo lo que quieres hacer es mostrar un reloj, solo usa
date
:Eso mostrará el tiempo cada segundo hasta que lo detengas CtrlC. Si desea que esté en la misma línea (lo anterior imprimirá una nueva línea cada segundo), haga esto en su lugar:
fuente
Esta pregunta me ha estado molestando durante unos días, y aquí está mi publicación editada con todo el material que he aprendido. Específicamente, mi objetivo era lograr mostrar el reloj junto al indicador en BASH. Al igual que Radu Radeanu mencionó en su respuesta, la clave es encontrar una función o variable que pueda actualizar constantemente el símbolo del sistema o volver a dibujar la pantalla, sin interferir con su pantalla o con lo que escriba. Si bien esto es posible con el ciclo while, como lo muestra G_P, el rediseño constante de la pantalla con la función tput se confunde con el texto que esté en mi pantalla en el instante en que se actualiza. Me he acercado bastante a lograr lo que el OP solicitó modificando un poco el código que G_P publicó, pero aún creo que la respuesta de Radu es la más cercana a lo que OP quiere. Sin más preámbulos, he aquí algunas de las cosas que '
# 1, mi solución preferida: multiplexor terminal
Terminal multiplexer es un software que permite dividir la pantalla del terminal en dos o más pantallas. En particular, quiero llamar la atención sobre el terminal Byobu. Este emulador de terminal basado en ncurses le permite mostrar el tiempo, el porcentaje de CPU, la memoria y muchos otros indicadores. En la captura de pantalla de mi terminal byobu, puede ver la temperatura de la CPU, el porcentaje de batería, la calidad de la conexión a Internet, la frecuencia de la CPU, la RAM, la fecha y, por supuesto, el tiempo. Si te preocupa principalmente monitorear constantemente estas cosas mientras estás en la terminal, Byobu es el camino a seguir. De hecho, me ha gustado tanto que lo configuré para que se cargue automáticamente al iniciar sesión en tty. La única peculiaridad es que en tty no puedes fusionar las ventanas separadas, solo cambia entre pestañas con las teclas F3 y F4.
Una solución alternativa que involucra ventanas de multiplexación es mediante el uso
splitvt
, que divide la pantalla en dos partes. Puede ejecutar un reloj de terminal comotty-clock
, usar el comando watch con fecha, o puede codificar uno usted mismo con un script. Más sobre eso más tarde. En la captura de pantalla, puede ver una parte de la división con el indicador bash normal en la parte superior, y en la parte inferior puede ver un script en ejecución, que simplemente actualiza constantemente la salida deldate
comando con elclear
comando.# 2, While Do Loop y tput Esto es probablemente lo más cercano a lo que la persona que hizo la pregunta quería implementar con bash.
G_P ha publicado una gran solución que involucra los comandos
while do
ytput
. Sin embargo, en el código de G_P había dos cosas que no me gustaban. Uno, el reloj estaba a la derecha del indicador, y dos, porque el ciclo de suspensión es de 1 segundo (consulte el código original donde dice suspensión), la pantalla se redibuja cada segundo, y eso daña mi salida. Lo que hice fue editar mi indicador bash para que esté una línea más abajo con \ n operador y cambiar el código de G_P para que el operador tput coloque el reloj justo encima del indicador y se actualice cada 60 segundos; eso me permite ver horas y minutos (y no me importan exactamente los minutos), mientras que el bucle del reloj no estropea mi pantalla. Primero, aquí está mi mensaje:Y aquí está el código modificado de G_P:
enter code here
Edición pequeña : he notado que este código anterior no muestra el reloj de inmediato a veces. Aquí hay una versión mejor:
while true; do tput sc;tput cup 0 0;date +%R;tput rc; sleep 60; done &
esta coloca el reloj en la pantalla primero, luego le avisa a bash para que pase por el ciclo de sueño de 60 segundosTenga en cuenta que el tput cup 0 0 coloca el reloj en la esquina superior derecha de la pantalla, justo encima de mi indicador y sleep 60 cambia el ciclo de sueño a 60 segundos, porque de esa manera puedo monitorear solo horas y minutos en lugar de cada segundo. De esta manera, el texto que tengo en la pantalla no se ve afectado, en su mayor parte (solo cuando ejecuto un comando al mismo tiempo que se actualiza el reloj).
La línea PS1 ya está en su perfil .bashrc, por lo que solo necesita modificarla un poco. El bucle while do debe agregarse en algún lugar del mismo archivo, preferiblemente al final con # comentario de que esto es algo que agregó inicialmente. Y no olvides siempre hacer una copia de seguridad de cualquier archivo así en caso de que hagas bubu y necesites volver a ser como antes.
# 3, secuencias de comandos y otros
Esta parte es simplemente para aquellos que quieren ver el tiempo. Para aquellos que desean monitorearlo constantemente, las opciones preferidas son la n.º 1 y la n.º 2.
Entonces, como ya hemos visto, el bucle while do es bastante útil. Así es como puede crear un reloj con los comandos while do loop, date y sleep.
Presione regresar / ingresar, y básicamente verá la salida del comando de fecha que se muestra en la pantalla borrada cada segundo. Si no quieres escribir todo eso cada vez, convierte todo esto en script:
Ahora puede ejecutar ese script con splitvt en una instancia de bash, mientras trabaja en la otra.
Otra solución es el
watch -n1 date
comando, que ejecutará continuamente el comando de fecha con un período de 1 segundo.En conclusión: he aprendido algunas cosas al tratar de encontrar la respuesta a esta pregunta, y espero que mis hallazgos lo hayan ayudado de alguna manera, y espero haber podido contribuir en esta pregunta. Byobu terminal IMHO es la mejor solución, pero decide por ti mismo, investiga un poco y elige la forma que mejor funcione para ti.
Algunas de las cosas que he encontrado al investigar:
Mi publicación original, la solución minimalista: edite su archivo ~ / .bashrc. Prefiero editarlo con nano, así que
Aquí está la parte de mi propio archivo editado:
Después de la instrucción else, la primera línea se comenta con # (este es mi antiguo indicador), ahora la segunda línea es la que desea, y específicamente el
\t
operador. Eso muestra el tiempo de ejecución en formato de 24 horas. Para más información mira esto . También una pequeña nota, estoy usando las cosas después de otra cosa, porque no estoy usando un indicador de color.PD: Por favor, avíseme si debo agregar algo a mi respuesta o editarlo de alguna manera, pero en su mayor parte creo que esta es la respuesta más concluyente que se me ocurre, y al menos personalmente no agregaré nada. nuevo en esto.
fuente
ya que prefiero mostrar tan poco información de fondo como sea posible en el terminal i generalmente personalizar cada sesión como
#
,$
, etc. (si desea cambiar de forma permanente, la solución de minerz029 es perfecto)Para modificarlo para mostrar actual, podría ir para
por tiempo en formato de 12 horas. Puede ver la documentación de bash para otras opciones.
fuente
Esta vez solo cambiará cuando se ejecute una nueva solicitud
Puede agregar lo siguiente a su
.bashrc
:Lo que producirá:
Más información aquí: http://www.thegeekstuff.com/2008/09/bash-shell-ps1-10-examples-to-make-your-linux-prompt-like-angelina-jolie/#8
Busque "8. Cree su propio mensaje utilizando los códigos disponibles para la variable PS1" en la página anterior.
fuente
$PROMPT_COMMAND
funcionaría si puedes encontrar un comando que muestre el tiempo de tic-tac.Realmente me gusta la función de reloj ncmpcpp , activada por 0-key (ver captura de pantalla). Para obtener más detalles sobre el procedimiento de instalación, consulte esta publicación .
fuente
watch -t -n1 "date +%T|figlet"
Sería una manera fácil.Influenciado por g_p y Serg , intenté crear una función en bash. Funciona, pero no estoy seguro de que sea una buena idea verificar el comando ps cada segundo para ver si bash es un proceso fg o no
fuente
Si nunca necesita usarlo,
debian_chroot
entonces es un lugar útil para poner la hora en que se mostró el símbolo del sistema usando:Escriba esto en su terminal y observe cómo cambia el símbolo del sistema con la hora:
Una vez que se establece el tiempo una vez, para obtener un reloj en funcionamiento que se actualiza cada segundo uso:
Esto
.gif
muestra los comandos en acción:fuente