最优雅的方式是将文件复制到远程主机,然后执行它

最优雅的方式是将文件复制到远程主机,然后执行它

我发现自己经常执行类似 REPL 的操作:

vim foo.sh
scp foo.sh host:/tmp/foo.sh
ssh host /tmp/foo.sh
# realizing it wasn't quite right
vim foo.sh
scp foo.sh host:/tmp/foo.sh
ssh host /tmp/foo.sh
# repeat many times

我本来打算努力编写一个 shell 脚本来简化这个问题,但想知道是否有比我更聪明的人能更优雅地解决这个问题。

你的解决方案是什么?除了 emacs :)

编辑:为什么不直接在远程主机上编辑我的文件?很简单,接收我的脚本的主机并不总是会设置开发环境,因此在这种情况下主机可能没有我所有的 vim 自定义;有时它会是 C 代码而不是 shell 脚本,这意味着我的工作流程如下所示:

vim foo.c
make
scp foo host:/tmp/foo
ssh host /tmp/foo
# repeat

这就是原因。我想我想要一个具有类似界面的东西:

edit_loop foo.c --make --copy-and-run=host:/tmp/foo

你怎么认为?

答案1

ssh remotehost bash < foo.sh

答案2

步骤 1:使用 SSH-FUSE 将远程主机挂载为本地文件夹。

第2步:vim ssh-mount/foo.sh

步骤 3:从第二个终端,或从 vim 分支,运行ssh host:.../foo.sh

冲洗并重复。

关联http://fuse.sourceforge.net/sshfs.html

答案3

您不需要反复scp访问服务器;让 Vim 自动为您处理!

vim scp://user@host/path/to/file

然后您可以ssh user@host在单独的终端中运行,并在那里运行make/path/to/file

如果您需要服务器上没有的构建环境,您应该查看前面的答案sshfs

相关内容