私はPS1プロンプトをカスタマイズし、現在のディレクトリを含めるのが好きです。
時間、ユーザー、gitブランチなどの他のプロジェクトがいくつかあります。
しかし、問題の1つは、現在のディレクトリが/home/durrantmm/Dropnot/webs/rails_apps/linker/app/views
多すぎるレベルの「深い」ケースです。 (しかし、とにかくPS1プロンプトの設定の終わりにEnterキーを押すと、実際の$が左に戻りましたが、ここでは問題になりません。)
だから解決策があります。位置部分にこれを使用してください。
LOCATION='\033[01;34m\]`pwd | sed "s#\(/[^/]\+/[^/]\+/[^/]\+/\).*\(/[^/]\+/[^/]\+\)/\?#\1_\2#g"`'
きれいではありませんが、操作を実行してから、他のもの(表示されていない、ここでは不要)と組み合わせて、ディレクトリの「最初の3つのレベル_最後の2つのレベル」を取得します。
残念ながら、私のMacではsed部分は機能しませんが、次のようになります。
[これは実際に私のLinuxコンピュータからのものです。気になるケースに備えて、私のMacでどのように見えるかを示すために偽にしました。
3_2
Macで現在のディレクトリの形式を取得する方法は?
答え1
コマンドの部分と部分は\+
GNU拡張です。 POSIX 互換性は、単に拡張正規表現のこの側面を使用することはできません。代わりにとを使用できます。この試み:\?
sed
sed
\{1,\}
\{0,1\}
LOCATION='\033[01;34m\]`pwd |
sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1_\2#g"`'
これについて詳しくは、以下をご覧ください -http://pubs.opengroup.org/onlinepubs/009696699/utilities/sed.htmlそしてhttp://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap09.html。
sed
または、.OSXを使用してOSXで拡張正規表現を有効にすることもできます-E
。これにより、次のことができます。
LOCATION='\033[01;34m\]`pwd |
sed -E "s#\(/[^/]+/[^/]+/[^/]+/\).*\(/[^/]+/[^/]+\)/?#\1_\2#g"`'
ただし、これはGNU sed
(-r
使用される)では機能しません。 POSIXソリューションを使用すると、より良い移植性が得られます。