要上一个目录我写cd .. 是否有任何命令可以用于只有一个子目录的反向情况?
让我们说我在:
DIR1 / DIR2 /
dir2只有一个子目录dir3
是否有任何捷径可以将一个目录从dir2降级为dir3,而无需编写子目录(dir3)的名称?
答案 0 :(得分:3)
本身没有这样的命令,但您可以通过键入cd */
来欺骗cd命令; - )
答案 1 :(得分:0)
在我提出问题时,我还不知道使用Tab键可以自动完成shells的操作。
在这种情况下,我只需要键入cd
,按Tab
,目录名称就会显示出来,因此我可以按Enter
移至目录。
答案 2 :(得分:0)
我在学习 shell 时也有类似的想法,并在 cd 周围写了一个包装器来做你想做的事。它变得有点复杂。如果您有名为 folder1 和 folder2 的文件夹,您可以输入:cdd 2 如果只有一个文件夹,您只需输入:cdd
它还具有与 ksh 的 cd 路径替换类似的功能,带有 2 个参数(如果在 /home/tom,您可以键入以下内容以到达 /home/bob:cdd tom bob)。 如果你传递一个存在的文件夹,它也像普通的 cd 命令一样工作。
它是前一段时间写的,所以它可能不是最漂亮的,但它有效。 它还在末尾执行 ls ,您可以将其删除。
要注意的另一件事是您可以(至少在 bash 中)键入以下内容以转到您所在的上一个目录:cd -
function cdd()
{
if [[ $3 != "" ]]; then
printf "~~~ cdd can only take 1 or 2 arguments, you specified 3 or more\n";
return;
else
if [[ $2 != "" ]]; then
ARG=$(pwd | sed "s/$1/$2/g");
cd $ARG;
else
if [[ $1 == "" ]]; then
cd $(ls -d */ | head -1);
else
if [[ -d $1 ]]; then
cd $1;
else
if [[ -d $(ls -F | grep "/$" | grep "^$1" | head -1) ]]; then
cd $(ls -F | grep "/$" | grep "^$1" | head -1);
else
if [[ -d $(ls -F | grep "/$" | grep "$1/$" | head -1) ]]; then
cd $(ls -F | grep "/$" | grep "$1/$" | head -1);
else
if [[ -d $(ls -F | grep "/$" | grep "$1" | head -1) ]]; then
cd $(ls -F | grep "/$" | grep "$1" | head -1);
else
if [[ -d $(ls -a -F | grep "/$" | grep "$1" | head -1) ]]; then
cd $(ls -a -F | grep "/$" | grep "$1" | head -1);
else
printf "~~~ Folder not found...\n";
return 3;
fi;
fi;
fi;
fi;
fi;
fi;
fi;
fi;
if [[ $? == 0 ]]; then
ls --color=auto -a --color;
fi
}