プロンプト(.bashrc
)ですが、最初にログインしたときに表示される初期設定を変更しようとしています。EC2インスタンスでは、ログインすると次のようになります。
__| __|_ ) Fedora 8
_| ( / 32-bit
___|\___|___|
Welcome to:
Wowza Media Server 2 for Amazon EC2
Version: 2.0.0.08
自宅のMintコンピュータで、ログインすると次のようになります。
Welcome to Linux Mint 11 Katya (GNU/Linux 2.6.38-8-generic x86_64)
Welcome to Linux Mint
* Documentation: http://www.linuxmint.com
Last login: Tue Jun 21 17:44:05 2011
これはどこで定義されていますか?どうすればマッドに微調整できますかASCII art [〜#〜] action [〜#〜]?
ログインプロンプトの前に表示されるテキストは/etc/issue
に格納されます(ユーザーがログインした後、シェルが起動する前に表示される関連ファイル/etc/motd
があります)。これは通常のテキストファイルですが、一連のエスケープシーケンスを受け入れます。
\b
-現在の回線のボーレート。\d
-現在の日付。\s
-システム名、オペレーティングシステムの名前。\l
-現在のtty回線の名前。\m
-マシンのアーキテクチャ識別子。 i486\n
-マシンのノード名。ホスト名とも呼ばれます。\o
-マシンのドメイン名。\r
-OSのリリース番号。 1.1.9。\t
-現在の時刻。\u
-現在ログインしているユーザーの数。\U
-文字列 "1 user"または "users"ここで、は現在ログインしているユーザーの数です。\v
-OSのバージョン。ビルド日など.私のマシンでは:
これは\ n(\ s\m\r)\ t\l
これは次のようにレンダリングされます:
これはetudes-1(Linux x86_64 2.6.39-gentoo)17:43:10 tty1です。
OPは、ログイン後に表示されるメッセージについて明確に尋ねています。ログイン+パスワードが入力される前にすべての「/ etc/issue」が表示されるため、トピックから外れています。
「ログインシェル」の手順は次のとおりです。
/etc/issue
_に含まれるメッセージを表示表示その日のメッセージから:
_/etc/motd
_
_/etc/update-motd.d
_
開始_/etc/profile
_および_~/.bash_profile
_
NB .bashrcは非ログインシェルに対して実行されます。
@Naftuli Kayは、あなたのASCIIアートを_/etc/motd
_に追加します。_/etc/update-motd.d
_にスクリプトを追加することもできます。ユーザーに依存しない印刷の場合、スクリプトは_/etc/profile
_に移動できます。 _~/.bash_profile
_(シングルユーザープリントの場合)
ファイル /etc/issue
および/etc/issue.net
は、ログインプログラムによって表示されるファイルです。他の回答に記載されているように、特別な拡張文字を入れることができます。しかし、 linux_logo プログラムを試してみることもできます。それはあなたのために本当に素晴らしいASCIIアート問題ファイルを生成することができます。
から Ask Ubunt :
上記のAsk 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のように感じます。新着のトゥームレイダー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: https://askubuntu.com/questions/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
プリファレンスが設定されます。
ログイン中にメッセージを表示するようにsshデーモンを構成することもできます。 sshd_configファイルのBannerディレクティブで表示するファイルを指定します。
Banner /etc/ssh/ssh_banner
ファイル名は任意のファイルにすることができますが、健全性のために、sshd_configファイルとともに/ etc/sshに保存します。
このsshバナーを使用するための重要:日の強調表示は、cal -hではなく「ncal -bh>/tmp/terminal」でのみ機能します。 cal -hが機能しない/存在しない(Ubuntu 18.04)
Debian Hostの/etc/rc.localにネットワークアドレスを持つ/ etc/issueを生成する1つの小さなスクリプト。
/bin/echo "This is \n(\s \m \r) \t \l">/etc/issue
/bin/sleep 10 # This is optional, sometimes OS need more time to get ip address while DHCP, otherwise maybe you will get nothing :(
/sbin/ip a| /bin/grep inet| /bin/grep -v -E "inet6|127.0.0.1"| /bin/sed "s/\s*//"|/bin/sed "s/\/24.*//" >>/etc/issue
更新:「ip -4 -br a」で十分だと思います。ありがとう@Mathieu CAROFF!