web-dev-qa-db-ja.com

Bashプロンプトでチルダ〜を回避する方法は?

PS1変数内の表示からチルダを削除したいと思います。

私の現在のPS1文字列:

PS1="\h:\w\n$"

そして、プロンプトは次のようになります。

lnx-hladky:/tmp/plugtmp
$

$ HOMEディレクトリがチルダとして表示されるのは好きではありません。これを回避できますか?

それは問題を引き起こします、例:

lnx-hladky:~/DOC
$  

ドキュメントによると:

\w : the current working directory, with $HOME abbreviated with a tilde 
\W: the basename of the current working directory, with $HOME abbreviated with a tilde

$ HOMEがチルダで省略されるのを避ける可能性はありますか?

私は1つの方法を見つけましたが、それは複雑すぎるように感じます。

Prompt_COMMAND='echo -ne "\e[4;35m$(date +%T)\e[24m$(whoami)@$(hostname):$(pwd)\e[m\n"'
PS1=$

誰かがより良い解決策を提案できますか?プロンプトを表示するためだけに多くのコマンドを実行するのは、まったく問題がないように感じます。 (date、whoami、hostname、pwd)。

12
Jirka

bashはプロンプトで拡張を実行します。必ず逃げてください。

PS1='\h:$(pwd)\n$'

例で示したほど多くのコマンドを実行する必要はありません。 bashは、あなたが言及したほとんどのことへのショートカットを提供します。

あなたの例:

Prompt_COMMAND='echo -ne "\e[4;35m$(date +%T)\e[24m$(whoami)@$(hostname):$(pwd)\e[m\n"'
PS1=$

次のように書き直すことができます:

PS1='\e[4;35m\t\e[24m\u@\h:\w\e[m\n'

\tは時刻(24時間形式)を示し、\uは現在のユーザー名を示し、 '\ h'はホスト名を示します--bashのマニュアルページで説明されています これら残りのエスケープは利用可能です プロンプト用。

~をフルパスに展開しても、コマンドを実行しているユーザーがわからず、ユーザーを定期的に切り替えると、ファイルのアクセス許可または実行可能アクセス許可に問題が発生する可能性があります。

0
Doug Harris

.bash_profileファイルで以下の設定を使用しています

$ export PS1='\e[1;34m\D{%T %d.%m.%Y} \[\033[00;39m\]\u\[\033[00;32m\]@$IP:\[\033[00;33m\]$(pwd)/\n\\$\[\033[00m\] '

21:40:08 14.12.2017 [email protected]:/home/vmware/Downloads/