중복 가능성:
cp에는 왜 wget과 같은 진행 표시줄이 없나요?
최근에 저는 Linux에서 꽤 큰 파일을 다루었습니다. 나는 이러한 대용량 파일의 내용을 쪼개고, 쪼개고, 보기 위해 , sed
, cut
, sort
, uniq
와 awk
같은 명령을 자주 사용합니다. perl
나는 일반적으로 그러한 작업이 몇 초, 몇 시간, 며칠 또는 "안 돼요".
Windows, Mac OS와 같은 기타 플랫폼
위의 대부분의 예에서는예명령이 파일을 정확히 어떻게 수정하는지 적극적으로 생각한 다음 디스크 출력의 현재 크기를 확인하여 현재 진행 상황을 추측할 수 있습니다. 아니면 디스크의 파일 크기 변화율을 관찰할 수도 있습니다. 하지만 이런 명령으로는 sort -d -u big_file > output_file
작업이 1분 안에 완료될지, 1년 안에 완료될지 알 수 없을 것 같습니다.
이 누락된 기능은 의도적인 것입니까? 이를 수행하는 Linux 방법이 있습니까? 일반적으로 더 작은 파일로 이러한 요구를 제거할 수 있습니까?
하나진짜haxor는 파일에서 직접 값을 스캔하여 이러한 작업의 진행 상황을 시각적으로 이해합니까 .pid
?
답변1
예, 이는 UNIX의 정신에 위배됩니다. 일반적으로 Unix 명령은 성공 시 출력을 반환하지 않으며 오류 발생 시에만 출력을 제공합니다. 이는 자동화를 촉진합니다. 스크립트는 명령의 모든 출력을 오류 보고서로 처리하고 이를 시스템 관리자에게 기록하거나 메일로 보낼 수 있습니다. 이것이 cron 데몬이 작동하는 방식입니다.
Unix는 시스템 관리자가 콘솔 위로 마우스를 가져가서 일어나는 모든 일을 관찰하는 것이 아니라 자동화를 위해 설계되었습니다.
즉, 많은 유틸리티에는 더 많은 출력을 제공하기 위해 동등한 -verbose(또는 -v 또는 --verbose) 플래그가 있습니다. 예를 들어 rsync에는 --progress 플래그가 있습니다. 대화형 세션이나 스크립트에서 사용되는지 여부를 감지하고 그에 따라 출력을 조정하는 다른 도구가 있습니다. Wget은 대화형 세션에 대한 진행 표시기와 스크립트에 대한 진행 표시기를 제공하지만 완전히 침묵할 수 있습니다.
또한 일부 유틸리티(예:술집,데바,PV) 데이터 전송의 통로로 사용하고 진행 상황을 표시하도록 설계되었습니다. 필요할 때 추가하세요.
답변2
pv
당신의 친구입니다. 진행 상황을 확인하려는 곳에 삽입하세요.
좋다
pv big_file | sort ...