Linux:我可以为复杂的 cd 命令构建快捷方式而不使用 shell 脚本吗?

abe*_*ger 6 linux bash

在我工作的服务器上,我总是必须在一个目录中工作,我们称之为/foo/bar. 在该目录中是站点目录列表。在这些目录中的每一个中都有一个针对每个开发人员的目录。所以,树看起来像这样:

/foo/bar/
         site1/
               userA/
               userB/
               userC/
         site2/
               userA/
               userB/
               userC/
         site3/
               userA/
         ...
Run Code Online (Sandbox Code Playgroud)

我在 .bash_profile, 中为根目录设置了别名fb=/foo/bar,因此我的工作流程如下所示:

$ cd $fb
$ cd site2
$ cd userA
Run Code Online (Sandbox Code Playgroud)

第一行和第三行永远不会改变——我总是会转到userA我更改到的任何站点目录的目录。

我的问题:有没有一种聪明的方法可以将它压缩成一个命令,我只需传递“site2”参数,而不必将其构建到 shell 脚本中?还是shell脚本是唯一的方法?

小智 6

你可以用 bash 函数做点什么

site() {
    cd /foo/bar/site${1}/userA
}
Run Code Online (Sandbox Code Playgroud)

把它放在你的 .bashrc 中,然后像这样调用它

site 2
Run Code Online (Sandbox Code Playgroud)

它会带你到 /foo/bar/site2/userA

  • 我没有发现函数和单独的脚本之间有任何有意义的区别……但这确实是做到这一点的方法。多个别名 a-la Steve Will 的建议也有效,但不需要更少的设置工作。我个人同时使用两者:用于特定目录的大量离散 cd 别名,以及用于模式化目录更改的函数。 (2认同)