ターミナルエスケープコードを含むDebianのシェル変数の内容をそのまま見たいです。echo
内容を確認しようとすると、すべての端末エスケープが端末によって解釈され、色が表示されます。
➜ sds git:(master) echo $PS1
%(?:%{%}➜ :%{%}➜ ) %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)
シェル変数の内容をそのまま印刷できますか?それとも、内容をそのまま表示するには、変数を設定する正確なスクリプトを見つける必要がありますか?
ベストアンサー1
ようにテルドン と言う、他の変数の値を使用して変数を設定した場合、その変数の元の設定を元に戻すことはできません。
しかし、少なくともBashとZshでは、端末やシェル自体で解釈されていない内容を見ることができます。
printf '%q\n' "$PS1"
これにより、他の効果を持つすべての文字がエスケープされます。これを使用して、逐語的な内容を再構成できます。
別のアプローチは、変数の内容を端末以外の場所に(直接)出力することです。
printf %s "$PS1" | od -vtc
変数の内容を文字単位で表示し、制御文字をニーモニック(、、nl
... )に置き換えます。esc
sp
する〜いいえecho
シーケンスを展開し\x
て改行を追加するには、ここを使用してください。
あなたの場合
%(?:%{%}➜ :%{%}➜ ) %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)
変数の逐語的内容である可能性がありますPS1
。端末で解釈されたエスケープがなく、オプションが設定されていると仮定すると、プロンプトを表示するために使用されるときに拡張されます。しかし、拡張されたときはそうではありません。fg
reset_color
promptsubst
PS1
echo $PS1