을 사용하여 파일을 만드는 bash 스크립트가 dd
있습니다. 문제는 dd가 내 스크립트의 출력을 엉망으로 만드는 많은 양의 출력을 던진다는 것입니다. 주변을 검색하여 해결책을 찾았습니다.
dd if=boot1h of="/dev/r$temp1" >& /dev/null
대안이 있습니까, 아니면 /dev/null
유일한 방법으로 리디렉션 합니까?
cat
, head
또는 tail
대신합니다.
을 사용하여 파일을 만드는 bash 스크립트가 dd
있습니다. 문제는 dd가 내 스크립트의 출력을 엉망으로 만드는 많은 양의 출력을 던진다는 것입니다. 주변을 검색하여 해결책을 찾았습니다.
dd if=boot1h of="/dev/r$temp1" >& /dev/null
대안이 있습니까, 아니면 /dev/null
유일한 방법으로 리디렉션 합니까?
cat
, head
또는 tail
대신합니다.
답변:
로부터 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
하므로 데이터 싱크로 리디렉션하는 것이 실제로 유일한 옵션입니다.
추가 status=none
:
dd if=boot1h of="/dev/r$temp1" status=none
로부터 8.21 문서 DD (로 coreutils) :
'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.
info page
; 초기 대답은 여기에 있었다 정확한 견적 로부터를 man page
. 페이지가 모호하지만 실제로는 귀하에게 달려 info
있다면 페이지 에서 직접 복사 / 붙여 넣기했을 것 man
입니다.
dd
status=
dd: invalid status flag: `none' Try `dd --help' for more information.
나중에 참조 할 수 있도록 :
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
모든 유닉스 응용 프로그램이나 명령을 사용하면
cmd >/dev/null 2>&1
첫 번째 비트는 표준 출력 (장치 번호 1)을 / dev / null로 리디렉션합니다. 그러나 오류 출력 (장치 번호 2)을 숫자 1과 같은 위치로 리디렉션하려면 두 번째 부분이 필요합니다.
UNIX에서 STDIN = 0, STDOUT = 1 및 STDERR = 2
stderr
파일 디스크립터 2가 있습니다. ( "STDERR = 3"은 오타
cmd 2>logfile.txt
더 적응 된 것 같습니다
내가하려는 일을 올바르게 이해하면 해당 sudo
명령을 스크립트에 넣고 암호가 실행될 때 스크립트가 프롬프트를 표시하도록 기대합니까? 이 경우에는 복잡한 방식으로 작업을 수행하는 것입니다.
보다 확실한 해결책은 일반적인 방법으로 (즉,없이 sudo
) 스크립트를 작성 하여 수퍼 유저로 실행하는 것 입니다. 그 이유는 스크립트에 수퍼 유저 액세스가 필요한 경우 액세스 권한을 부여하면됩니다 (특정 명령이 나올 때까지 기다리는 이유). 스크립트에서 루트로 실행되고 있는지 확인하려면 다음과 같이하십시오.
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root" 1>&2
exit 1
fi
sudo
은 처음에 필요 했 습니까? 일반 사용자는 사물을 제대로 리디렉션 할 수 있어야 /dev/null
합니다.
/dev/null
-dd
쓰기 액세스가 필요 하기 때문에 sudoing 하고 있습니다/dev/r$temp1
(나는 가정합니다).dd
출력을 어떻게 억제하는지에 관계없이 그렇게해야합니다 . 출력을 재 지정하기/dev/null
위해 루트가 필요하지 않음