Как подключить SSH к удаленному серверу и cd в исходный каталог за один шаг — BASH

#bash #shell #ssh #command-line #command-line-arguments

#bash #оболочка #ssh #командная строка #аргументы командной строки

Вопрос:

У меня есть несколько репозиториев на моем удаленном сервере, например:

исходный код/

  • repoA
  • repoB
  • repoC

Каждый раз, когда мне приходится работать на удаленном компьютере с репозиторием (скажем, repoA), я делаю две вещи:

  1. ssh к удаленному серверу
  2. исходный код / репозиторий cd на удаленном

Вместо того, чтобы делать это все время, я хотел бы иметь псевдоним / функцию на моем Mac, чтобы, когда я выполняю «ssh-with-fancy-function» и передаю аргумент: repoA, он должен подключаться к удаленному серверу по ssh и после завершения должен изменить мой текущийкаталог на удаленном сервере к исходному коду / репозиторию и остаться.

Как я могу это сделать?

Ответ №1:

 ssh_cd() {
  if (( $# != 1 )); then
    echo "usage: ${FUNCNAME[0]} remote_dir" >amp;2
    return 1
  fi
  printf -v cmd 'cd %q amp;amp; bash -i' "$1"
  ssh -t user@remote-host "$cmd"
}
 

Ключевым моментом здесь является то, что вы завершаете команду, bash -i чтобы запустить интерактивную оболочку; и параметр -t ssh, чтобы убедиться, что у вас есть tty для взаимодействия.
Предполагается, что ваша удаленная оболочка — bash.