Bashプロンプトに現在のディレクトリと親ディレクトリのみを表示する

Bashプロンプトに現在のディレクトリと親ディレクトリのみを表示する

私は初めてbashに触れ、私のプロンプトがtcshでマイナーなものを見せることを望みましたが、良いGoogle検索の後でもまだできません。

次のように、プロンプトに現在のディレクトリと親ディレクトリのみを含めたいと思います。

/parent/currentdir $

tcsh では、次のことでこれを実現します。

set prompt = "%C2 %"

しかし、これまでbashは、同じ出力を得るためにpwdを解析する必要があるという事実だけを見つけました。

次のような簡単な方法はありませんか?

export PS1="$(some_command) $" 

答え1

バッシュタイムリーな制御特性はかなり静的です。さらに制御したい場合は、プロンプトに変数を含めることができます。promptvarsオプション

PS1='${PWD#"${PWD%/*/*}/"} \$ '

一重引用符に注意してください。変数拡張は、PS1変数が定義されるのではなく、プロンプトが表示されたときに発生する必要があります。

表示される内容をより細かく制御するには、コマンド置換を使用できます。たとえば、上記のコードスニペットには~ホームディレクトリの略語はありません。

PS1='$(case $PWD in
        $HOME) HPWD="~";;
        $HOME/*/*) HPWD="${PWD#"${PWD%/*/*}/"}";;
        $HOME/*) HPWD="~/${PWD##*/}";;
        /*/*/*) HPWD="${PWD#"${PWD%/*/*}/"}";;
        *) HPWD="$PWD";;
      esac; printf %s "$HPWD") \$ '

このコードは非常に面倒なので、PS1次のように使用できます。PROMPT_COMMAND変えるコードを実行して設定し、HPWDプロンプトで使用します。

PROMPT_COMMAND='case $PWD in
        $HOME) HPWD="~";;
        $HOME/*/*) HPWD="${PWD#"${PWD%/*/*}/"}";;
        $HOME/*) HPWD="~/${PWD##*/}";;
        /*/*/*) HPWD="${PWD#"${PWD%/*/*}/"}";;
        *) HPWD="$PWD";;
      esac'
PS1='$HPWD \$'

短縮プロンプトはディレクトリが変更されたときにのみ変更されるため、プロンプトが表示されるたびに再計算する必要はありません。 Bashは現在のディレクトリが変更されたときに実行されるフックを提供しませんが、次のことができます。シミュレーションしてみてください書き直し、cdそのいとこ。

cd () { builtin cd "$@" && chpwd; }
pushd () { builtin pushd "$@" && chpwd; }
popd () { builtin popd "$@" && chpwd; }
chpwd () {
  case $PWD in
    $HOME) HPWD="~";;
    $HOME/*/*) HPWD="${PWD#"${PWD%/*/*}/"}";;
    $HOME/*) HPWD="~/${PWD##*/}";;
    /*/*/*) HPWD="${PWD#"${PWD%/*/*}/"}";;
    *) HPWD="$PWD";;
  esac
}
PS1='$HPWD \$'

PS1環境変数ではなくシェル設定なので、エクスポートする必要もなく、エクスポートしないでください。PS1他のシェルは bash 設定を理解できません。

PS良いインタラクティブシェル体験をしたい場合は、次のように切り替えてください。扱いにくい、すべて(プロンプト%拡張には主にtcshchpwdなどが含まれます)基本機能です。

PS1='%2~ %# '

答え2

設定はPROMPT_DIRTRIM=2必要なものでなければなりません。

答え3

bashプロンプト文字列は、シェル変数を編集することで簡単に変更できますPS1。プロンプト文字列 1 を示します。追加情報ここ

ではbash、シェルを起動します。

vi ~/.bashrc

PS1定義をファイルに追加

`export PS1="$(basename $(dirname $PWD))/$(basename $PWD)"`

その他のチュートリアルここそしてここ、さらに調整するのに役立ちます。

答え4

export PROMPT_DIRTRIM=2bashファイルに追加すると、最新バージョンのbash(v. 4+)に対してこれが行われます。特に、これは環境変数\wの項目の外観をフルパスPS1から最後の2つの項目に変更します。

最終結果は次のとおりです。../Documents/MyFolder

関連情報