在我工作的服务器上,我总是必须在一个目录中工作,我们称之为/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
将其放入您的登录脚本中,宾果游戏,您所有的工作基础都属于我们!