1

次のリストからランダムな値を 1 つ選択するカスタム プロンプトを作成しようとしています。

color=(1 2 3 4 5 6)
much=(such very much many so)
wow=(wow hacker terminal geek confusion)

次に、すべてのプロンプトの前にこれを行います。

tput setaf $rcolor
echo -n "$rmuch $rwow $ "

問題は、私が使用するPS1と、端末の起動時に実行され、すべてのプロンプトの前に更新されないことです。すべてのプロンプトの前に、別のランダムなメッセージを取得するにはどうすればよいですか?

出力例:

such hacker $
much wow $
very geek $
such wow $
much confusion $
very terminal $
4

2 に答える 2

2

次をエスケープする必要があります$

PS1="\$(tput setaf \${color[\$RANDOM%6]})\${much[\$RANDOM%5]} \${wow[\$RANDOM%5]}: "

PS1が出力されるたびに評価されます。

于 2015-10-24T06:10:53.267 に答える
0

trap同様に使用できます:

much=(such very much many so)
wow=(wow hacker terminal geek confusion)
max=${#much[@]}
trap 'PS1="${much[$((RANDOM % max))]} ${wow[$((RANDOM % max))]} $ "' DEBUG

出力:

much confusion $
such terminal $
such confusion $
such geek $
so terminal $
very confusion $
such geek $
such terminal $
much terminal $
many geek $
于 2015-10-24T06:14:50.823 に答える