Existe um comando para voltar um número de etapas em um diretório, sem usar cd?

14

Eu estou constantemente mudando para o cd ../../../../ '. Existe um comando / alias que poderia me deixar ir 'cmd 4' e eu seria levado de volta 4 diretórios?

    
por studiohack 10.05.2011 / 16:02

9 respostas

16

Coloque isso no seu ~/.bashrc :

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

(O nome cdup vem do comando FTP correspondente, apenas FYI.)

    
por 10.05.2011 / 16:07
11

Eu fui ensinado a usar 'pushd' e 'popd' para tais circunstâncias.

Por exemplo, digite "pushd". e depois 'cd / home'. Agora digite 'popd' e você estará de volta ao ponto de partida.

'pushd' / 'popd' é uma pilha, você pode enviar tantos diretórios quantos quiser, mas é a última vez, primeiro quando você popd.

    
por 10.05.2011 / 16:06
10

Claro, por que não:

up() {
    [ $# = 0 ] && cd .. && return
    [ $1 = 0 ] && return
    cd .. && up $(($1 - 1))
}
    
por 10.05.2011 / 16:07
4

Rápido e sujo:

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

Formulado para alterar apenas o diretório uma vez.

    
por 10.05.2011 / 16:09
2

Aqui está uma maneira alternativa:

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

Você pode querer usar pushd e popd para definir marcadores de localização e voltar facilmente a partir de qualquer diretório para o qual você alterou.

Você também pode definir uma variável com o nome de um diretório que você usa muito, então CD lá:

MYPROJ=~/projects/name/src
cd $MYPROJ
proj1='cd $MYPROJ'
    
por 10.05.2011 / 16:10
1

Eu uso o autojump que me permite digitar:

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

pode aprender com seus hábitos e é muito leve (e viciante;))

    
por 10.05.2011 / 16:11
1

Compile o caminho usando printf then cd :

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

Use como:

cdup 4 # to go up four directories
cdup 1 # to explicitly go up one directory
cdup   # to implicitly go up one
    
por 13.01.2017 / 16:08
0

Dois pensamentos que podem ser úteis para você:

  1. cd -
    mude de volta para o último diretório em que você estava. Eu uso isso o tempo todo para ir do fundo para baixo na minha árvore de código de volta para a raiz dele ... embora isso só funcione se você o colocasse em uma mudança.

  2. cdd old new
    essa foi uma função de script que eu havia escrito no passado e que usei para me movimentar entre árvores semelhantes. Basicamente, levou dois argumentos e fez um regexp no seu caminho, ótimo para se movimentar entre os ramos e tal. Por exemplo, se você estava em ~ / bzr / web / trunk / path / to / feature e precisava chegar em ~ / bzr / web / feature-branch / caminho / to / feature, você faria cdd trunk feature-branch . A implementação que tive foi em uma linguagem de shell arcaica no AIX, mas foi bastante trivial, portanto, deve ser fácil de implementar no shell de escolha, se você precisar dele. Para nós, foi muito útil porque a estrutura parecia com: ... / {product} / {version} / {release} / {src, bld, dbg, pkg, tst} / {component} / ... movendo-se nessa árvore ficou louco rapidamente.

por 11.05.2011 / 01:45