編集する

編集する

一部のスクリーンショット(Webのどこにあるのか覚えていません)では、端末が太字で表示されることがある[username@machine /]$ことがわかりました。私はいつも長い出力をスクロールし、コマンドの後の最初の行を見つけるのが難しいので、これも得ることを期待しました。

ユーザー名などを太字で表示したり色を指定したりするにはどうすればよいですか?

ベストアンサー1

PS1yourで設定されている場所を見つけて、始めと終わりに挿入します.bashrc'\[\e[1m\]'\[\e[0m\]

  • \[\]内部クラッタが画面上のゼロスペースを占めていることをシェルが認識できるようにするために必要です。これについて心配する必要はありません。
  • \e[CSI(Control Sequence Introducer)とも呼ばれます。参照されているWikipediaのページにリストされているほとんどのコードで使用されていることがわかります。\e エスケープ文字を表します。
  • ウィキペディアページのSGRテーブルを見ると、1は明るい/太字のテキストで表示され、0はリセット数であることがわかります。したがって、CSI 1m太字を有効にしてCSI 0mフォントをリセットして、残りのテキストが正常に見えるようにします。

Wikipediaには完全な内容があります。ANSIエスケープコードリスト端末エミュレータがサポートしている場合に使用できます。

編集する

tput移植性と読みやすさのために、ハードコーディングではなくエスケープコードを使用する必要があります。唯一の欠点は、tputANSIコードをサポートしていますが、terminfoデータベースが破損または欠落している端末ではこの方法が機能しないことです。ただし、この場合、terminfoに依存する多くのコンソールアプリケーションが正しく機能しない可能性があるため、破損したterminfoがより大きな問題です。働く

以下は私が行った操作の例です.bashrc

# color names for readibility
reset=$(tput sgr0)
bold=$(tput bold)
black=$(tput setaf 0)
red=$(tput setaf 1)
green=$(tput setaf 2)
yellow=$(tput setaf 3)
blue=$(tput setaf 4)
magenta=$(tput setaf 5)
cyan=$(tput setaf 6)
white=$(tput setaf 7)
user_color=$green
[ "$UID" -eq 0 ] && { user_color=$red; }
PS1="\[$reset\][\[$cyan\]\A\[$reset\]]\[$user_color\]\u@\h(\l)\
\[$white\]:\[$blue\]\W\[$reset\][\[$yellow\]\$?\[$reset\]]\[$white\]\
\\$\[$reset\] "

これが私の一般的なバージョンの外観です。0最後のコマンドの終了状態です。

PS1スクリーンショット

おすすめ記事