如何一步通过 SSH 连接到远程服务器并 cd 进入源目录 - BASH

How to SSH to remote server and cd into source directory in one step - BASH

我的远程服务器上有多个存储库,如下所示:

源代码/

每次我必须在 repo(比如 repoA)上的远程机器上工作时,我会做两件事:

  1. ssh 到远程服务器
  2. 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。