use*_*948 2 unix linux ssh bash solaris
我正在尝试阅读特定文件的内容.我有多个这些文件所在的主机.我在ssh期间传递下面的命令,以便它可以运行并获得输出.
使用下面的命令时,我得到指定的错误.(它主宰但没有任何反应)
$ ssh host "more $(find /my/path -name "test*")"
find: 0652-010 The starting directory is not valid.
Run Code Online (Sandbox Code Playgroud)当使用exec它不工作时,(它的sshed主机但没有任何反应)
$ ssh host "find /my/path -name "test*" -exec more {} \;"`
Run Code Online (Sandbox Code Playgroud)使用xargs时,它按预期工作
$ ssh host "find /my/path -name "test*" | xargs more"
Run Code Online (Sandbox Code Playgroud)有人可以解释为什么方法1和2不起作用?
请注意,如果我在远程主机上直接运行命令,则每种方法都有效.例如,以下所有命令在远程主机中按预期工作.
more $(find /my/path -name "test*")
find /my/path -name "test*" -exec more {} \;
find /my/path -name "test*" | xargs more
Run Code Online (Sandbox Code Playgroud)
对于(1)"... $(command substitution)"由本地 bash shell完成,你需要将其转义,以便"...$()"在命令到达远程框之前不会出现文字双引号字符串:
ssh ddd@$t "more \$(find ds -name README)"
Run Code Online (Sandbox Code Playgroud)
要么
ssh ddd@$t 'more $(find ds -name README)'
Run Code Online (Sandbox Code Playgroud)
对于(2)类似地,您需要转义它\以便它被正确地传递给远程盒:
ssh ddd@$t "find ds -name README -exec more {} \\;"
Run Code Online (Sandbox Code Playgroud)
要么
ssh ddd@$t 'find ds -name README -exec more {} \;'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5713 次 |
| 最近记录: |