bash プロンプト: 行末に現在のディレクトリを表示する

bash プロンプト: 行末に現在のディレクトリを表示する

bashプロンプトに何かを表示する方法終わり行の (カーソルは通常どおり同じ行の先頭に配置されます)? 具体的には、$やなどの短縮された 1 文字プロンプトを表示し>、その後にコマンドを入力できるようにしたいのですが、行の末尾で現在の作業ディレクトリを確認できるようにしたいのですが、これは「目の前に」表示されてしまうためです。

非常に長いコマンドを入力したときに何が起こるかは気にしません。現在の作業ディレクトリや、プロンプトに表示されているその他の内容を上書きする可能性があります。

あるいは、プロンプトによって現在の作業ディレクトリが画面の右上、左上、または右下/左下に表示されるかどうかは気にしません。常に目の前に表示されたくないのですが、見えるようにしておきたいのです。

答え1

PS1 を、プロンプト ラインの最後に現在のパスを出力するように設定できました。

PS1='\[$(for ((i=1; i < COLUMNS - ${#PWD} - 3; ++i)) ; do printf " " ; done ; printf "$PWD")\]'

しかし、解決できなかった問題がいくつかあります。

  1. 押すとパスが消えますBackspace
  2. 式全体がゼロ幅マーカーで囲まれているにもかかわらず、または\[...\]も印刷すると、カーソルは右端に移動します。$>

パスを表示するために insteadを使用している人を見たことがありますPROMPT_COMMAND=pwdが、これによりターミナル内のコマンドを含む行数が減ります。

別の方法としては、ターミナルまたは screen/tmux を設定してパスをどこかに表示することもできます。たとえば、xterm では次のように動作します。

PS1='\[\e[m\e]0;\W\a\]$ '

シーケンスは\e[m\e]0;...\aウィンドウのタイトルを設定します。画面では です "\033k\033\0134\033kTITLE\033\0134"

関連情報