我在Linux中使用Bourne shell,我正在尝试在.profile中创建一个快捷方式,以便在子目录之间快速跳转。
我想创建一个快捷方式“cds”从第一个目录跳转到下面的第二个目录。这些只是他的例子的示例目录。
/ web / site / 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
}
回声有效,但cd行没有。你能告诉我为什么它不起作用以及如何让它发挥作用?谢谢你的帮助。
答案 0 :(得分: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
转到该目录。