Kann ich beim Öffnen des Terminals den aktuellen Kalender und die aktuelle Uhrzeit anzeigen lassen?

7

Wenn ich + Ctrl+ Altdrücke T, um das Terminal zu öffnen, wird ein leerer Bildschirm mit einer vereinfachten Eingabeaufforderung angezeigt.

Ist es möglich (durch Ändern ~/.bashrc), den aktuellen Kalender mit hervorgehobenem Heute und der aktuellen Zeit anzuzeigen?

Wenn die Zeit in großen Zahlen angezeigt werden kann (mit Figlet?), Wäre dies ein Bonus.

WinEunuuchs2Unix
quelle

Antworten:

9

Verbesserte Version

Sie können die verbesserte Version hier sehen: https://askubuntu.com/a/1020693/307523

Es sieht aus wie das:

Terminal-Begrüßungsbildschirm


Originalfassung

Sie können ein Einführungsbanner drucken, wenn das Terminal mithilfe des ~/.bashrcSkripts geöffnet wird . Wenn Sie figlet ( sudo apt install figlet) haben, können Sie große Buchstaben verwenden, um die Uhrzeit anzuzeigen:

jetzt

In der ersten Instanz figletwird die Uhrzeit angezeigt und in der zweiten Instanz wird eine reguläre Schriftart verwendet.

Zusätzliche Bildschirmbeispiele mit toilet

jetzt 3

Dieser Bildschirm verwendet Schriftarten aus dem toiletPaket. Das letzte Beispiel verwendet die futureSchriftart und wird im folgenden Code verwendet. Darüber hinaus ist der Kalender im folgenden Code auf die Farbe Cyan eingestellt.

Das toiletPaket ermöglicht zusätzliche Schriftarten und Formatierungsstile über das figletPaket, aus dem es gegabelt wird. Um das Paket zu installieren, verwenden Sie es sudo apt install toiletnach der Installation figletwie oben beschrieben.

Der Code

Hier ist der Code, den Sie benötigen, damit alles funktioniert. Es wird empfohlen, dieses Skript in Ihrem /home/user/binVerzeichnis abzulegen, da es automatisch zu Ihrem Pfad hinzugefügt wird. Dieses Skript heißt, nowaber Sie können einen beliebigen eindeutigen Namen verwenden.

#!/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

Skript als ausführbar markieren

Kopieren Sie diesen Code in Ihren Editor und speichern Sie ihn in der Datei now. Als nächstes markieren Sie es als ausführbar mit:

sudo chmod +x now

Skript hinzufügen zu ~./bashrc

Sobald dies abgeschlossen ist, können Sie nowdas Terminal eingeben und Sie werden den Kalender und die Uhrzeit sehen. So schließen Sie alles zusammen und lassen es bei jedem Öffnen des Terminals automatisch anzeigen:

  • Bearbeiten Sie die Datei ~/.bashrc
  • Gehen Sie zum Ende und fügen Sie eine neue Zeile mit ein now
  • Speicher die Datei

Wenn Sie nun das Terminal öffnen, werden Sie mit dem aktuellen Tag begrüßt, der im Kalender des aktuellen Monats hervorgehoben ist, gefolgt von der aktuellen Uhrzeit.

Den Code zerlegen

Hier sehen wir uns kurz an, wie der Code funktioniert, ohne jede Zeile zu diskutieren.

figletund toiletPakete

Das Skript prüft zunächst, ob toiletes mit dem hashBefehl installiert wurde . Wenn ja, wird dies zur Anzeige der Zeit verwendet. Wenn nicht, figletwird bei Installation verwendet. Wenn keine installiert ist, wird eine reguläre Schriftart verwendet.

Im obigen Code kann ein Kommentar in Ihre Befehlszeile kopiert und ausgeführt werden, um verfügbare Schriftarten figletund toiletSchriftarten auf Ihrem Terminal anzuzeigen:

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

Um die für die Zeitanzeige verwendete Schriftart zu ändern, suchen Sie den Code für diese Zeile:

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

und ändern Sie den Schriftnamen futurein den von Ihnen gewählten Schriftnamen. Beachten Sie, dass einige Schriftarten zu groß sind, um auf das Display zu passen.

Farben auswählen

Stellen Sie die gewünschte Farbe für den Kalender und die Uhrzeit separat ein. Beachten Sie im obigen Code den folgenden Befehl:

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

Ändern Sie die letzten beiden Ziffern in den Farbcode, den Sie verwenden möchten. Beim Basteln mit dem Code habe ich folgende Werte gefunden:

00 = hellweiß, 31 = rot, 32 = grün, 33 = gelb, 34 = blau, 35 = lila, 36 = cyan, 37 = weiß

Wenn Sie zusätzliche Farbcodes finden, geben Sie bitte unten einen Kommentar ein oder aktualisieren Sie diese Antwort.

WinEunuuchs2Unix
quelle
Der bashrc sollte keine Ausgabe erzeugen (obwohl ich mich nicht an den Grund erinnern kann, warum). Also anstatt nur now, kann es besser sein, diese Zeile darin zu setzen:PROMPT_COMMAND='[[ $now_already_run != yes ]] && now_already_run=yes && now'
wjandrea
@wjandrea Der nächste, den ich finden konnte, ist folgender: stackoverflow.com/questions/12440287/… es gibt jedoch eine andere Lösung. Lassen wir unsere Kommentare hier, bis jemand ein Problem meldet, das reproduziert werden kann, und es dann behebt.
WinEunuuchs2Unix
Es gibt sicherlich einen Nischenfall, in dem das Ausführen eines Befehls mit bash -ic <command>unerwartete Ausgabe erzeugt, aber ich kann mir keine Situation vorstellen, in der dies ein Problem wäre.
Wjandrea
Farben sind ANSI-Escape-Sequenzen. Weitere Informationen und eine Liste hier: misc.flogisoft.com/bash/tip_colors_and_formatting
wjandrea
Sehr schön. Vielleicht übertrieben für meinen Geschmack, aber sehr beeindruckend
Sergiy Kolodyazhnyy
1

Wenn Sie nur eine einfache Uhrzeit und ein einfaches Datum wünschen, können Sie diese am Ende Ihrer .bashrc hinzufügen:

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

Beim Anmelden wird Folgendes angezeigt:

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

Ich habe ein Python- Skript geschrieben, das das lokale Wetter sowie Ihre WAN- und LAN-IPs auch zu Ihrer .bashrc-Datei hinzufügt. Stellen Sie einen Cronjob ein, um das Wetter zu aktualisieren. Es kommt auch mit einem Beispiel .bashrc

Es wird angezeigt:

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

Wenn Sie noch einen Schritt weiter gehen möchten, können Sie zusätzliche Farben und Formatierungen hinzufügen , damit Ihre Werte Ihrem Profil entsprechen

Aaron Nelson
quelle