많은 명령이 "조용한" 옵션을 제공하는 이유는 무엇입니까?

많은 명령이 "조용한" 옵션을 제공하는 이유는 무엇입니까?

표준 출력을 빈 파일로 리디렉션하여 동일한 결과를 쉽게 얻을 수 있는데 왜 많은 명령이 옵션을 제공하거나 -q출력을 억제합니까 ?--quiet

답변1

  • 셸에서는 쉽게 리디렉션할 수 있지만, 셸 명령줄을 사용하지 않고 다른 언어로 명령을 실행하는 등의 다른 상황에서는 쉽지 않습니다. 쉘에서도:

    find . -type f -exec grep -q foo {} \; -printf '%s\n'
    

    모두 포함된 내용을 인쇄하세요 foo. 로 리디렉션하면 및 출력이 /dev/null모두 손실됩니다 . (즉, 추가 껍질을 생성하는 것) 에 의지해야 합니다 .findgrep-exec sh -c 'exec grep foo "$1" > /dev/null' sh {} \;

  • grep -q foo타이핑 시간이 생각보다 짧습니다.grep foo > /dev/null
  • 다음으로 리디렉션한다는 /dev/null것은 출력이 계속 기록된 다음 삭제됨을 의미합니다. 이는 출력을 쓰지 않는 것(및 할당하지 않고 기록할 출력을 준비하는 것)보다 덜 효율적입니다.
  • 추가 최적화를 허용합니다. 예를 들어 grepwith 는 출력이 필요하지 않다는 것을 -q알고 있으므로 grep첫 번째 일치 항목을 찾는 즉시 종료됩니다. 의 경우에는 grep > /dev/null여전히 모든 일치 항목을 찾으려고 시도합니다.
  • 조용한반드시 의미하는 것은 아니다조용한. 일부 명령의 경우 이는 다음을 의미합니다.자세한 내용을 줄입니다.(반대로 -v|--verbose). 예를 들어 a 및 a mplayer가 있습니다 . 일부 명령의 경우 를 사용하여 자세한 내용을 3배로 줄일 수 있습니다.--quiet--really-quiet-qqq

답변2

화면에 주석을 추가해야 한다고 느낄 때 명령이 출력되도록 허용하지만 일반적으로 아무 것도 출력하지 않습니다. 모든 것을 null로 리디렉션하면 출력을 볼 기회가 없습니다.

답변3

이는 명령에 따라 달라질 수 있지만 -q에 대한 출력도 비활성화됩니다 . 이렇게 하면 쉘이 stderr을 stdout( & stderr으로 보고 있습니다 )으로 복사하는 것이 더 쉬워집니다.cshtcsh

일부 프로그램은 상태 메시지로 인해 복잡해지고 싶지 않은 다른 의미 있는 출력이 있을 수 있는 상황에 대해 "조용한" 옵션을 제공합니다. 또는 이에 상응하는 기능은 모든 프로그램 상태 출력을 음소거하여 -q예를 들어 또는 .targzip

답변4

위의 모든 좋은 응답과 요점 외에도 각 플래그에 대해 반대 옵션을 제공하는 것이 가장 좋습니다. 따라서 -v장황한 표현이 필요한 경우에는 -q장황함, 침묵, 침묵이 있어서는 안 됩니다. (그러나 이것이 이 논의의 요점은 아닙니다...) 모든 짧은 옵션에는 긴 옵션도 있어야 -q하며 --quiet.

우리 사업의 거의 모든 것과 마찬가지로, 솔루션이나 동일한 결과를 달성하는 방법에는 여러 가지가 있습니다. 소유도 -q그 중 하나입니다.

관련 정보