将目录从 /xxxxx/foo/yyyyyy 更改为 /xxxxx/bar/yyyyyy 的最快方法

将目录从 /xxxxx/foo/yyyyyy 更改为 /xxxxx/bar/yyyyyy 的最快方法

使用 bash,用其他内容“替换”当前路径的给定部分的最简单方法是什么?如果我当前的路径是这种形式/xxxxx/foo/yyyyy,如何/xxxxx/bar/baz/yyyyy用最短的命令跳转到该目录?

答案1

您可以根据需要利用 shell 函数来提供此功能:

change() { path=`pwd`; cd `echo $path | sed "s/$1/$2/"`; }

将从 /foo/bar/ 调用:

change "bar" "gazi"

请注意,此示例不需要“”,但对于特殊字符串(例如名称中包含空格字符的目录)则需要“”。

答案2

不是那么短,但有效:cd ${PWD/foo/bar\/baz}

答案3

cd ../../bar/baz/yyyyy
cd $(echo $PWD | sed 's|foo|bar/baz|')

第二个看起来“更酷”,但第一个更短。

答案4

假设您更改为/xxxxx/foo/yyyyywithcd /xxxxx/foo/yyyyy并希望在此命令之后直接更改到其他目录,您可以使用!!:s/foo/bar\/baz/.这意味着,重复最后一个命令,但替换foobar/baz.

当您在两个cds 之间执行某些命令时,可以使用!cd:s/foo/bar\/baz/.这意味着,重复上一个cd命令并替换。

有关更多示例和历史命令,请查看Bash 参考手册

相关内容