是否有用于遍历类似目录结构的Bash快捷方式?
Korn
Shell(ksh)曾经有一个非常有用的选项来cd遍历类似的目录结构;例如,给出以下目录:
> / home / sweet / dev / projects / trunk / projecta / app / models 然后,如果您在/ home / sweet …目录中,则可以通过键入更改为andy结构中的等效目录 cd sweet andy 因此,如果ksh看到2个参数,那么它将扫描当前目录路径中的第一个值,将其替换为第二个和cd.有人知道Bash内置了类似的功能吗?或者如果没有,那么让Bash以同样的方式工作的黑客攻击呢?
到目前为止提供的其他解决方案存在以下一个或多个问题:
>古老的测试形式 – 正如Micha?Górny所指出的那样 此版本处理上面列出的所有问题. cd () { local pwd="${PWD}/"; # we need a slash at the end so we can check for it,too if [[ "$1" == "-e" ]] then shift # start from the end [[ "$2" ]] && builtin cd "${pwd%/$1/*}/${2:-$1}/${pwd##*/$1/}" || builtin cd "$@" else # start from the beginning [[ "$2" ]] && builtin cd "${pwd//$1///$2/}" || builtin cd "$@" fi } 从这样的目录发出任何其他版本,我称之为cdX: /canis/lupus/lupus/specimen $cdX lupus familiaris bash: cd: /canis/familiaris/lupus/specimen: No such file or directory 如果“狼疮”的第二个实例是预期的那个则失败.为了适应这种情况,您可以使用“-e”选项从目录结构的末尾开始. /canis/lupus/lupus/specimen $cd -e lupus familiaris /canis/lupus/familiaris/specimen $ 或者从这一个发出其中一个: /nicknames/Robert/Rob $cdX Rob Bob bash: cd: /nicknames/Bobert/Rob: No such file or directory 将无意中替换部分字符串.我的函数通过在匹配中包含斜杠来处理这个问题. /nicknames/Robert/Rob $cd Rob Bob /nicknames/Robert/Bob $ 您还可以明确地指定目录,如下所示: /fish/fish/fins $cd fish/fins robot/fins /fish/robot/fins $ 顺便说一句,我使用了控制操作符&& amp;和||在我的功能而不是if … then … else … fi只是为了多样化. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |