나는 방법을 묻지 않습니다 . 이미 같은 옵션을 알고 pv
및 rsync -P
.
진행률 표시 줄을 적어도 플래그로 구현 하지 않는 이유 를 묻고 싶습니다 cp
.
나는 방법을 묻지 않습니다 . 이미 같은 옵션을 알고 pv
및 rsync -P
.
진행률 표시 줄을 적어도 플래그로 구현 하지 않는 이유 를 묻고 싶습니다 cp
.
답변:
유닉스 도구의 전통은 무언가 잘못되었을 때만 메시지를 표시하는 것입니다. 나는 이것이 디자인과 실용적인 이유로 생각합니다. 디자인은 문제가 발생했을 때 명확하게하기위한 것입니다. 오류 메시지가 표시되고 실제로는 정보가없는 메시지에 빠지지 않습니다. 실질적인 이유는 유닉스 초기에는 여전히 전신 인이 있었기 때문이다 . 즉, 프로그램의 출력이 종이에 인쇄되며 진행률 표시 줄을 인쇄하지 않으려 고합니다.
이유가 무엇이든, 유용한 메시지 만 표시하는 전통은 유닉스 세계에 갇혀 있습니다. 현대 도구는 때때로 진행 표시 줄을 도입했습니다. rsync의 경우 주된 동기는 rsync가 네트워크를 통해 수행되고 네트워크가 로컬 디스크보다 훨씬 까다로워 진행률 표시 줄이 더 유용하다는 것입니다. 동일한 이유가 wget에 적용됩니다.
cp
1970 년대 초반으로 거슬러 올라갑니다 : 그것은 당신이 얻을 수있는만큼 기존의 한판 승부입니다.
dd
진행 상황을 설명 할 수 있습니까? dd
1966 (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 진행 뷰어 ( 이전과 같은 알 ) 시스템의 모든 프로세스의 상태를 표시합니다.progress
cv