Não como tal não, mas aqui estão alguns truques úteis.
-
Use
cd -
. Isto irá levá-lo ao seu diretório anterior. -
Use
pushd
:$ pushd foo/bar/baz/foobar/babar/ /home/terdon/foo/bar/baz/foobar/babar ~/foo/bar/baz/foobar/babar ~ $ pwd /home/terdon/foo/bar/baz/foobar/babar $ pushd ~/foo/ ~/foo ~/foo/bar/baz/foobar/babar ~ $ pushd +1 ~/foo/bar/baz/foobar/babar ~ ~/foo $ pwd /home/terdon/foo/bar/baz/foobar/babar
-
Use a variável
CDPATH
. Isso permite usar a Tab para preencher automaticamente nomes de diretórios de qualquer lugar, desde que esses diretórios estejam definidos emCDPATH
. Por exemplo, digamos que eu tenha um diretório chamado~/foo
com 4 subdiretórios:$ tree . ├── dir1 ├── dir2 ├── dir3 └── dir4
Agora, se eu estiver no diretório
~/
, digitardir
e a Guia não serão preenchidos automaticamente porque estão abaixo de~/foo
. Mas será que se eu adicionar~/foo
aCDPATH
:$ CDPATH="~/foo" $ cd dir ## Hit tab here dir/ dir1/ dir2/ dir3/ dir4/
-
Use uma função que pesquise os diretórios pais para onde você deseja ir. Basta adicionar essas linhas ao seu
~/.bashrc
e, em seguida, executarsource ~/.bashrc
ou apenas abrir um novo terminal:find_target(){ ## The target directory _target=$1 ## Iterate through the parent directories printf "%s\n" "$PWD" | sed -r 's#/#/\n#g' | while read parent_dir; do ## Check if the target directory exists under this ## parent directory and if it does, print the ## target's path and break the loop. _path="${_path}${parent_dir}" [ -d "${_path}${_target}" ] && echo "${_path}${_target}" && break done } ## If the value passed as an argument to ## this function exists as a subdirectory of ## any of the current directory's parents, ## cd into it. Else, fail silently. pcd(){ cd "$(find_target $1)" 2>/dev/null }
Agora você poderá executar
pcd baz
e será movido para../../../baz
. A função encontrará o primeiro diretório chamadobaz
, que é um subdiretório de qualquer um dos seus diretórios atuais.CAVEATS:
- Ele não verificará os subdiretórios recursivamente. Por exemplo, se você estiver em
~/foo/bar/baz/
,pcd foo
moverá você para../../foo
, mas não encontrará../bar/foo
se esse diretório existir. - Irá para o 1º diretório encontrado (o que estiver mais acima).
- Ele não verificará os subdiretórios recursivamente. Por exemplo, se você estiver em