web-dev-qa-db-fra.com

Lorsque le terminal est ouvert, puis-je afficher le calendrier et l'heure actuels?

En appuyant sur Ctrl+Alt+T pour ouvrir le terminal, je reçois un écran vide avec une invite simpliste.

Est-il possible (en modifiant ~/.bashrc peut-être) d'afficher le calendrier actuel avec aujourd'hui en surbrillance et l'heure actuelle?

Si le temps peut être affiché en grand nombre (en utilisant figlet?), Ce serait un bonus.

7
WinEunuuchs2Unix

Version améliorée

Vous pouvez voir la version améliorée ici: https://askubuntu.com/a/1020693/30752

Cela ressemble à ceci:

Terminal Splash Screen


Version originale

Vous pouvez imprimer une bannière d'introduction à l'ouverture du terminal à l'aide du script ~/.bashrc. Si vous avez figlet (Sudo apt install figlet), vous pouvez utiliser les grandes lettres pour afficher l'heure:

now

Dans le premier cas, figlet est utilisé pour afficher l'heure et dans le second cas, une police normale est utilisée.

Exemples d'écran supplémentaires utilisant toilet

now 3

Cet écran utilise les polices du package toilet. Le dernier exemple utilise la police future et est utilisé dans le code ci-dessous. En outre, le calendrier est défini sur la couleur cyan dans le code ci-dessous.

Le package toilet autorise des types de police et des styles de formatage supplémentaires par rapport au package figlet à partir duquel il a été créé. Pour installer le paquet, utilisez Sudo apt install toilet après avoir installé figlet comme décrit ci-dessus.

Le code

Voici le code dont vous avez besoin pour que tout fonctionne. Il est recommandé de placer ce script dans votre répertoire /home/user/bin car il est automatiquement ajouté à votre chemin. Ce script s'appelle now mais vous pouvez utiliser n'importe quel nom unique.

#!/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 "\033[36m"       # color 36=cyan
echo ""; cal;
printf "\033[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 "\033[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

Marquer le script comme exécutable

Copiez ce code dans votre éditeur et enregistrez-le dans le fichier now. Ensuite, marquez-le comme exécutable en utilisant:

Sudo chmod +x now

Ajouter un script à ~./bashrc

Une fois que cela est terminé, vous pouvez taper now dans le terminal et vous verrez le calendrier et l'heure. Pour tout résumer et l’afficher automatiquement à chaque ouverture du terminal:

  • Editez le fichier ~/.bashrc
  • Allez à la fin et insérez une nouvelle ligne contenant now
  • Sauvegarder le fichier

À l'ouverture du terminal, le jour actuel est mis en surbrillance dans le calendrier du mois en cours, suivi de l'heure actuelle.

Disséquer le code

Ici, nous verrons brièvement comment le code fonctionne sans discuter de chaque ligne.

figlet et toilet paquets

Le script vérifie d'abord si toilet est installé avec la commande hash. Si c'est le cas, il est utilisé pour afficher l'heure. Sinon, figlet est utilisé s'il est installé. Si aucun n'est installé, une police standard est utilisée.

Dans le code ci-dessus, un commentaire peut être copié sur votre ligne de commande et exécuté pour afficher les polices figlet et toilet disponibles sur votre terminal:

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

Pour changer la police utilisée pour l'affichage de l'heure, recherchez le code de cette ligne:

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

et remplacez le nom de police future par le nom de police que vous avez choisi. Gardez à l'esprit que certaines polices sont trop volumineuses pour tenir sur l'écran.

Sélection des couleurs

Définissez la couleur souhaitée pour le calendrier et l'heure séparément. Dans le code ci-dessus, remarquez la commande:

printf "\033[36m"       # color 36=cyan

Remplacez les deux derniers chiffres par le code de couleur que vous souhaitez utiliser. En bricolant avec le code, j'ai trouvé ces valeurs:

00 = blanc éclatant, 31 = rouge, 32 = vert, 33 = jaune, 34 = bleu, 35 = violet, 36 = cyan, 37 = blanc

Si vous trouvez des codes de couleur supplémentaires, veuillez poster un commentaire ci-dessous ou mettre à jour cette réponse.

9
WinEunuuchs2Unix

Si vous voulez juste une heure et une date simples, vous pouvez les ajouter à la fin de votre .bashrc:

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

qui affichera les informations suivantes lors de votre connexion:

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

J'ai un python script j'ai écrit qui ajoutera la météo locale et votre WAN et les adresses IP du réseau local à votre fichier .bashrc. Définissez un cronjob pour mettre à jour la météo. Il vient avec un exemple .bashrc aussi

Il affichera:

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

Si vous voulez aller plus loin, vous pouvez ajouter couleurs et formatage pour que vos valeurs correspondent à votre profil.

1
Aaron Nelson