不确定是否可能,但我似乎记得从我过去使用 AIX 的时候开始,只需说明路径的哪一部分需要用其他东西替换就可以改变我的路径。例如,假设我有两条路径:
/etc/application-2.0.1/options/default
Run Code Online (Sandbox Code Playgroud)
和
/etc/application-1.0.8/options/default
Run Code Online (Sandbox Code Playgroud)
我可以使用类似的命令从文件夹 1 切换到文件夹 2
cd /2.0.1/1.0.8/
这将替换路径中的字符串2.0.1到1.0.8. 显然这现在对我不起作用。但是有没有办法做到这一点?
这应该在 ubuntu 10.04 上的 bash 中工作:cd ${PWD/old/new}。基本上,这将替换第一次出现old在你当前的工作目录用new。下面2个例子。
ing02741@hoster:~$ cd /home/ing02741/Videos/
ing02741@hoster:~/Videos$ cd ${PWD/ing02741/koushik}
ing02741@hoster:/home/koushik/Videos$
Run Code Online (Sandbox Code Playgroud)
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$
Run Code Online (Sandbox Code Playgroud)
借用 sepp2k 的答案的想法,你可以做一个这样的功能
function mycd { cd ${PWD/$1/$2} }
Run Code Online (Sandbox Code Playgroud)
然后使用类似的东西mycd 2.0.1 1.0.8来切换。
小智 9
我自己使用过(也错过了)这个功能。这取决于您使用的 *nix 的口味和/或版本。如果您使用 bash,这里有一个方便的方法来扩展内置 cd 以包含此功能。把它放在你的 .bashrc 中(或者将它粘贴到你的 bash shell 中并按回车键)。
function cd() { if [ $# -eq 2 ]; then builtin cd "${PWD/$1/$2}"; else builtin cd "$1"; fi }
Run Code Online (Sandbox Code Playgroud)
您可能还记得历史扩展。我不知道 AIX 上的 shell 中有什么可用,但是在 bash 中执行此操作的一种方法是^2.0.1^1.0.8.
对于具有强大命令行编辑功能的 bash 和 zsh 等 shell,历史扩展不太有用。您可以使用箭头键调用之前的命令,并使用Alt+.插入上一个命令的最后一个单词(按两次可到达之前的命令,依此类推)。
| 归档时间: |
|
| 查看次数: |
9235 次 |
| 最近记录: |