cp에 wget과 같은 진행 표시 줄이없는 이유는 무엇입니까? . 이미 같은

나는 방법을 묻지 않습니다 . 이미 같은 옵션을 알고 pvrsync -P.

진행률 표시 줄을 적어도 플래그로 구현 하지 않는 이유 를 묻고 싶습니다 cp.



답변

유닉스 도구의 전통은 무언가 잘못되었을 때만 메시지를 표시하는 것입니다. 나는 이것이 디자인과 실용적인 이유로 생각합니다. 디자인은 문제가 발생했을 때 명확하게하기위한 것입니다. 오류 메시지가 표시되고 실제로는 정보가없는 메시지에 빠지지 않습니다. 실질적인 이유는 유닉스 초기에는 여전히 전신 인이 있었기 때문이다 . 즉, 프로그램의 출력이 종이에 인쇄되며 진행률 표시 줄을 인쇄하지 않으려 고합니다.

이유가 무엇이든, 유용한 메시지 만 표시하는 전통은 유닉스 세계에 갇혀 있습니다. 현대 도구는 때때로 진행 표시 줄을 도입했습니다. rsync의 경우 주된 동기는 rsync가 네트워크를 통해 수행되고 네트워크가 로컬 디스크보다 훨씬 까다로워 진행률 표시 줄이 더 유용하다는 것입니다. 동일한 이유가 wget에 적용됩니다.


답변

유닉스 세계에서 각 도구는 하나의 작업을 수행하고 잘 수행하도록 설계되었습니다. cp다른 도구 pv가 이미 있을 때 진행률을 출력하는 것에 대해 왜 걱정할 것 입니까? 같은 맥락에서 왜 그렇게 많은 프로그램이 페이지를 매김없이 화면에 덤프합니까? more(또는 less) 와 같이 해당 작업을위한 도구가 이미 있기 때문 입니다. 파일 편집이 필요한 대부분의 프로그램이 편집기를 제공하지 않고 대신 아웃소싱하는 이유는 무엇 $EDITOR입니까? 모든 사람이 한 가지 작업을 수행하도록하고 사용자가 모든 작업에 선호하는 편집기를 사용하도록합니다.

접선으로 대부분의 쉘 프로그램은 다른 쉘 프로그램으로 출력을 파이프하도록 설계되었습니다. 그들이 줄 수있는 유일한 결과는 체인의 다음 명령에서 파싱하는 데 유용한 것입니다. 같은 프로그램 cp은 터미널에서 수동으로뿐만 아니라 스크립트에서도 사용되므로 출력은 종료 코드 및 실패하거나 성공한 파일 목록을 중심으로합니다.

원하는 효과를 달성하기 위해 항상 도구를 결합해야합니다.


답변

이것은 진행률 표시 줄 옵션을 cp에 추가하거나 반대하는 주장이있는 한계가있는 것 중 하나입니다. 에 대한 주요 주장은, 당신이 진행 상황을 알고 싶어한다는 것을 미리 알 수 없다는 것입니다. Ctrl-T / SIGINFO는 이러한 목적으로 BSD에서 사용할 수 있으며, GNU / Linux 플랫폼에서 사용할 수있게되면 cp에서 진행률 표시 줄 논리를 트리거해야 할 더 많은 이유가있을 수 있습니다. 한편보다 일반적인 솔루션과 같은 별도의 도구를 사용하는 것입니다 로 coreutils 진행 뷰어 ( 이전과 같은 알 ) 시스템의 모든 프로세스의 상태를 표시합니다.progresscv