specialcdcommand() cd ${(M)PWD#/*/*/}
Ou:
specialcdcommand() cd ${${(M)PWD#/*/*/}:?Not deep enough}
ou:
specialcdcommand() cd "${(M)PWD#/*/*/}"
para evitar ir ao seu diretório pessoal se você ainda não tiver ultrapassado dois níveis.
Em zsh
, o sinalizador de expansão variável (M)
altera o comportamento do operador ${var#pattern}
, de modo que a sequência atiada M é expandida em vez de ser removida. :?
é o operador padrão / Bourne para retornar um erro (e cancelar o comando) se uma variável se expandir para uma cadeia vazia. Observe que zsh
é o único shell que possui uma maneira consistente de expandir os parâmetros de aninhamento.
POSIXly:
specialcdcommand() {
p=${PWD#/*/*/}
[ "$p" = "$PWD" ] || cd "${PWD%"$p"}"
}
Ou para evitar a alteração da variável $p
:
specialcdcommand() {
set -- "${PWD#/*/*/}"
[ "$1" = "$PWD" ] || cd "${PWD%"$p"}"
}