终端启动画面有天气,日历,时间和Sysinfo?

我在Windows 10终端启动画面下看到了一个Ubuntu Bash: 用于Linux的Windows子系统显示Linux发行版?

WSL Bash屏幕

如何更改我的~/.bashrc以在常规Ubuntu中获得类似的启动屏幕,如下所示:

终端启动画面

now bash脚本

注意: 2018年4月28日更新为Ubuntu 18.04 LTS

重物是飞溅组件,显示了这一点:

 $ 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。 这是一个度过漫长周末的好时机,可以玩新近到来的古墓丽影2013! 也许刷上那个简历来搬到温哥华或蒙特利尔……

这是代码:

 #!/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: Apr 28, 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: https://askubuntu.com/questions/1013954/bash-substring-stringoffsetlength-error/1013960#1013960 cal > /tmp/terminal1 # -h not supported in Ubuntu 18.04. Use second answer: https://askubuntu.com/a/1028566/307523 tr -cd '\11\12\15\40\60-\136\140-\176' < /tmp/terminal1 > /tmp/terminal CalLineCnt=1 Today=$(date +"%e") 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 

保存`〜/ .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首选项。