増祖親ディレクトリにCDを3回移動

増祖親ディレクトリにCDを3回移動

私はこれを持っています:

cd $(dirname $(dirname $(dirname "$0"))) &&

その後、プロジェクトのルートディレクトリに移動します。

私ができる簡単な方法はありますか?

cd 3 &&  # not quite, but you get the idea

または、とにかく、なぜ知らなかったのですか?

おそらく、次のコマンドが理想的でしょう。

cdx 3 &&

cd3がファイルやディレクトリではないことがわからないからです。

答え1

あなたするcd ..これが親ディレクトリに移動することをご存知でしたか?したがって、あなたの質問を正しく理解したら、次のことを使用できます。

cd $(dirname $0)/../../..

答え2

この関数を定義します。

dirx(){ a=$0;for((i=0;i<$1;i++));do a=${a%/*};done;cd "$a"; }

そして、次のことを行います。

$ dirx 3

答え3

次のパラメータ拡張を使用できますbash

cd "${0%/*/*/*}"

はるかに簡単ですzsh

cd $0:h:h:h

関連情報