让我们说我要更改的所有目录都有长名称,因此每次在终端输入cd "Lorem ipsum dolor sit amet consectetur adipiscing elit"
都很麻烦,但我称之为ls
并且知道该目录是第一个目录。有没有办法用cd 0
之类的东西改成它?即在调用ls
时以与调整结果相同的方式排序时,是否可以更改为索引X处的任何目录?
答案 0 :(得分:1)
没有这样的功能。您可以使用制表符完成:cd Lor<tab>
或编写一个符合您描述的功能:
cdn() {
local n=$1
for d in */
do
(( n-- )) || { cd "$d"; break; }
done
# Error checking left as an exercise
}
答案 1 :(得分:0)
@其他人的回答可能是最好的答案,但你也可以使用像这样的脚本:
#!/bin/sh
i=0
for directory in */ .*/
do
i=$(($i+1))
if [ $1 -eq $i ]
then
cd $directory
break
fi
done
脚本遍历所有目录(包括隐藏目录以及./
和../
),并在它到达您选择cd
的索引时停止。但是有一点需要注意(这就是为什么@其他人的答案可能更好):脚本必须使用.
或source
命令运行(例如:{{ 1}}而不是. cd-index.sh 3
)。如果不使用./cd-index.sh 3
运行它,它只会更改脚本中的目录。