O principal problema com cd
em uma sessão interativa é que geralmente você deseja alterar o diretório atual do shell que está processando o prompt de comando. Isso significa que o lançamento de um sub-shell (por exemplo, um script) não ajudaria, já que qualquer cd
de chamadas não afetaria o shell pai.
Dependendo do shell que você está usando, no entanto, você pode definir uma função para fazer isso. Por exemplo, no bash:
function cdls() {
# Save the current state of the nullglob option
SHOPT='shopt -p nullglob'
# Make sure that */ expands to nothing when no directories are present
shopt -s nullglob
# Get a list of directories
DIRS=(*/)
# Restore the nullblob option state
$SHOPT
# cd using a zero-based index
cd "${DIRS[$1]}"
}
Note que neste exemplo eu absolutamente me recuso a analisar a saída de ls
, por várias razões . Em vez disso, deixo o próprio shell recuperar uma lista de diretórios (ou links para diretórios) ...
Dito isso, suspeito que o uso dessa função (ou qualquer coisa nesse sentido) seja uma ótima maneira de se preparar para uma enorme bagunça - como usar rm
depois de mudar para o diretório errado. O preenchimento automático de nomes de arquivos já é perigoso o suficiente, sem forçar você a contar ...