특정 파일의 내용을 읽으려고합니다. 이 파일이있는 여러 호스트가 있습니다. 내가 실행하고 출력을 얻을 수 있도록 ssh 중에 아래 명령을 전달하고 있습니다.ssh를 통해 find 명령을 전달할 때 발생하는 문제
아래의 명령을 사용하면 지정된 오류가 발생합니다. 작동하지 않는 그 간부를 사용하는 경우
$ ssh host "more $(find /my/path -name "test*")" find: 0652-010 The starting directory is not valid.
(자사가 호스팅하는 sshed하지만 아무 일도 발생하지 않습니다) (호스트하지만 아무 반응이 없습니다 sshed)
를 예상대로 작동하고 xargs를 사용하는 경우$ ssh host "find /my/path -name "test*" -exec more {} \;"`
을
$ ssh host "find /my/path -name "test*" | xargs more"
누군가 이유를 설명 할 방법 1 & 2가 작동하지 않습니까?
원격 호스트에서 직접 명령을 실행하면 모든 방법이 작동합니다. 예를 들어 아래의 모든 명령은 원격 호스트에서 예상대로 작동합니다.
more $(find /my/path -name "test*")
find /my/path -name "test*" -exec more {} \;
find /my/path -name "test*" | xargs more
나는 파일을 찾으려고 노력 등을 사용하여 읽어 보시기하고 있습니다. 또한 방법 3은 내부 인용 부호가 있지만 그 중 하나가 작동하면 왜 방법 1이 작동하지 않습니까? 당신이 말했듯이 나는 내부 인용문을 벗어나려고 노력했지만 그것도 작동하지 않았다. – user1028948
아아, 뭔가 다른 점이 있습니다 ... find는 파일의 내용이 아닌 파일의 목록을 반환합니다 ... xargs를 사용하여 이러한 파일 목록을 처리 (사용) 할 수 있지만 거기에 터미널이 없으므로 _server_ 측에서'more' ('less')를 사용하십시오. 이 명령은 화면의 길이를 결정할 수 없으므로 출력을 중단 할 수 있습니다. 대신'cat'처럼 전체 파일을 플러시합니다. 다시 말하지만 그 출력을 _local_ 명령으로 파이프 할 수 있습니다 :'ssh host "find/my/path -name \"test * \ "| xargs cat"| more' ... – arkascha