通过 ssh 重定向标准输出

fra*_*kus 21 ssh pipe io-redirection

我想跑

something > file
Run Code Online (Sandbox Code Playgroud)

通过 ssh 在远程系统上,但如果我运行

ssh host something > file
Run Code Online (Sandbox Code Playgroud)

重定向在本地执行为 ssh etc > file

我已经尝试过用'or''ddor|代替管道,但我无法让它工作。如何才能做到这一点?

Den*_*son 14

尝试:

ssh host 'something > file'
Run Code Online (Sandbox Code Playgroud)

这是处理重定向、管道和引号的方法的人为演示:

ssh host date -d yesterday \| awk "'{print $1}'" \> 'file" "with\ spaces.out'
Run Code Online (Sandbox Code Playgroud)

管道和重定向被转义而不是包含在整个外部引号集中,减少了对一级引号进行转义的需要。AWK 命令的单引号受双引号保护。文件名可以用同样的方式保护,但在这里我展示了单引号如何保护双引号和转义符。


小智 13

甚至更简单,而不是:

ssh host something > file
Run Code Online (Sandbox Code Playgroud)

做:

ssh host "something > file"
Run Code Online (Sandbox Code Playgroud)