2016-07-04 131 views
1

我想從遠程計算機獲取一些文件。爲此,我製作了一些管道來確定哪些文件必須被提取,並且這些結果也是我想要放入管道中的。如何表示遠程計算機上的管道和本地計算機上的管道如下

遠程管道合併爲1給ssh的命令。

我不知道如何讓遠程機器上的管道結束,並將結果放入新的本地管道。所以,我做的:

ssh [email protected] find ... | grep ...| awk ...| ls 

第2管是遠程(查找,grep的,AWK在遠程機器上運行),最後管本地(在本地機器上運行LS)。

+0

正在尋找這個'ssh user @ remote「find ... | grep ... | awk ...」| ls'(注意雙引號)?如果不是,請提供有關find,grep,awk命令的更多詳細信息以獲取[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve) – oliv

回答

2

將要在遠程計算機上執行的命令的部分封裝爲雙引號。例如。 findgrepawk將被遠程執行,而少於本地優先。

ssh [email protected] "find ... | grep ...| awk ... "| less 

正如它更好地使用單引號,如果有帶引號的字符串中沒有變量替換添加註釋「tripleee」。如果遠程命令中有變量,則使用"

ssh [email protected] "find $foo | grep ...| awk ... "| less 

或使用'如果沒有涉及變量。

ssh [email protected] 'find "foo" | grep ...| awk ... '| less 
+1

單引號更好,除非您專門要求shell在引用的字符串中執行變量替換。如果遠程命令行需要包含嵌入的單引號,則雙引號也可以用作稍微有點麻煩的解決方法。 – tripleee

+0

謝謝!我會根據你的建議更新我的答案。 – cb0

+0

我也發現了它。在遠程命令中,有單引號。所以我用雙引號。但有一個驚歎號。所以我不得不停止「」字符串,把!在單引號之間:「...」'!'「...」。但也有一個美元符號,我用一個反斜槓\逃脫。 \我無法逃避驚歎號。也許你知道爲什麼。 – ericj

相關問題