不确定这是否可行,但我似乎记得以前使用 AIX 时,只要说出路径的哪一部分需要用其他内容替换,就可以更改路径。例如,假设我有两条路径:
/etc/application-2.0.1/options/default
和
/etc/application-1.0.8/options/default
我可以使用以下命令从文件夹 1 切换到 2
cd /2.0.1/1.0.8/
这会将路径中的字符串替换2.0.1
为1.0.8
。显然,这现在对我来说不起作用。但是有办法做到这一点吗?
答案1
如果你使用嘚作为 shell,您只需输入cd 1.0.8 2.0.1
。
答案2
我自己也使用过(但很怀念)这个功能。这取决于您使用的 *nix 版本和/或版本。如果您使用 bash,这里有一个方便的方法来扩展内置 cd 以包含此功能。将其放入您的 .bashrc 中(或将其粘贴到您的 bash shell 中并按回车键进行测试)。
function cd() { if [ $# -eq 2 ]; then builtin cd "${PWD/$1/$2}"; else builtin cd "$1"; fi }
答案3
这应该可以在 ubuntu 10.04 上的 bash 中工作:cd ${PWD/old/new}
。基本上,这会替换old
您当前工作目录下面有new
2 个例子。
示例 1
ing02741@hoster:~$ cd /home/ing02741/Videos/
ing02741@hoster:~/Videos$ cd ${PWD/ing02741/koushik}
ing02741@hoster:/home/koushik/Videos$
示例 2
ing02741@hoster:~/src/cdtest$ mkdir dir-v1.0.1 dir-v2.2.2 dir-v3.0.7
ing02741@hoster:~/src/cdtest$ mkdir dir-v1.0.1/ind dir-v2.2.2/ind dir-v3.0.7/ind
ing02741@hoster:~/src/cdtest$ cd dir-v1.0.1/ind/
ing02741@hoster:~/src/cdtest/dir-v1.0.1/ind$ cd ${PWD/1.0.1/2.2.2}
ing02741@hoster:~/src/cdtest/dir-v2.2.2/ind$
借鉴 sepp2k 的答案的想法,你可以制作这样的功能
function mycd { cd ${PWD/$1/$2} }
然后使用类似的东西mycd 2.0.1 1.0.8
来切换。
答案4
如果您是 vi 粉丝,您可以在 shell 中启用 vi 模式(例如 bash set -o vi)并使用 vi 的命令模式...
或者你可以进行疯狂的历史扩展(在 zsh 中测试,也许在 bash 中也测试过):
$ cd /etc/application-1.0.8/options/default
cd: no such file or directory: /etc/application-1.0.8/options/default
$ !!:s/1.0.8/2.0.1/
cd /etc/application-2.0.1/options/default
cd: no such file or directory: /etc/application-2.0.1/options/default