Linux 是否有办法将终端中的目录更改为某个位置的目录;索引;?

Linux 是否有办法将终端中的目录更改为某个位置的目录;索引;?,linux,terminal,command,Linux,Terminal,Command,假设我想更改的所有目录都有很长的名称,因此每次在终端中键入cd“Lorem ipsum dolor sit amet concertetur adipising elit”都很麻烦,但我调用了ls,知道目录是,比方说,第一个目录。有没有一种方法可以使用类似于cd0的东西进行转换?也就是说,当以与调用ls时的结果相同的方式排序时,我是否可以更改为索引X处的任何目录?没有此类功能。您可以使用tab completion:cd Lor或编写一个函数来实现您所描述的功能: cdn() { loca

假设我想更改的所有目录都有很长的名称,因此每次在终端中键入
cd“Lorem ipsum dolor sit amet concertetur adipising elit”
都很麻烦,但我调用了
ls
,知道目录是,比方说,第一个目录。有没有一种方法可以使用类似于
cd0
的东西进行转换?也就是说,当以与调用
ls
时的结果相同的方式排序时,我是否可以更改为索引X处的任何目录?

没有此类功能。您可以使用tab completion:
cd Lor
或编写一个函数来实现您所描述的功能:

cdn() { 
  local n=$1
  for d in */
  do
    (( n-- )) || { cd "$d"; break; }
  done

  # Error checking left as an exercise
}

@另一个人的答案可能是最好的答案,但你也可以使用这样的脚本:

#!/bin/sh

i=0
for directory in */ .*/
do
    i=$(($i+1))
    if [ $1 -eq $i ]
    then
        cd $directory
        break
    fi
done
脚本将遍历所有目录(包括隐藏目录和
/
./
),并在到达您选择的
cd
索引时停止。但是有一个警告(这就是为什么@另一个人的答案可能更好):脚本必须使用
源代码
命令运行(例如:
.cd-index.sh3
而不是
/cd-index.sh3
)。如果不使用
运行它,它将只更改脚本中的目录