シェルスクリプトmyPrompt.shが与えられたら:
#!/bin/bash
printf "Llama \001\360\002\001\237\002\001\255\002\254 Llama $> "
...そしてbashプロンプトは上記のスクリプトを実行するように設定されています。
alias myPrompt="/home/you/myPrompt.sh"
PS1="\$(myPrompt)"
上記のシナリオでは、関数は[を使用して実行され、出力を生成します。
答え1
\[
シェルは、プロンプトを処理するときにプロンプトの幅がゼロの部分をコメントアウトするなどの操作を実行するときにいくつかのシーケンス(たとえば、および)を使用しますが、これらの文字は直接印刷するとこのように解釈されません。\]
私は驚き、あなたが気づいた方法で\001
動作します\002
。しかし、それはあなたが使用する文字エンコーディングとより関連性があるかもしれませんか?
とにかく、何かを印刷して設定せずにプロンプトでどのように見えるかを確認するには、bashの変数拡張P
に(プロンプト用)演算子を使用できます。
SOME_PROMPT_STRING="\u@\h:\W\$"
echo "${SOME_PROMPT_STRING@P}"