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

我发现自己经常执行类似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脚本来使这个更简单,但是想知道比我聪明的人是否更优雅地解决了这个问题。

你的解决scheme是什么? 除了emacs 🙂

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

 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 

你怎么看?

 ssh remotehost bash < foo.sh 

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

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

步骤3:从第二个terminal,或者从vim分叉,运行ssh host:.../foo.sh

冲洗并重复。

链接 : http : //fuse.sourceforge.net/sshfs.html

您不需要重复scp到服务器; 让Vim自动为你处理!

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

然后,您可以在单独的terminal中运行ssh user@host ,然后在其中运行make/path/to/file

如果你需要一个在服务器上不可用的构build环境,你应该检查一下关于sshfs回答。