如何一步通过 SSH 连接到远程服务器并 cd 进入源目录 - BASH
How to SSH to remote server and cd into source directory in one step - BASH
我的远程服务器上有多个存储库,如下所示:
源代码/
- repoA
- repoB
- repoC
每次我必须在 repo(比如 repoA)上的远程机器上工作时,我会做两件事:
- ssh 到远程服务器
- cd sourcecode/repoA 在遥控器上
我希望能够在我的 Mac 上有一个别名/函数,而不是一直这样做,这样当我执行“ssh-with-fancy-function”并传递参数时: repoA ,它应该 ssh 到远程服务器,完成后,应该将我在远程服务器上的当前目录更改为 sourcecode/repoA 并保留。
我该怎么做?
ssh_cd() {
if (( $# != 1 )); then
echo "usage: ${FUNCNAME[0]} remote_dir" >&2
return 1
fi
printf -v cmd 'cd %q && bash -i' ""
ssh -t user@remote-host "$cmd"
}
这里的关键是你用bash -i
结束命令来启动一个交互shell;和 -t
ssh 选项以确保您有一个可以与之交互的 tty。
这假设您的遥控器 shell 是 bash。
我的远程服务器上有多个存储库,如下所示:
源代码/
- repoA
- repoB
- repoC
每次我必须在 repo(比如 repoA)上的远程机器上工作时,我会做两件事:
- ssh 到远程服务器
- cd sourcecode/repoA 在遥控器上
我希望能够在我的 Mac 上有一个别名/函数,而不是一直这样做,这样当我执行“ssh-with-fancy-function”并传递参数时: repoA ,它应该 ssh 到远程服务器,完成后,应该将我在远程服务器上的当前目录更改为 sourcecode/repoA 并保留。
我该怎么做?
ssh_cd() {
if (( $# != 1 )); then
echo "usage: ${FUNCNAME[0]} remote_dir" >&2
return 1
fi
printf -v cmd 'cd %q && bash -i' ""
ssh -t user@remote-host "$cmd"
}
这里的关键是你用bash -i
结束命令来启动一个交互shell;和 -t
ssh 选项以确保您有一个可以与之交互的 tty。
这假设您的遥控器 shell 是 bash。