%x{command}
으로 Ruby에서 명령을 호출하면 표준 출력이 캡처되고 표준 오류가 화면에 표시됩니다. 그러나 나는 둘 다 붙 잡히고 싶다. 나는 화면에서 그 두 가지를보고 싶다. 이것을 어떻게 할 수 있습니까?STDOUT과 STDERR을 루비에서 어떻게 리다이렉하고 동일하게 만드나요?
%x{command 2>&1 1>&2}
구성이 작동하지 않는 것처럼 보입니다.
%x{command}
으로 Ruby에서 명령을 호출하면 표준 출력이 캡처되고 표준 오류가 화면에 표시됩니다. 그러나 나는 둘 다 붙 잡히고 싶다. 나는 화면에서 그 두 가지를보고 싶다. 이것을 어떻게 할 수 있습니까?STDOUT과 STDERR을 루비에서 어떻게 리다이렉하고 동일하게 만드나요?
%x{command 2>&1 1>&2}
구성이 작동하지 않는 것처럼 보입니다.
2.1.3 :005 > %x{(ls -d /boot 2>&1) | tee /dev/stderr}
/boot
=> "/boot\n"
2.1.3 :006 > %x{(ls /no_such_file 2>&1) | tee /dev/stderr}
ls: cannot access /no_such_file: No such file or directory
=> "ls: cannot access /no_such_file: No such file or directory\n"
리디렉션이 잘못되었습니다. 당신이 stderr
이 다시 stdout
를 리디렉션 stderr
여기
1>&2
stdout
에 여기
2>&1
당신은 당신이 원하는 무엇인가 리디렉션 :
%x{command 2>&1}
하기에 puts
를 호출해야합니다 스크립트에서 화면 출력을 얻으십시오. 이 도움이
puts %x{command 2>&1}
희망을 (모든 것을 대신 표준 오류의 현재 표준 출력하는 것입니다 때문에).
Thx 그러나 원본 stderr과 stdout이 모두 캡처되어 화면에 표시되지 않습니다 (실시간). – Konstantin
화면에 나타나지 않는다는 것은 무엇을 의미합니까? – ptierno
스크립트에서 화면으로 출력하려면'puts '를 호출해야합니다. stderr이 화면에 간 유일한 이유는 오류이기 때문입니다. 'puts' – ptierno