dd 출력을 억제하는 방법은 무엇입니까?

dd 출력을 억제하는 방법은 무엇입니까?

을 사용하는 bash 스크립트가 있습니다 dd. 문제는 dd가 내 스크립트의 출력을 엉망으로 만드는 많은 출력을 발생시킨다는 것입니다. 주변을 검색해 보니 해결책을 찾았습니다.

dd if=boot1h of="/dev/r$temp1" >& /dev/null

대안이 있습니까, 아니면 /dev/null유일한 방법으로 리디렉션합니까?

답변1

다음에 추가 status=none:

dd if=boot1h of="/dev/r$temp1" status=none

~에서dd(coreutils) 8.21 문서:

'status=LEVEL'
     Transfer information is normally output to stderr upon receipt of
     the 'INFO' signal or when 'dd' exits.  Specifying LEVEL will adjust
     the amount of information printed, with the last LEVEL specified
     taking precedence.

     'none'
          Do not print any informational or warning messages to stderr.
          Error messages are output as normal.

     'noxfer'
          Do not print the final transfer rate and volume statistics
          that normally make up the last status line.

     'progress'
          Print the transfer rate and volume statistics on stderr, when
          processing each input block.  Statistics are output on a
          single line at most once every second, but updates can be
          delayed when waiting on I/O.

답변2

dd(1)매뉴얼 페이지 에서 :

   status=noxfer
          suppress transfer statistics

그러므로:

dd if=boot1h of="/dev/r$temp1" status=noxfer

이것은 여전히 ​​​​출력됩니다

0+1 records in
0+1 records out

종료 시 가비지를 생성하므로 dd데이터 싱크로 리디렉션하는 것이 실제로 유일한 옵션입니다.

답변3

나중에 참고할 수 있도록:

dd 출력을 억제하려면 다음과 같이 stderr을 /dev/null로 완전히 리디렉션합니다.

dd if=/dev/urandom of=sample.txt bs=5MB count=1 2> /dev/null

예를 들어, bash에서 time 명령을 사용하여 프로세스 시간을 측정하고 dd에서 생성된 출력을 가져오지 않고 결과를 변수에 할당하려는 경우 이 방법이 잘 작동합니다.

인용하다:http://www.unix.com/shell-programming-and-scripting/131624-how-suppress-dd-output.html

답변4

이와 같은 기능은 최신 버전의 BASH 및 ZSH에서도 작동합니다.

dd if=/path/to/file of=/path/to/another_file bs=1M count=1 &> /dev/null

PS 이것은 내가 실행한 것의 예일 뿐입니다...

관련 정보