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~/foocom 4 subdiretórios:$ tree . ├── dir1 ├── dir2 ├── dir3 └── dir4Agora, se eu estiver no diretório
~/, digitardire a Guia não serão preenchidos automaticamente porque estão abaixo de~/foo. Mas será que se eu adicionar~/fooaCDPATH:$ 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
~/.bashrce, em seguida, executarsource ~/.bashrcou 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 baze 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 foomoverá você para../../foo, mas não encontrará../bar/foose 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