Da Ask Ubuntu :
Controlla il link Ask Ubuntu sopra per commenti e possibilmente nuove risposte da altri utenti.
now
script bash
Il sollevamento pesante è il componente splash che mostra questo:
$ 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
Sì, è davvero -14 a Edmonton e sembra -23. Un buon momento per trascorrere il lungo weekend all'interno giocando al Tomb Raider 2013 appena arrivato! Forse rispolverare quel curriculum per trasferirsi a Vancouver o Montreal ...
Ecco il codice:
#!/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
Prerequisiti
Per la visualizzazione del tempo di fantasia è necessario installare toilet
:
sudo apt install toilet
Per un'altra visualizzazione dell'ora di fantasia (ma non altrettanto di fantasia) installare figlet
:
sudo apt install figlet
Altrimenti l'ora verrà visualizzata in caratteri "normali".
Tempo metereologico
Il tempo è fornito dal curl wttr.in/cityname?0
comando. Nel terminale utilizzare: curl wttr.in/:help
per ulteriori dettagli.
Meteo: cambia il nome della città
Ti consigliamo di modificare questa sezione di codice e cambiare Edmonton
il nome della tua città:
# 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 è supportato per nomi di città come /Москва
(Mosca). Sono supportate le lettere degli aeroporti come quelle YEG
di Edmonton.
Meteo: rimuovere il nome del paese
Quando il terminale è impostato per una larghezza di 92 caratteri, il tempo viene visualizzato come "Edmonton, Canada". che è troppo lungo per i miei gusti:
Peggio ancora quando il terminale è impostato su 80 caratteri di default:
Per aggirare il problema, ", Countryname" viene oscurato sullo schermo con questo codice:
# 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
Se hai bisogno di aiuto con questa parte dello script, pubblica un commento qui sotto per assistenza.
Regolazioni della larghezza dello schermo del terminale
Regola la spaziatura in base alla larghezza dello schermo del terminale modificando:
# 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 " " " "
Legare tutto insieme ~/.bashrc
Modifica il tuo ~/.bashrc
file e aggiungi queste righe in fondo:
# Splash Calendar and time
now
# ASCII Linux distribution display
screenfetch
Salva le modifiche al file `~ / .bashrc".
Per visualizzare le informazioni di Ubuntu è necessario screenfetch
:
sudo apt install screenfetch
Ci sono pacchetti di visualizzazione simili per screenfetch
guardarsi intorno!
Se si desidera lo stesso prompt dei comandi con "─────────" che divide la riga tra i comandi, modificare queste righe:
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
Notare che la lunghezza della linea di separazione coincide con la larghezza screenfetch
dell'output. In questo caso è largo 92 caratteri e le gnome-terminal
preferenze sono impostate di conseguenza.
man ip
. Usa l'-br
interruttore. Potresti anche voler usare l'-4
interruttore. Il tuo comando può essere abbreviato inip -br a | sed -nE 's:^(\w+)\s+UP\s+([0-9.]+)/.*$:\1 \2:p'
. Ancora meglio, usahostname -I
.