[解決済み] 最後の終了コードを表示するBashプロンプト
2023-05-13 21:36:16
質問
Bashプロンプトをカスタマイズして、次のように表示されるようにしようとしています。
[feralin@localhost ~]$ _
色で 一定の色(プロンプトを見るたびに同じ色)を得ることに成功しましたが、最後のコマンドがゼロ以外の終了状態であった場合、ユーザー名('feralin')を緑ではなく、赤で表示したいのです。私は思いつきました。
\e[1;33m[$(if [[ $? == 0 ]]; then echo "\e[0;31m"; else echo "\e[0;32m"; fi)\u\e[m@\e[1;34m\h \e[0;35m\W\e[1;33m]$ \e[m
しかし、私の観測では
$(if ...; fi)
は一度だけ評価されるようで、そのときに
.bashrc
が実行されたときに一度だけ評価され、 その後はずっとその結果が代入されるようです。このため、最後の終了コードが0以外であっても、名前は常に緑色になります(このように
echo $?
). これは何が起こっているのでしょうか?それとも、単に私のプロンプトに何か他の問題があるのでしょうか?長い質問を短く
どのように私は私のプロンプトが最後の終了コードを使用するようになりますか?
どのように解決するのですか?
複雑な境界線になりつつあるため
PS1
を使うことを考えるかもしれません。
PROMPT_COMMAND
. これを使うと、関数に設定することで、各コマンドの後に実行され、プロンプトが生成されます。
で以下を試すことができます。
~/.bashrc
ファイルに記述します。
PROMPT_COMMAND=__prompt_command # Function to generate PS1 after CMDs
__prompt_command() {
local EXIT="$?" # This needs to be first
PS1=""
local RCol='\[\e[0m\]'
local Red='\[\e[0;31m\]'
local Gre='\[\e[0;32m\]'
local BYel='\[\e[1;33m\]'
local BBlu='\[\e[1;34m\]'
local Pur='\[\e[0;35m\]'
if [ $EXIT != 0 ]; then
PS1+="${Red}\u${RCol}" # Add red if exit code non 0
else
PS1+="${Gre}\u${RCol}"
fi
PS1+="${RCol}@${BBlu}\h ${Pur}\W${BYel}$ ${RCol}"
}
これで、あなたが望むようなことができるはずです。私の
bashrc
's
サブファイル
でやっていることを全部見たいなら、私の
__prompt_command
関数で行うすべてのことを見ることができます。
関連
-
Vmware 16仮想マシンを開けない場合、ファイルをローカルにコピーする方法は?
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashでコマンドの出力に変数を設定するにはどうすればよいですか?
-
[解決済み] あるディレクトリにあるすべてのコード行を再帰的にカウントするにはどうすればよいですか?
-
[解決済み] Bashでファイルの中身をループする
-
[解決済み] Bashで標準出力と標準エラーの両方をファイルにリダイレクトして追記する方法
-
[解決済み] 好ましいBashのシェバングとは?
-
[解決済み] Unix/Linuxで、ファイルのあるフォルダを別のフォルダにコピーするにはどうしたらいいですか?[クローズド]
-
[解決済み] Bashスクリプトで、ある条件が発生したらスクリプト全体を終了させるにはどうしたらいいですか?
-
[解決済み】Bashスクリプトでクリップボードにパイプを接続する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
virtualboxが仮想マシンを開けない場合は?linuxがvirtualboxにアクセスできない時の解決策
-
Linuxのデスクトップの背景を画像で引き伸ばし表示にする方法とは?
-
deepin depth systemはどのような内容でアップデートされましたか?deepinの最新版アップデート内容まとめ
-
Kali Linuxのマウスを左利き用に設定する方法は?Linuxマウス左利き操作選択方法
-
deepin20のデフォルトブラウザを設定するには?deepinにデフォルトブラウザを追加するためのヒント
-
Process.waitFor()の戻り値の意味するところ
-
[解決済み] CPAN.pmが@INCに見つからない(@INCには含まれています。/usr/local/lib/perl5 /usr/local/share/perl5。
-
[解決済み] Linuxでファイルをシンボリックリンクするには?[クローズド]
-
[解決済み] 出力をファイルや標準出力にリダイレクトする方法
-
[解決済み] どのバージョンのPostgreSQLを使用していますか?