#bash #shell #ssh #command-line #command-line-arguments
#bash #оболочка #ssh #командная строка #аргументы командной строки
Вопрос:
У меня есть несколько репозиториев на моем удаленном сервере, например:
исходный код/
- repoA
- repoB
- repoC
Каждый раз, когда мне приходится работать на удаленном компьютере с репозиторием (скажем, repoA), я делаю две вещи:
- ssh к удаленному серверу
- исходный код / репозиторий 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.