Linux更改目录快捷方式

时间:2017-06-13 14:23:11

标签: linux unix

我在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行没有。你能告诉我为什么它不起作用以及如何让它发挥作用?谢谢你的帮助。

1 个答案:

答案 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转到该目录。