Von Ask Ubuntu :
Überprüfen Sie den Link " Ubuntu fragen" oben auf Kommentare und möglicherweise neue Antworten von anderen Benutzern.
now
Bash-Skript
Das schwere Heben ist die Spritzkomponente, die dies zeigt:
$ now
Weather report: Edmonton March 2018 ┌────────────────────────────┐
Su Mo Tu We Th Fr Sa │ ┏━┓╺┓ ┏━┓┏━┓ ┏━┓┏┳┓ │
\ / Sunny 1 2 3 │ ┃┃┃ ┃ ╹┏━┛┗━┫ ┣━┛┃┃┃ │
.-. -23--14 °C 4 5 6 7 8 9 10 │ ┗━┛╺┻╸╹┗━╸┗━┛ ╹ ╹ ╹ │
― ( ) ― ↘ 22 km/h 11 12 13 14 15 16 17 └────────────────────────────┘
`-’ 14 km 18 19 20 21 22 23 24
/ \ 0.9 mm 25 26 27 28 29 30 31
Ja, es ist wirklich -14 in Edmonton und fühlt sich an wie -23. Eine gute Zeit, um das lange Wochenende drinnen zu verbringen und den neu eingetroffenen Tomb Raider 2013 zu spielen! Vielleicht den Lebenslauf auffrischen, um nach Vancouver oder Montreal zu ziehen ...
Hier ist der Code:
#!/bin/bash
# NAME: now
# PATH: $HOME/bin
# DESC: Display current weather, calendar and time
# CALL: Called from terminal or ~/.bashrc
# DATE: Apr 6, 2017. Modified: Mar 30, 2018.
# 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
# Setup for 92 character wide terminal
DateColumn=34 # Default is 27 for 80 character line, 34 for 92 character line
TimeColumn=61 # Default is 49 for " " " " 61 " " " "
#--------- WEATHER ----------------------------------------------------------
# Current weather, already in color so no need to override
echo " "
# Replace Edmonton with your city name, GPS, etc. See: curl wttr.in/:help
curl wttr.in/Edmonton?0 --silent --max-time 3
# Timeout #. Increase for slow connection---^
echo " "
echo " " # Pad with blank lines for calendar & time to fit
#--------- DATE -------------------------------------------------------------
# calendar current month with today highlighted.
# colors 00=bright white, 31=red, 32=green, 33=yellow, 34=blue, 35=purple,
# 36=cyan, 37=white
tput sc # Save cursor position.
# Move up 9 lines
while [ $((++i)) -lt 10 ]; do tput cuu1; done
# Depending on length of your city name and country name you will:
# 1. Comment out next three lines of code. Uncomment fourth code line.
# 2. Change subtraction value and set number of print spaces to match
# subtraction value. Then place comment on fourth code line.
Column=$(($DateColumn - 10))
tput cuf $Column # Move x column number
printf " " # Blank out ", country" with x spaces
#tput cuf $DateColumn # Position to column 27 for date display
# -h needed to turn off formating: /ubuntu/1013954/bash-substring-stringoffsetlength-error/1013960#1013960
cal -h > /tmp/terminal
CalLineCnt=1
Today=$(date +"%d")
# Prefix with space when length < 2
if [[ ${#Today} < 2 ]] ; then
Today=" "$Today
fi
printf "\033[32m" # color green -- see list above.
while IFS= read -r Cal; do
printf "$Cal"
if [[ $CalLineCnt > 2 ]] ; then
# See if today is on current line & invert background
tput cub 22
for (( j=0 ; j <= 18 ; j += 3 )) ; do
Test=${Cal:$j:2} # Current day on calendar line
if [[ "$Test" == "$Today" ]] ; then
printf "\033[7m" # Reverse: [ 7 m
printf "$Today"
printf "\033[0m" # Normal: [ 0 m
printf "\033[32m" # color green -- see list above.
tput cuf 1
else
tput cuf 3
fi
done
fi
tput cud1 # Down one line
tput cuf $DateColumn # Move 27 columns right
CalLineCnt=$((++CalLineCnt))
done < /tmp/terminal
printf "\033[00m" # color -- bright white (default)
echo ""
tput rc # Restore saved cursor position.
#-------- TIME --------------------------------------------------------------
tput sc # Save cursor position.
# Move up 9 lines
i=0
while [ $((++i)) -lt 10 ]; do tput cuu1; done
tput cuf $TimeColumn # Move 49 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;36m" # color cyan
printf "$Time"
tput cud1 # Up one line
tput cuf $TimeColumn # Move 49 columns right
done < /tmp/terminal
tput rc # Restore saved cursor position.
exit 0
Voraussetzungen
Für die fantastische Zeitanzeige müssen Sie Folgendes installieren toilet
:
sudo apt install toilet
Für eine andere schicke Zeitanzeige (aber nicht ganz so schick) installieren Sie figlet
:
sudo apt install figlet
Ansonsten wird die Uhrzeit in "normaler" Schrift angezeigt.
Wetter
Das Wetter wird durch den curl wttr.in/cityname?0
Befehl zur Verfügung gestellt. In Ihrem Terminal verwenden Sie: curl wttr.in/:help
für weitere Details.
Wetter: Ändern Sie den Namen der Stadt
Sie möchten diesen Codeabschnitt ändern Edmonton
und den Namen Ihrer Stadt ändern :
# Replace Edmonton with your city name, GPS, etc. See: curl wttr.in/:help
curl wttr.in/Edmonton?0 --silent --max-time 3
# Timeout #. Increase for slow connection---^
Unicode wird für Städtenamen wie /Москва
(Moskau) unterstützt. Flughafenbriefe werden beispielsweise YEG
für Edmonton unterstützt.
Wetter: Ländernamen entfernen
Wenn das Terminal auf eine Breite von 92 Zeichen eingestellt ist, wird das Wetter als "Edmonton, Kanada" angezeigt. Das ist zu lang für meinen Geschmack:
Schlimmer noch, wenn das Terminal auf eine Standardbreite von 80 Zeichen eingestellt ist:
Um das Problem zu umgehen, wird ", Countryname" auf dem Bildschirm mit dem folgenden Code ausgeblendet:
# Depending on length of your city name and country name you will:
# 1. Comment out next three lines of code. Uncomment fourth code line.
# 2. Change subtraction value and set number of print spaces to match
# subtraction value. Then place comment on fourth code line.
Column=$(($DateColumn - 10))
tput cuf $Column # Move x column number
printf " " # Blank out ", country" with x spaces
#tput cuf $DateColumn # Position to column 27 for date display
Wenn Sie Hilfe zu diesem Teil des Skripts benötigen, geben Sie unten einen Kommentar für Unterstützung ein.
Anpassung der Terminal-Bildschirmbreite
Passen Sie den Abstand an die Bildschirmbreite Ihres Terminals an, indem Sie Folgendes ändern:
# Setup for 92 character wide terminal
DateColumn=34 # Default is 27 for 80 character line, 34 for 92 character line
TimeColumn=61 # Default is 49 for " " " " 61 " " " "
Alles zusammenbinden ~/.bashrc
Bearbeiten Sie Ihre ~/.bashrc
Datei und fügen Sie diese Zeilen unten hinzu:
# Splash Calendar and time
now
# ASCII Linux distribution display
screenfetch
Speichern Sie die Änderungen an der Datei `~ / .bashrc".
So zeigen Sie die von Ihnen benötigten Ubuntu-Informationen an screenfetch
:
sudo apt install screenfetch
Es gibt ähnliche Display-Pakete zum screenfetch
Shoppen!
Wenn Sie dieselbe Eingabeaufforderung mit einer Trennlinie zwischen Befehlen wünschen, ändern Sie diese Zeilen:
if [ "$color_prompt" = yes ]; then
PS1='───────────────────────────────────────────────────────────────────────────────────────────
${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='───────────────────────────────────────────────────────────────────────────────────────────
${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
Beachten Sie, dass die Länge der Trennlinie mit der Breite der screenfetch
Ausgabe übereinstimmt . In diesem Fall ist es 92 Zeichen breit und gnome-terminal
die Einstellungen werden entsprechend festgelegt.
man ip
. Benutze den-br
Schalter. Möglicherweise möchten Sie auch den-4
Schalter verwenden. Ihr Befehl kann auf gekürzt werdenip -br a | sed -nE 's:^(\w+)\s+UP\s+([0-9.]+)/.*$:\1 \2:p'
. Noch besser, benutzehostname -I
.WICHTIG für die Verwendung dieses SSH-Banners: Die Tagesmarkierung funktioniert nur mit "ncal -bh> / tmp / terminal" anstelle von "cal -h". cal -h funktioniert / existiert nicht mehr (Ubuntu 18.04)
quelle