Quando o terminal é aberto, posso obter o calendário e a hora atuais exibidos?

7

Ao pressionar Ctrl + Alt + T para abrir o terminal, recebo uma tela em branco com um prompt de entrada simplista.

É possível (modificando ~/.bashrc talvez) para exibir o calendário atual com o atual destaque e a hora atual?

Se o tempo puder ser exibido em grandes números (usando o figlet?), isso seria um bônus.

    
por WinEunuuchs2Unix 08.04.2017 / 02:02

2 respostas

8

O que parece

Você pode imprimir um banner de introdução quando o terminal é aberto usando o script ~/.bashrc . Se você tiver um figlet ( sudo apt install figlet ), pode tirar proveito de letras grandes para exibir a hora:

Na primeira instância, figlet é usado para exibir a hora e, na segunda, uma fonte regular é usada.

Exemplos adicionais de tela usando toilet

Esta tela usa fontes do pacote toilet . O último exemplo usa future font e é usado no código abaixo. Além disso, o calendário é definido para cor ciano no código abaixo.

O pacote toilet permite tipos de fontes e estilos de formatação adicionais sobre o pacote figlet do qual ele é bifurcado. Para instalar o pacote, use sudo apt install toilet após instalar figlet conforme descrito acima.

O código

Aqui está o código que você precisa para fazer tudo funcionar. É recomendável colocar esse script no diretório /home/user/bin , pois ele é adicionado automaticamente ao seu caminho. Este script é chamado de now , mas você pode usar qualquer nome exclusivo que desejar.

#!/bin/bash

# NAME: now
# PATH: $HOME/bin
# DESC: Display current calendar and time
# CALL: Called from terminal or ~/.bashrc
# DATE: Apr 6, 2017. Modified: Apr 10, 2017.

# NOTE: To display all available toilet fonts use this one-liner:
#       for i in ${TOILET_FONT_PATH:=/usr/share/figlet}/*.{t,f}lf; do j=${i##*/}; toilet -d "${i%/*}" -f "$j" "${j%.*}"; done

# calendar current month with today higlighted.
# colors 00=bright white, 31=red, 32=green, 33=yellow, 34=blue, 35=purple,
#        36=cyan, 37=white
printf "3[36m"       # color 36=cyan
echo ""; cal;
printf "3[00m"       # color bright white (default)
echo ""

tput sc                 # Save cursor position.
# Move up 9 lines
while [ $((++i)) -lt 10 ]; do tput cuu1; done
tput cuf 25             # Move 25 columns right

# Do we have the toilet package?
if hash toilet 2>/dev/null; then
    echo " "$(date +"%I:%M %P")" " | \
        toilet -f future --filter border > /tmp/terminal
# Do we have the figlet package?
elif hash figlet 2>/dev/null; then
    echo $(date +"%I:%M %P") | figlet > /tmp/terminal
# else use standard font
else
    echo $(date +"%I:%M %P") > /tmp/terminal
fi

while IFS= read -r Time; do
    printf "3[01;32m" # color green
    printf "$Time"
    tput cud1           # Up one line
    tput cuf 25         # Move 25 columns right
done < /tmp/terminal

tput rc                 # Restore saved cursor position.

exit 0

Marcar script como executável

Copie este código no seu editor e salve-o no arquivo now . Em seguida, marque-o como executável usando:

sudo chmod +x now

Adicione o script a ~./bashrc

Quando isso estiver concluído, você pode digitar now no terminal e você verá o calendário e a hora. Para finalizar tudo e exibi-lo automaticamente toda vez que você abrir o terminal:

  • Edite o arquivo ~/.bashrc
  • Vá até o final e insira uma nova linha contendo now
  • Salve o arquivo

Agora, ao abrir o terminal, você será saudado com o dia atual destacado no calendário do mês atual seguido pela hora atual.

Dissecando o código

Aqui, veremos resumidamente como o código funciona sem discutir todas as linhas.

figlet e toilet packages

O script primeiro verifica se toilet está instalado com o comando hash . Se sim, isso é usado para exibir a hora. Se não for usado figlet se instalado. Se nenhum dos dois estiver instalado, será usada uma fonte regular.

No código acima, um comentário pode ser copiado para sua linha de comando e executado para mostrar as fontes figlet e toilet disponíveis no seu terminal:

for i in ${TOILET_FONT_PATH:=/usr/share/figlet}/*.{t,f}lf; do j=${i##*/}; toilet -d "${i%/*}" -f "$j" "${j%.*}"; done

Para alterar a fonte usada na pesquisa por horário, pesquise o código desta linha:

toilet -f future --filter border > /tmp/terminal

e altere o nome da fonte future para o nome da fonte que você escolher. Lembre-se de que algumas fontes são muito grandes para caber na tela.

Selecionando cores

Defina a cor desejada para o calendário e a hora separadamente. No código acima, observe o comando:

printf "3[36m"       # color 36=cyan

Altere os dois últimos dígitos para o código de cores que você deseja usar. De mexer com o código, encontrei estes valores:

  

00 = branco brilhante, 31 = vermelho, 32 = verde, 33 = amarelo, 34 = azul, 35 = roxo, 36 = ciano, 37 = branco

Se você encontrar códigos de cor adicionais, poste um comentário abaixo ou atualize esta resposta.

    
por WinEunuuchs2Unix 08.04.2017 / 02:02
0

Se você quer apenas uma data e hora simples, você pode adicioná-las ao final de seu .bashrc:

echo -e "Welcome to [$(hostname)] You are logged in as user [$USER]"
echo -e "Local time: [$(date)]"

, que exibirá o seguinte quando você fizer login:

Welcome to [deathstar] You are logged in as user [skywalker]
[Local time]: Sun Apr 9 10:18:11 CDT 2017.

Eu tenho um script python que escrevi que adicionará o clima local e seus IPs WAN e LAN ao seu arquivo .bashrc . Definir um cronjob para atualizar o clima. Ele vem com uma amostra .bashrc também

Ele exibirá:

Welcome to [deathstar] You are logged in as user [skywalker]
[Local time]: Sun Apr  9 10:18:11 CDT 2017.
[Local weather]: 68.68 F with few clouds
[Your public IP is]: 1.2.3.4 [Local IP]: 192.168.2.6

Se você quiser dar um passo adiante, adicione cores e formatações para que seus valores correspondam ao seu perfil

    
por Aaron Nelson 10.04.2017 / 04:27