Você faz sabe que cd ..
leva você ao diretório pai? Então, se eu entendi sua pergunta corretamente, você pode usar:
cd $(dirname $0)/../../..
Eu tenho isso:
cd $(dirname $(dirname $(dirname "$0"))) &&
que irá cd para o projeto raiz.
Existe uma forma abreviada para isso de alguma forma, onde eu posso ser como:
cd 3 && # not quite, but you get the idea
ou qualquer outra coisa, quero dizer, por que você não sabe?
Talvez um comando como esse seja ideal:
cdx 3 &&
desde cd
não tem idéia de que 3 não é um arquivo ou diretório.
Defina esta função:
dirx(){ a=$0;for((i=0;i<$1;i++));do a=${a%/*};done;cd "$a"; }
E faça:
$ dirx 3
Você pode usar a expansão de parâmetro em bash
:
cd "${0%/*/*/*}"
ou ainda mais simples em zsh
:
cd $0:h:h:h
Tags cd-command dirname