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


55

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

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


7
"저자는 그것을 필요로하지 않는다"고 어떻습니까?
phunehehe 2016 년

7
모르는 독자 pvrsync -P참조 진행률 표시 줄로 이동 파일 ( 답변 중 하나 에 패치 인용 cp그래서 cp -g진행 표시기를 제공을).
Gilles

2
더 좋은 곳은 새로운 (2010 년 이후) coreutils 사용자 메일 링리스트에 있습니다.
Faheem Mitha 2016 년

답변:


57

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

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


6
이. 그리고 cp1970 년대 초반으로 거슬러 올라갑니다 : 그것은 당신이 얻을 수있는만큼 기존의 한판 승부입니다.
dmckee

3
@dmckee 그렇다면 왜 dd진행 상황을 설명 할 수 있습니까? dd1966 (OS / 360)로 돌아갑니다. 사용자가 장황하게하기를 원한다면 유닉스 도구는 장황 할 수 있지만, 불행히도 장황한 cp가 어떻게되는지 말할 수는 없습니다 (단 하나의 추가 장 황성 레벨 만 있습니다 -v).
taper

7
@taffer dd는 유닉스가 아니기 때문에 IBM 툴의 복제본이기 때문에 여러 가지 방식으로 (대부분 분명히 옵션 구문) 특이합니다. 또한 테이프의 긴 작업에 주로 사용되었으므로 cp대부분의 경우 깜박 거리고 프롬프트를 다시 얻는 위치 와 달리 메시지가 휴식 시간에서 돌아 오라고 지시했습니다 .
Gilles

16

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

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

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


3
쓰여졌을 pv때 존재 했습니까 cp? 좋은 지적이지만,이 경우 cp원래 의도적으로 진행률 출력없이 작성되었으며 다른 도구와는 아무런 관련이 없습니다.
Cascabel

1
@Jefromi : 중요하지 않은지 모르겠습니다. 이것은 cp처음 코딩되었을 때 한 가지 방법이었던 이유 에 대한 역사적인 질문이 아닙니다 . 문제는 지금 왜 그런 식으로 하는가하는 것 입니다. 오랜 세월이 지났고 누군가가 기능을 추가했을 수도 있지만 분명히하지 않기로 결정했습니다. 다른 도구가 해당 결정에 영향을 줄 수 있다고 확신합니다.
Caleb

3

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.