交互式会话中的主要问题cd
是您通常希望更改正在处理命令提示符的 shell 的当前目录。这意味着启动子shell(例如脚本)将无济于事,因为任何cd
调用都不会影响父shell。
但是,根据您使用的 shell,您可能可以定义一个函数来执行此操作。例如在 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]}"
}
ls
请注意,在此示例中,出于多种原因,我绝对拒绝解析 的输出。相反,我让外壳本身检索目录列表(或目录链接)......
也就是说,我怀疑使用这个功能(或任何有这种效果的东西)是一种让自己陷入巨大混乱的好方法——比如rm
在更改到错误的目录后使用。文件名自动完成已经足够危险了,不用强迫自己数数......