有没有一种简单的方法可以将目录从一个重复的文件夹结构中更改为另一个?

Ste*_*ger 6 bash directory cd-command

在我们的服务器上,我们有几个重复的文件夹结构用于测试、暂存和生产。除了微小的变化之外,所有三个之间的文件夹结构通常是相同的。

当我在开发 WordPress 插件时,我深入开发文件夹结构(例如~/dev/com/wp-content/plugins/myplugin)。我知道那是~/staging/com/wp-content/plugins/myplugin存在的。

如果我当前的工作目录是~/dev/com/wp-content/plugins/myplugin,我是否可以在~/staging/com/wp-content/plugins/myplugin 输入整个目录结构的情况下轻松切换到?

我想输入类似, 或者甚至让命令尝试使用我当前的目录路径遍历新目录。显然,如果新文件夹不包含正确的结构,就会出错。cdx~/stagingcdx../../../../../staging

我是否一直在输入整个目录结构?或者,还有更好的方法?

mur*_*uru 6

在 中使用字符串替换bash

$ a="~/dev/com/wp-content/plugins/myplugin"
$ echo ${a/dev/staging}
~/staging/com/wp-content/plugins/myplugin
Run Code Online (Sandbox Code Playgroud)

所以一个函数像:

cdx () 
{
    cd "${PWD/$1/$2}"
}
Run Code Online (Sandbox Code Playgroud)

然后cdx dev staging从文件夹切换devstaging. 通过一些检查,您可以命名函数cd

cd ()
{
    if [ $# != 2 ]
    then
        builtin cd "$@"
    else
        builtin cd "${PWD/$1/$2}"
    fi
}
Run Code Online (Sandbox Code Playgroud)

影响:

~ # cd /tmp
/tmp # cd tmp srv
/srv # cd
~ # cd -
/srv
/srv # cd tmp var
/srv #
Run Code Online (Sandbox Code Playgroud)

cd在所有情况下都保留了通常的行为,除了两个参数。