나는 방법을 묻지 않습니다 . 이미 같은 옵션을 알고 pv및 rsync -P.
진행률 표시 줄을 적어도 플래그로 구현 하지 않는 이유 를 묻고 싶습니다 cp.
나는 방법을 묻지 않습니다 . 이미 같은 옵션을 알고 pv및 rsync -P.
진행률 표시 줄을 적어도 플래그로 구현 하지 않는 이유 를 묻고 싶습니다 cp.
답변:
유닉스 도구의 전통은 무언가 잘못되었을 때만 메시지를 표시하는 것입니다. 나는 이것이 디자인과 실용적인 이유로 생각합니다. 디자인은 문제가 발생했을 때 명확하게하기위한 것입니다. 오류 메시지가 표시되고 실제로는 정보가없는 메시지에 빠지지 않습니다. 실질적인 이유는 유닉스 초기에는 여전히 전신 인이 있었기 때문이다 . 즉, 프로그램의 출력이 종이에 인쇄되며 진행률 표시 줄을 인쇄하지 않으려 고합니다.
이유가 무엇이든, 유용한 메시지 만 표시하는 전통은 유닉스 세계에 갇혀 있습니다. 현대 도구는 때때로 진행 표시 줄을 도입했습니다. rsync의 경우 주된 동기는 rsync가 네트워크를 통해 수행되고 네트워크가 로컬 디스크보다 훨씬 까다로워 진행률 표시 줄이 더 유용하다는 것입니다. 동일한 이유가 wget에 적용됩니다.
cp1970 년대 초반으로 거슬러 올라갑니다 : 그것은 당신이 얻을 수있는만큼 기존의 한판 승부입니다.
dd진행 상황을 설명 할 수 있습니까? dd1966 (OS / 360)로 돌아갑니다. 사용자가 장황하게하기를 원한다면 유닉스 도구는 장황 할 수 있지만, 불행히도 장황한 cp가 어떻게되는지 말할 수는 없습니다 (단 하나의 추가 장 황성 레벨 만 있습니다 -v).
dd는 유닉스가 아니기 때문에 IBM 툴의 복제본이기 때문에 여러 가지 방식으로 (대부분 분명히 옵션 구문) 특이합니다. 또한 테이프의 긴 작업에 주로 사용되었으므로 cp대부분의 경우 깜박 거리고 프롬프트를 다시 얻는 위치 와 달리 메시지가 휴식 시간에서 돌아 오라고 지시했습니다 .
유닉스 세계에서 각 도구는 하나의 작업을 수행하고 잘 수행하도록 설계되었습니다. cp다른 도구 pv가 이미 있을 때 진행률을 출력하는 것에 대해 왜 걱정할 것 입니까? 같은 맥락에서 왜 그렇게 많은 프로그램이 페이지를 매김없이 화면에 덤프합니까? more(또는 less) 와 같이 해당 작업을위한 도구가 이미 있기 때문 입니다. 파일 편집이 필요한 대부분의 프로그램이 편집기를 제공하지 않고 대신 아웃소싱하는 이유는 무엇 $EDITOR입니까? 모든 사람이 한 가지 작업을 수행하도록하고 사용자가 모든 작업에 선호하는 편집기를 사용하도록합니다.
접선으로 대부분의 쉘 프로그램은 다른 쉘 프로그램으로 출력을 파이프하도록 설계되었습니다. 그들이 줄 수있는 유일한 결과는 체인의 다음 명령에서 파싱하는 데 유용한 것입니다. 같은 프로그램 cp은 터미널에서 수동으로뿐만 아니라 스크립트에서도 사용되므로 출력은 종료 코드 및 실패하거나 성공한 파일 목록을 중심으로합니다.
원하는 효과를 달성하기 위해 항상 도구를 결합해야합니다.
pv때 존재 했습니까 cp? 좋은 지적이지만,이 경우 cp원래 의도적으로 진행률 출력없이 작성되었으며 다른 도구와는 아무런 관련이 없습니다.
cp처음 코딩되었을 때 한 가지 방법이었던 이유 에 대한 역사적인 질문이 아닙니다 . 문제는 지금 왜 그런 식으로 하는가하는 것 입니다. 오랜 세월이 지났고 누군가가 기능을 추가했을 수도 있지만 분명히하지 않기로 결정했습니다. 다른 도구가 해당 결정에 영향을 줄 수 있다고 확신합니다.
이것은 진행률 표시 줄 옵션을 cp에 추가하거나 반대하는 주장이있는 한계가있는 것 중 하나입니다. 에 대한 주요 주장은, 당신이 진행 상황을 알고 싶어한다는 것을 미리 알 수 없다는 것입니다. Ctrl-T / SIGINFO는 이러한 목적으로 BSD에서 사용할 수 있으며, GNU / Linux 플랫폼에서 사용할 수있게되면 cp에서 진행률 표시 줄 논리를 트리거해야 할 더 많은 이유가있을 수 있습니다. 한편보다 일반적인 솔루션과 같은 별도의 도구를 사용하는 것입니다 로 coreutils 진행 뷰어 ( 이전과 같은 알 ) 시스템의 모든 프로세스의 상태를 표시합니다.progresscv