web-dev-qa-db-ja.com

Linuxでいくつかのディレクトリに移動する

1つ上のディレクトリに移動したいときは、

cd ..

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

cd ../../../../../../../

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

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

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

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

54

エイリアスを作成します(in〜/ .bashrc)

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

そして使用:

$ cd.. 7

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

# 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
17
Grigory K

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

8
Chakalaka

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

入力できます

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

次に、.. 1レベル上に移動し、... 2レベル上に移動します。

ここに私が見つけたわずかな改善があります:

通常、cd ..で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
6
RussellStewart

このようにできますcd ../../../../../../../

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

5

この関数をコピーした場所を覚えていないが、私にとってはうまく機能します(たとえば、_.bashrc_ファイルに入れることができます)

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

例えばディレクトリを7つ上に移動するには、_up 7_と入力する必要があります

4
dav
for i in {1..7}; do cd ..; done
3
Waleed Khan

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

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

そのため、使用法は次のようになります。

user ~ $ up 3
user / $
2
doberoi96

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

/ a/b/c/dにいる場合、「up 1」は/ 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 でダウンロード/インストールが可能です。

1
rouble

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

ただし、cd ../../../..(など)cdの7回ではなく..

1
E. Lüders

魚のユーザーのために、

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

それを次の場所に保存します:〜/ .config/fish/functions/cdd.fish

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

1
chriz

深いディレクトリ構造のナビゲートを少し簡単にする小さなユーティリティを作成しました: 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/
0
thatha

このソリューションを試すことができます。私にとってはうまくいく:

#!/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`

0
Blow-Out