Linux:我可以为复杂的 cd 命令构建快捷方式而无需求助于 shell 脚本吗?

Linux:我可以为复杂的 cd 命令构建快捷方式而无需求助于 shell 脚本吗?

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

/foo/bar/
         site1/
               userA/
               userB/
               userC/
         site2/
               userA/
               userB/
               userC/
         site3/
               userA/
         ...

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

$ cd $fb
$ cd site2
$ cd userA

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

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

答案1

你可以用 bash 函数做一些事情

site() {
    cd /foo/bar/site${1}/userA
}

将其放入您的 .bashrc 中,然后像这样调用它

site 2

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

答案2

使用像这样的 bash 函数。

function myCD() {
   local site
   local user
   case $# in
     0)  read -p site: site
         read -p user: user
         ;;
     1|2)
        site=${1}
        user=${2:-userA}
        ;;
    *)
       echo "don't accept more as 2 arguments" >&2
       return 1
       ;;
   esac
   cd ${fb}/${site}/${user}
}

答案3

你可能只使用一个别名,比如

alias site2="cd /foo/bar/site2/userA"

您可能还想查看 CDPATH 环境变量。请参阅您的 shell 的手册页。

答案4

只需将它们链接到您的主目录即可:

ln -s /foo/bar/site{$1}/userA ~/workspace/$1

这样,它们对您来说都会显得本地化。在添加新站点之前无需闲逛。

或者,做我所做的:通过 SSH 直接将它们安装到我的本地工作站上我的主目录.. IDE 等等,不管它们是什么,它通常更有效。

mkdir ~/workspace/site1
sshfs -o idmap=user $USER@server:/foo/bar/baz/site1/userA ~/workspace/site1

要卸载,

fusermount -u ~/workspace/site1

ubuntu帮助

将其放入您的登录脚本中,宾果游戏,您所有的工作基础都属于我们!

相关内容