2017-06-13 120 views
0

我在Linux中使用Bourne shell,我试图在我的.profile中创建一个快捷方式,以便在子目录之间快速跳转。Linux更改目录快捷方式

我想创建一个快捷方式“cds”从第一个目录跳到下面的第二个目录。这些只是他例子的示例目录。

/网页/网站/ DEV1/CSS
/网页/网站/ TEST1/CSS

用法:CDS DEV1 test1的

cds() { 
    echo `pwd` | sed -e "s/$1/$2/g" 
    cd `pwd` | sed -e "s/$1/$2/g" 
    pwd 
} 

回声作品,但裁线没有。你能告诉我为什么它不起作用,以及如何使它起作用?谢谢你的帮助。

+0

堆栈溢出是编程和开发问题的网站。这个问题似乎与题目无关,因为它不涉及编程或开发。请参阅帮助中心的[我可以询问哪些主题](http://stackoverflow.com/help/on-topic)。也许[超级用户](http://superuser.com/)或[Unix&Linux堆栈交换](http://unix.stackexchange.com/)会是一个更好的地方。如果您觉得它在其他地方的话题,然后[请求迁移](http://meta.stackoverflow.com/q/254851) – jww

回答

1

在你的功能,当你做

echo `pwd` | sed -e "s/$1/$2/g" 

输出从echo被管道输送到sed和更改。 sed会将其输出打印到标准输出。

然而,cd不写入任何输出,所以你cd荷兰国际集团当前目录(pwd),然后通过管道将(空)输出到sed的替换目录。相反,您可以拨打cd,输入pwd的参数输出为sed

这是你想要的,而不是代码:

cds() {   
    cd $(pwd | sed -e "s/$1/$2/g") 
    pwd 
} 

首先,这种评估代码$()内,即pwd | sed -e "s/$1/$2/g"pwd将当前路径打印到stdout,而sed将替换由参数给出的部分路径。所以$(pwd | sed -e "s/$1/$2/g"评估到新的目录。然后,cd转到该目录。

+0

谢谢你的教训,以及答案。它的工作原理,我现在知道为什么。 –