🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

3回答

1151閲覧

bashターミナルでのプロンプト(表示名)を`parentDirectory/currentDirectory$`のように表示したい

isoken26

総合スコア14

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

1グッド

1クリップ

投稿2019/11/25 07:58

編集2019/11/25 08:04

実現したいこと

Bashターミナルでのプロンプト(表示名)をparentDirectory/currentDirectory$のように表示したい

現在の設定

現在.bash_profileにてプロンプトを下記のように設定しています
export PS1="\W $ "
これによりプロンプトは currrentDirectory$のように表示されています(例えば/etc/ssh/ならssh$と表示されます)。
これをparentDirectory/currentDirectory$のように表示を変えたいです。
/etc/ssh/だったらetc/sshのように
正規表現などでの実現方法がわからずこちらで質問させていただいた次第です。
よろしくお願いします。

環境

  • MacOS Mojave v10.14.6
  • ターミナル→iterm2(Bash)
TaniguchiTakaki👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

求めている形式とちょっと違いますが、手軽に行うならばbash自体の機能にこういうのも有るよという事で。

bash

1~ $ PS1="\w $ " 2~ $ PROMPT_DIRTRIM=2 3~ $ cd /usr 4/usr $ cd /usr/local/etc 5.../local/etc $ PROMPT_DIRTRIM=1 6.../etc $

投稿2019/11/26 03:06

doda

総合スコア947

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

isoken26

2019/11/26 05:09

なるほど、こういう設定項目があったんですね、知見になりました!ありがとうございます!
guest

0

この表示形式、ディレクトリ構成によっては非常に有用ですね。

一応、外部コマンド起動無しでも出来ました。

Bash

1[HOSTNAME tmp]$ PS1='${PWD#${PWD%/*/*}/} $ ' 2/tmp $ cd /usr/local/src/ruby-2.6.4 3src/ruby-2.6.4 $ cd /usr/local/src 4local/src $ cd /usr/local 5usr/local $ cd /usr 6/usr $ cd / 7/ $

補足:
${PWD%/*/*} $PWDの末尾から2つめの/までを削除した文字列。/が2つ未満の場合は$PWDのまま。
${PWD#${PWD%/*/*}/ 上記の後に/を付けた物を、$PWDの先頭から削除した文字列。/が2つ未満の場合は$PWD/という文字列を$PWDの先頭から削除しようとするがそういう物は含まれないので、$PWDのまま。

投稿2019/11/26 02:21

編集2019/11/26 02:27
otn

総合スコア85886

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

isoken26

2019/11/26 05:11

解説までありがとうございます!色々なやり方があるのですね、勉強になりました!
guest

0

ベストアンサー

bash

1PS1='$(pwd|sed -e "s,.*/(.*)(/.*$),\1\2,g")$ '

でどうでしょう(もっといい書き方あるかも)。

bash

1/$ cd / 2/$ cd /usr/ 3/usr$ cd /usr/share/ 4usr/share$ cd /usr/share/doc 5share/doc$

投稿2019/11/25 09:05

編集2019/11/25 09:16
TaniguchiTakaki

総合スコア171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

isoken26

2019/11/25 09:37

ありがとうございます!まさに実現したいことができました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問