จากถาม Ubuntu :
ตรวจสอบลิงก์ถาม Ubuntuด้านบนเพื่อรับฟังความคิดเห็นและคำตอบใหม่ ๆ จากผู้ใช้รายอื่น
now
สคริปต์ทุบตี
การยกของหนักเป็นส่วนประกอบของสแปลชที่แสดงสิ่งนี้:
$ 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
ใช่มันคือ -14 ในเอดมันตันและรู้สึกเหมือน -23 ช่วงเวลาที่ดีในการใช้ช่วงวันหยุดยาวในการเล่น Tomb Raider 2013 ที่เพิ่งมาถึง! อาจจะรีบไปหา Resume เพื่อย้ายไปแวนคูเวอร์หรือมอนทรีออล ...
นี่คือรหัส:
#!/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
ข้อกำหนดเบื้องต้น
สำหรับการแสดงเวลาแฟนซีคุณต้องติดตั้งtoilet
:
sudo apt install toilet
สำหรับการแสดงเวลาแฟนซีอื่น (แต่ไม่ได้ค่อนข้างแฟนซี) ติดตั้งfiglet
:
sudo apt install figlet
มิฉะนั้นเวลาจะปรากฏในแบบอักษร "ปกติ"
สภาพอากาศ
curl wttr.in/cityname?0
คำสั่งให้สภาพอากาศ ในการใช้ terminal ของคุณ: curl wttr.in/:help
สำหรับรายละเอียดเพิ่มเติม
สภาพอากาศ: เปลี่ยนชื่อเมือง
คุณจะต้องแก้ไขส่วนของรหัสนี้และเปลี่ยนEdmonton
เป็นชื่อเมืองของคุณ:
# 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 ได้รับการสนับสนุนสำหรับชื่อเมืองเช่น/Москва
(มอสโก) รองรับตัวอักษรของสนามบินเช่นYEG
Edmonton
สภาพอากาศ: ลบชื่อประเทศ
เมื่อเทอร์มินัลถูกตั้งค่าสำหรับความกว้าง 92 ตัวอักษรสภาพอากาศจะแสดงเป็น "Edmonton, Canada" ซึ่งยาวเกินไปสำหรับความชอบของฉัน:
ที่แย่กว่านั้นเมื่อตั้งค่าเทอร์มินัลสำหรับความกว้าง 80 อักขระเริ่มต้น:
หากต้องการหลีกเลี่ยงปัญหา ", ชื่อประเทศ" จะถูกทำให้ว่างบนหน้าจอด้วยรหัสนี้:
# 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
หากคุณต้องการความช่วยเหลือในส่วนนี้ของสคริปต์กรุณาโพสต์ความคิดเห็นด้านล่างเพื่อขอความช่วยเหลือ
การปรับความกว้างหน้าจอเทอร์มินัล
ปรับระยะห่างให้เป็นความกว้างหน้าจอเทอร์มินัลของคุณโดยการเปลี่ยน:
# 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 " " " "
ผูกมันทั้งหมดเข้าด้วยกันค่ะ ~/.bashrc
แก้ไข~/.bashrc
ไฟล์ของคุณและเพิ่มบรรทัดเหล่านี้ที่ด้านล่าง:
# Splash Calendar and time
now
# ASCII Linux distribution display
screenfetch
บันทึกการเปลี่ยนแปลงไฟล์ `~ / .bashrc"
ในการแสดงข้อมูล Ubuntu ที่คุณต้องการscreenfetch
:
sudo apt install screenfetch
มีแพ็คเกจการแสดงผลที่คล้ายกันเพื่อscreenfetch
ให้ช็อปรอบ ๆ !
หากคุณต้องการให้พรอมต์คำสั่งเดียวกันกับ "─────────" แบ่งบรรทัดระหว่างคำสั่งเปลี่ยนบรรทัดเหล่านี้:
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
สังเกตความยาวของเส้นคั่นตรงกับความกว้างของscreenfetch
เอาต์พุต ในกรณีนี้มีความกว้าง 92 ตัวอักษรและgnome-terminal
มีการตั้งค่าตามความชอบ
man ip
. ใช้-br
สวิตช์ คุณอาจต้องการใช้-4
สวิตช์ip -br a | sed -nE 's:^(\w+)\s+UP\s+([0-9.]+)/.*$:\1 \2:p'
คำสั่งของคุณจะสั้นลงไปhostname -I
ยิ่งไปกว่านั้นการใช้งาน