Gönderen Ubuntu Ask :
Kontrol Ask Ubuntu diğer kullanıcılardan yorum ve muhtemelen yeni cevaplar için yukarıdaki bağlantıyı.
now
bash betiği
Ağır kaldırma bunu gösteren sıçrama bileşenidir:
$ 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
Evet gerçekten Edmonton'da -14 ve -23 gibi hissediyor. Uzun hafta sonunu içeride yeni gelen Tomb Raider 2013'ü oynayarak geçirmenin tam zamanı! Belki Vancouver veya Montreal’e gitmek için bu özgeçmişi tadabilirsin.
İşte kod:
#!/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
Ön şartlar
Fantezi zaman göstergesi için yüklemeniz gerekir toilet
:
sudo apt install toilet
Başka bir fantezi zaman göstergesi için (ancak fantezi kadar değil) kurun figlet
:
sudo apt install figlet
Aksi halde saat "normal" fontta gösterilecektir.
Hava
Hava curl wttr.in/cityname?0
komutu tarafından sağlanır . Terminal kullanımınızda: curl wttr.in/:help
ek ayrıntılar için.
Hava: Şehir adını değiştir
Bu kod bölümünü değiştirmek Edmonton
ve şehir adınızı değiştirmek isteyeceksiniz :
# 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 /Москва
(Moskova) gibi şehir isimleri için desteklenir . YEG
Edmonton gibi havaalanı mektupları desteklenmektedir .
Hava Durumu: Ülke adını kaldır
Terminal 92 karakter genişliğinde ayarlandığında, hava durumu "Edmonton, Kanada" olarak görüntülenir. beğenim için çok uzun:
Terminal varsayılan 80 karakter genişliğinde ayarlandığında daha da kötüsü:
Sorunu gidermek için, ", Ülke Adı" bu kodla ekranda boşluk bırakılır:
# 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
Eğer betiğin bu kısmı ile ilgili yardıma ihtiyacınız olursa, lütfen yardım için aşağıya yorum yazınız.
Terminal ekranı genişlik ayarları
Değiştirerek boşluğu terminal ekranı genişliğinize ayarlayın:
# 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 " " " "
Hepsini birlikte bağlama ~/.bashrc
Senin düzenleyin ~/.bashrc
altına şu satırları dosyası ve ekleyin:
# Splash Calendar and time
now
# ASCII Linux distribution display
screenfetch
`~ / .Bashrc" dosya değişikliklerini kaydedin.
Gereken Ubuntu bilgisini görüntülemek için screenfetch
:
sudo apt install screenfetch
Etrafta screenfetch
alışveriş yapmak için benzer ekran paketleri var!
Aynı komut istemini "─────────" ile komutlar arasında satır bölen komut istemini istiyorsanız, aşağıdaki satırları değiştirin:
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
Ayırıcı çizginin uzunluğunun, screenfetch
çıktı genişliğiyle çakıştığını unutmayın . Bu durumda 92 karakter genişliğinde ve gnome-terminal
tercihler buna göre belirlenir.
man ip
. Düğmesini kullanın-br
. Ayrıca-4
anahtarı kullanmak isteyebilirsiniz . Emriniz kısaltılabilirip -br a | sed -nE 's:^(\w+)\s+UP\s+([0-9.]+)/.*$:\1 \2:p'
. Daha da iyisi, kullanhostname -I
.