我想从远程计算机上获取一些文件。为此我做了一些管道来确定哪些文件必须被提取,这些结果我也想放入管道。
远程管道组合为1个命令,该命令被赋予ssh。
我不知道如何知道远程机器上的管道在哪里结束并将结果放入新的本地管道中。所以我这样做:
ssh user@remote find ... | grep ...| awk ...| ls
前两个管道是远程的(find,grep,awk在远程机器上运行),最后一个管道是本地的(ls在本地机器上运行)。
答案 0 :(得分:2)
将要在远程计算机上执行的命令部分包装成双引号。例如。 find
,grep
和awk
将被远程执行,而较少将在本地执行。
ssh user@remote "find ... | grep ...| awk ... "| less
如评论中添加的“tripleee”,如果引用的字符串中没有变量替换,则最好使用单引号。因此,如果远程命令中有变量,请使用"
。
ssh user@remote "find $foo | grep ...| awk ... "| less
如果没有涉及变量,请或使用'
。
ssh user@remote 'find "foo" | grep ...| awk ... '| less