49

1つのディレクトリを上に移動したい場合は、

cd ..

しかし、7つのディレクトリを上に移動したい場合、7回入力する以外にこれを行う方法はありますcd ..か?

4

14 に答える 14

79
cd ../../../../../../../

また、別の便利なナビゲーションのヒントは、たとえば、ディレクトリ(Aと呼びます)から7つのディレクトリが上にある別のディレクトリ(Bと呼びます)に切り替え続ける場合です。

したがって、ディレクトリAにいる場合:

A> cd ../../../../../../../
B> // Now you're in directory B and want to go back to A
B> cd -

これにより、ディレクトリAに戻り-ます。前のディレクトリに展開されます。

于 2012-08-30T13:43:37.810 に答える
23

エイリアスを作成します(あなたの中で〜/ .bashrc)

function cd_up() {
  cd $(printf "%0.0s../" $(seq 1 $1));
}
alias 'cd..'='cd_up'

と使用:

$ cd.. 7

UPD: または、より強力なバリアントを作成し、現在のパスのディレクトリ名にcdします。

# cd up to n dirs
# using:  cd.. 10   cd.. dir
function cd_up() {
  case $1 in
    *[!0-9]*)                                          # if no a number
      cd $( pwd | sed -r "s|(.*/$1[^/]*/).*|\1|" )     # search dir_name in current path, if found - cd to it
      ;;                                               # if not found - not cd
    *)
      cd $(printf "%0.0s../" $(seq 1 $1));             # cd ../../../../  (N dirs)
    ;;
  esac
}
alias 'cd..'='cd_up'                                # can not name function 'cd..'

使用する:

$ cd /home/user/documents/projects/reports/2014-10-01
$ cd.. doc
$ pwd
> /home/user/documents
于 2014-10-01T05:47:02.743 に答える
10

pushd .1つのディレクトリを記憶し、そのディレクトリpopdに戻るために使用できます。

于 2012-08-30T13:47:09.377 に答える
7

よく使うコマンドがある場合は、エイリアスを作成します。

あなたはタイプすることができます

alias ..='cd ..'
alias ...='cd ../..'

次に、を使用..して1レベル上に移動し、 ...2レベル上に移動できます。

于 2012-08-30T13:50:30.710 に答える
5

これが私が見つけたわずかな改善です:

通常、cd ..で1つのディレクトリに戻ると、1つ後に1つのディレクトリに進むことになります。これを機能させるには、エイリアスではなく関数を使用する必要があるため、次の代わりに次のようにします。

alias ..=”cd ../”
alias ..2=”cd ../../”

使用できます:

..()
{
cd ../$@
}
..2()
{
cd ../../$@
}

ただし、これを使用すると、この関数のコマンド補完が欠落していることがすぐに明らかになり、有用性が大幅に低下します。したがって、私は戻って、この関数用に独自のbash補完関数を追加しました。これは、回避したい場合は、〜/ .bashrcまたは〜/ .bashrcから呼び出される任意のファイル(たとえば、〜/ .bash_completion)に貼り付けることができます。散らかっています。完了コードは次のとおりです。

_..()
{
local cur=../${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen -d — $cur) )
local i=${#COMPREPLY[*]}
while [ $((--i)) -ge 0 ]; do
COMPREPLY[$i]=$(echo ${COMPREPLY[$i]} | sed -r ‘s/(\.\.\/)*//’)
done
}
complete -F _.. -o nospace -S / ..

_..2()
{
local cur=../../${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen -d — $cur) )
local i=${#COMPREPLY[*]}
while [ $((--i)) -ge 0 ]; do
COMPREPLY[$i]=$(echo ${COMPREPLY[$i]} | sed -r ‘s/(\.\.\/)*//’)
done
}
complete -F _..2 -o nospace -S / ..2
于 2013-04-14T08:35:22.977 に答える
4

.bashrcこの関数をどこからコピーしたか覚えていませんが、私にとってはうまく機能します(たとえば、ファイルに入れることができます)

up() { local p= i=${1:-1}; while (( i-- )); do p+=../; done; cd "$p$2" && pwd; }

たとえば、7つのディレクトリを上に移動するには、次のように入力する必要があります。up 7

于 2015-12-04T14:27:03.383 に答える
3

あなたはこのようにそれを行うことができますcd ../../../../../../../

ナビゲーションを改善するために適用できるいくつかのハックについてのクールな記事があります。

于 2012-08-30T13:43:00.520 に答える
2
for i in {1..7}; do cd ..; done
于 2012-08-30T13:44:47.207 に答える
1

うーん、そうは思いません。

cd ../../../..しかし、7回のcdの代わりに書くことができます(など)。

于 2012-08-30T13:43:25.663 に答える
1

次の関数をに追加できます.bashrc

# ~/.bashrc
up() {
  for D in $(seq 1 $1);
     do 
       cd ..
     done
}

したがって、使用法は単純に次のようになります。

user ~ $ up 3
user / $
于 2015-09-08T05:45:42.583 に答える
1

この気の利いた機能は、両方向への上昇をサポートします。

/ a / b / c / dにいる場合は、「up1」で/a / b/cに移動します。それはかなり標準的であり、他のほとんどの回答でカバーされています。

さて、特別な部分のために; 負の数を使用すると、反対方向から移動します。したがって、/ a / b / c / dにいる場合、「up-1」は/aに移動します。

function up() {
    UP=$1

    if [[ $UP =~ ^[\-0-9]+$ ]]; then
        if ((UP<0)); then
            UP=${UP#-}
            cd $(echo $PWD | cut -d/ -f1-$((UP+1)))
        else
            cd $(printf "%0.s../" $(seq 1 ${UP}));
        fi
    fi
}

githubでダウンロード/インストールできます。

于 2017-04-06T03:47:02.033 に答える
1

魚のユーザーのために、

function cdd
   for x in (seq $argv)
     cd ..
   end
end

そしてそれをあなたに保存してください:〜/ .config / fish / features / cdd.fish

そして、$ cdd 3 3つのディレクトリを上に移動します。

于 2017-09-14T15:06:31.240 に答える
1

深いディレクトリ構造のナビゲートを少し簡単にする小さなユーティリティを作成しました:https ://github.com/ianatha/up 。

インストールするとup、次のことができます。

$ pwd
/Users/jdoe/Developer/backend/src/main/java/com/example/service/db/
$ up example
$ pwd
/Users/jdoe/Developer/backend/src/main/java/com/example/
$ up 4
$ pwd
/Users/jdoe/Developer/backend/src/
于 2019-08-13T18:42:42.730 に答える
0

この解決策を試すことができます。それは私にとってはうまくいきます:

#!/bin/bash

#this sctipt should take one parameter - number of steps. And do "cd" command step times.
# example usage: cd `cde 3` 

NEW_PATH=$(pwd)

step="../"

upper=""

for i in seq $1  
do 
        upper="$upper$step"
done

echo $upper

〜/.barshファイルにエイリアスを作成しました。そして、これは私にとってはうまくいきます。
たとえば、3つのフォルダまで。
$ cd `cde 3`

于 2015-08-13T18:13:19.207 に答える