Bashプロンプトの設定

Bashプロンプトの設定

最近Parrot Linuxに切り替えましたが、とても満足しています。しかし、1つのことは、この基本的なクールなbashプロンプトが本当に見苦しいということです。私は以前zshを使ったことがあり、何らかの理由でbashに戻りたいのですが、zshと同じプロンプト「テーマ」を取得したいと思います。これは非常に冷静です。

zsh「ビリンネ」テーマ

特に、パス内のディレクトリ名の最初の文字のみを表示する方法が好きです(現在のディレクトリを除く)。

私は.bashrcでこれを書く方法を探していましたが、何も見つかりませんでした。

ベストアンサー1

たくさん借りるDenis Karlsmakerの答え:

PROMPT_COMMAND='_abbrev_pwd=$(sed -e "s:$HOME:~:" -e "s:/\(.\)[^/]*:/\1:g" <<< "$(dirname "$PWD")")/"$(basename "$PWD")"'
PS1='\u@\h ${_abbrev_pwd}> '

PROMPT_COMMAND変数は特殊bash変数このコマンドは、プロンプトが印刷されるたびに実行されます。ここのコードは、_abbrev_pwd次の要素に関連付けられた変数を設定します。

  • sedコマンドの出力:$(sed -e ... <<< ...)
  • スラッシュ/
  • 「現在のディレクトリ:$(basename "$PWD")

sedコマンド自体は、ここにある文字列を入力として使用します。ここにある文字列は、dirname "$PWD"現在のディレクトリを削除するための呼び出しの結果です。これにより、文字列は2つの置換を受けます(-esedオプションで指定)。

  1. "$HOME"ディレクトリの外観をチルダに置き換えます。
  2. すべてのパス要素(スラッシュ、キャプチャされた単一文字.、任意の数の非順方向スラッシュ)を、スラッシュの後に対応する(キャプチャされた)単一文字に置き換えます。 「global」フラグを使用してこのパターンマッチングを繰り返しますg。私は避けるために、共通ではなく検索と置換の区切り文字:として使用します。sed/傾いたつまようじ症候群脱出しよう欲しいスラッシュ。

_abbrev_pwd最後に、通常のバッチを使用するようにPS1を設定します$PWD

おすすめ記事