rpm 매뉴얼 페이지에서:
--pipe CMD
Pipes the output of rpm to the command CMD.
이것이 추가된 이유는 무엇입니까? 쉘 자체를 통해 파이프하는 대신 이것을 사용하는 이유는 무엇입니까?
답변1
rpm
이 옵션은 셸에서 호출할 때 아무 소용이 없습니다.
그러나 다른 프로그램에서 호출될 때 해당 인수가 어떤 형태의 사용자 입력으로 구성된 경우 비정적 인수 전달을 단순화합니다 rpm
(호출 프로그램이 다른 프로그램 언어를 실행하기 위해 셸을 강제로 호출하지 않는 방법을 사용하는 경우) ):
- 셸을 사용하지 않는 경우 호출 프로그램은 자체적으로 파이프라인을 설정하고 별도로 호출하고
rpm
대기 해야 합니다CMD
. - 와 같은 셸을 사용할 때 해당
sh -c ´rpm Argument1 Argument2 ...´ | CMD
인수에 공백이나 셸 메타 문자가 포함될 수 있는 경우 인수가 단어로 분할되거나 셸에 의해 해석되는 것을 방지하기 위해 인수를 추가로 인용해야 합니다.
인수 중 일부rpm
가 호출 프로그램 사용자 입력에 대한 것인 경우 아마도 프로그래머는Tom and Alice´s dog
쉘에 대한 인수 목록을 작성할 때 이를 변환해야 할 것입니다.Tom\ and\ Alice\´s\ dog
(그리고 모든 매개변수는CMD
같은 방식으로 인용되어야 합니다.)
이는 속도가 느리고 오류가 발생하기 쉬우며 보안 문제를 일으킬 수 있습니다. - 이 옵션을 사용할 때
--pipe
호출 프로그램에서는 이러한 항목이 필요하지 않습니다 .
(그러나 모든 인수는CMD
이전과 같이 인용되어야 합니다. 왜냐하면 CMD는 셸에 의해 해석되고 셸은 단일 인수의 단일 단어rpm
와 마찬가지로 호출되기 때문입니다 .)CMD
rpm