cdを使用せずに、ディレクトリ内のいくつかのステップに戻るコマンドはありますか?


14

私は常に「cd ../../../../」を行っています。「cmd 4」を実行できるコマンド/エイリアスがあり、4つのディレクトリに戻ることができますか?


ls?本当にあなたはcd
クリスジェスターヤング

ええ、私はこれを急いで書きました;)今それを編集しています。

これを行いますか?:alias cmd5 = "cd ../../../../../"
ypercubeᵀᴹ11年

まあ、私はそれらを1から10程度書き出すことができると思いますが、賢い方法でそれができればうれしいです。それは本当に私と一緒に座っていません。ただし、他のソリューションが出現しなければ、それを行います。

回答:


16

あなたのこれを入れてください~/.bashrc

cdup() {
  levels=${1-1}
  while ((levels--)); do
    cd ..
  done
}

(名前cdupは対応するFTPコマンドから来ています。参考までに。)


回答のおかげで、jleedevの答えは1行短くなり、誰を選ぶか決められませんでしたので、答えました!とにかくありがとう!

@Muu:両方の答えが機能しますが、私のものは多くのレベルで機能し、@ jleedevは小さなスタック(スタック制限が何であれ)でのみ機能します。;-)(どちらの方法でも制限に達することはないと確信していますが、私のほうがより一般的です。私が目指していることです。
クリスジェスターヤング

公平な点、私はあなたに答えを与えました。ごめんなさいjleedev-ほとんどの場合、私はそれを変更するのを忘れるので、あなたのソリューションを使い続けます:)

11

そのような状況では、「pushd」と「popd」を使用するように教えられました。

たとえば、「pushd」と入力します。そして、「cd / home」。「popd」と入力すると、元の場所に戻ります。

「pushd」/「popd」はスタックです。好きなだけディレクトリをプッシュできますが、最後にオンになり、最初にポップしたときにオフになります。


いいね 聞いたことない。私が探していたものに完全には適合しませんが、それも使用します。ありがとう。

10

もちろん:

up(){
    [$#= 0] && cd .. && return
    [$ 1 = 0] && return
    cd .. && up $(($ 1-1))
}

Bashは末尾再帰ではありませんか?スタックオーバーフローを行う可能性がありますup 500。:-)
クリスジェスターヤング

6
ディレクトリが深くネストされている場合、私の同情があります。
ジョシュリー

これを使用しました。クリスを1行倒す;)

@Muu:この質問がコードゴルフだとは知りませんでした!;-)ところで、参加してください!codegolf.stackexchange.com
クリスジェスターヤング

3
@Muu再帰は一般にシェルスクリプトを記述する適切な方法ではないことに注意してください。
ジョシュリー

4

早くて汚い:

cmd () { dir=.; for i in $(seq 1 $1); do dir=$dir/..; done; pushd $dir; }

一度だけディレクトリを変更するように策定されました。


2

別の方法を次に示します。

function cdup
{
    cd $(for ((i=0 ; i<$1 ;i++)); do printf "../" ; done)
}

1

ロケーションマーカーの使用pushdpopd設定を検討し、変更したディレクトリから簡単にそこに戻ることができます。

また、頻繁に使用するディレクトリの名前を変数に設定してから、そこにCDを設定することもできます。

MYPROJ=~/projects/name/src
cd $MYPROJ
proj1='cd $MYPROJ'


1

printfthen cdを使用してパスを作成します。

cdup() {
    local path
    printf -v path '%*s' "${1:-1}"
    cd "${path// /../}"
}

使用:

cdup 4 # to go up four directories
cdup 1 # to explicitly go up one directory
cdup   # to implicitly go up one

0

あなたに役立つかもしれない2つの考え:

  1. cd-
    あなたがいた最後のディレクトリに戻る変化する。

  2. cdd old new
    これは、類似のツリー間を移動するために使用した過去に記述したスクリプト関数です。基本的に2つの引数を取り、パス上で正規表現を実行しました。ブランチ間などを移動するのに最適です。たとえば、〜/ bzr / web / trunk / path / to / featureにいて、〜/ bzr / web / feature-branch / path / to / featureにアクセスする必要がある場合は、を実行しますcdd trunk feature-branch。私が持っていた実装はAIX上の古風なシェル言語でしたが、それはかなり簡単なものでしたので、必要な場合は選択したシェルで簡単に実装できるはずです。構造が... / {product} / {version} / {release} / {src、bld、dbg、pkg、tst} / {component} / ...のように見えたため、私たちにとって非常に便利でした。そのツリーで非常に迅速に狂った。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.