質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
bash

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

Q&A

解決済

5回答

473閲覧

祖父、曾祖父またはそれ以上の直系の特定のディレクトリ名のパスにcdしたい。

kageryosan

総合スコア1

bash

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

0グッド

0クリップ

投稿2022/04/27 07:14

GitBash で使えるコマンドだと嬉しいです。

/dev/hoge/peko/chun/....
/dev/fuga/nyan/wanwan/gaogao/.... などと言ったディレクトリから、
コマンド一つで、「/dev」に飛べるコマンドを思いつく方いませんでしょうか?

「ホームディレクトリから考えて~」とかじゃなくて、カレントディレクトリの親なのか祖父なのか曾祖父なのか、それ以上なのかは分からないけれど、「直系のdev という名前のディレクトリに飛びたい」時に使いたいです。

実現可能なのかどうか、技術的興味での質問になります。
思いつく方いましたら、ご教示いただけますと幸いです。よろしくお願いいたします。

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

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

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

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

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

mather

2022/04/27 07:57

具体的に何がしたいのかが理解できません。 期待しているコマンドの例としては common-base /dev/hoge/peko/chun/ /dev/fuga/nyan/wanwan/gaogao/ とすると結果として cd /dev が実行されるようなイメージで合っていますか? 現在のパス(pwd)とは無関係なのでしょうか?
guest

回答5

0

「現在の場所から上に行って、目的の名前のディレクトリであれば、そこに」ということですかね。

Bash

1$ upto(){ cd ${PWD%%/$1/*}/$1;} #関数定義 2$ cd /usr/share/man/man1 3$ pwd 4/usr/share/man/man1 5$ upto share 6$ pwd 7/usr/share 8$ cd /usr/share/man/man1 9$ upto usr 10$ pwd 11/usr

指定した名前がパス中に複数回出てきた場合は上記だと上位側に行きますが、%を1つにすると下位側に行きます(/usr/lib/foo/lib/barみたいなケースでupto libした場合)。

投稿2022/04/27 10:11

otn

総合スコア84499

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

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

0

cd /dev って意味じゃないですよね。

変数展開を利用して

sh

1cd ${PWD%/dev/*}/dev

とかすればいけるのではないでしょうか。

参照 Qiita: シェルの変数展開

投稿2022/04/27 08:15

kaz.Suenaga

総合スコア2037

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

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

0

bash

1$ pwd 2/dev/fuga/nyan/wanwan/gaogao 3$ cd "${PWD%${PWD#/*/}}" 4$ pwd 5/dev

投稿2022/04/27 07:43

melian

総合スコア19703

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

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

0

pushedコマンドって使えませんか?

以下参考サイトです。
bashのcd/pwd/pushd/popdのまとめ

上手く使えばできそうな気がします。

投稿2022/04/27 07:31

YuuT

総合スコア673

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

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

0

ベストアンサー

そういうものを含んだシェルスクリプトを書いたことがあります。$PWD から /dev より後のものを削除すればよいでしょう。

sh

1cd `echo $PWD | sed "s=\\(/dev\\)/.*=\\1="`

投稿2022/04/27 07:23

int32_t

総合スコア20832

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問