Ask Ubuntuから:
他のユーザーからのコメントや新しい回答については、上記のUbuntuに尋ねるリンクを確認してください。
now
bashスクリプト
重荷はこれを示すスプラッシュコンポーネントです。
$ 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をプレイして、週末を過ごすのに良い時間です!たぶんその履歴書をブラッシュアップしてバンクーバーまたはモントリオールに移動する...
コードは次のとおりです。
#!/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
コマンドによって提供されます。端末での使用: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
エドモントンなどの空港レターがサポートされています。
天気:国名を削除
端末の幅が92文字に設定されている場合、天気は「カナダエドモントン」と表示されます。私の好みには長すぎます:
さらに悪いことに、端末がデフォルトの80文字幅に設定されている場合:
問題を回避するために、次のコードを使用して、画面上の「、Countryname」を空白にします。
# 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
です。