web-dev-qa-db-ja.com

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

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

14
user80790

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

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

(名前cdupは、対応するFTPコマンドに由来します。参考までに。)

16

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

たとえば、「pushd。」と入力します。次に「cd/home」。ここで「popd」と入力すると、開始した場所に戻ります。

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

11
ʍǝɥʇɐɯ

もちろん:

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

速くて汚い:

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

ディレクトリを1回だけ変更するように作成されています。

4
glenn jackman

別の方法は次のとおりです。

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

printf、次に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
1
bishop

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

よく使用するディレクトリの名前で変数を設定し、そこでCDを作成することもできます。

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

私は autojump を使用します。これにより、次のように入力できます。

j h
>> /home/cjulien
j et
>> /etc

それはあなたの習慣から学ぶことができ、非常に軽い(そして中毒性があります;))

1
Cédric Julien

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

  1. cd-
    最後にいたディレクトリに戻ります。これを常に使用して、コードツリーの最深部からルートに戻ります...ただし、これはcdした場合にのみ機能します。 1つの変更でそれ。

  2. cdd古い新しい
    これは、私が過去に作成したスクリプト関数であり、類似したツリー間を移動するために使用しました。基本的に、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}/...その木でかなり早く狂った。

0
cabbey