有没有办法将终端中的目录更改为某个“索引”的目录?

时间:2014-05-13 01:31:10

标签: linux terminal command

让我们说我要更改的所有目录都有长名称,因此每次在终端输入cd "Lorem ipsum dolor sit amet consectetur adipiscing elit"都很麻烦,但我称之为ls并且知道该目录是第一个目录。有没有办法用cd 0之类的东西改成它?即在调用ls时以与调整结果相同的方式排序时,是否可以更改为索引X处的任何目录?

2 个答案:

答案 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运行它,它只会更改脚本中的目录。