を使用してファイルを作成する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)
manページから:
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
'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
Unixアプリケーションまたはコマンドを使用して、すべての出力を抑制することができます
cmd >/dev/null 2>&1
最初のビットは、標準出力(ユニット番号1)を/ dev / nullにリダイレクトします。ただし、エラー出力(ユニット番号2)を番号1と同じ場所にリダイレクトするためにも、2番目の部分が必要です。
UNIXでは、STDIN = 0、STDOUT = 1およびSTDERR = 2
stderr
は、ファイル記述子があります2。(「STDERR = 3」は単なる誤植だと
cmd 2>logfile.txt
より適応したようです
あなたがやろうとしていることを正しく理解している場合、そのsudo
コマンドをスクリプトに入れて、そこでスクリプトを実行するときにパスワードを要求することを期待していますか?その場合、あなたは物事を複雑な方法で行っているだけです。
よりクリーンな解決策は、通常の方法で(つまりなしでsudo
)スクリプトを記述し、スーパーユーザーとして実行することです。この背後にある理由は、スクリプトにスーパーユーザーアクセスが必要な場合は、アクセス権を与えるだけです(特定のコマンドまで待機する理由)。スクリプトで、rootとして実行されているかどうかを確認するには、次のようにします。
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root" 1>&2
exit 1
fi
sudo
ですか?通常のユーザーは、問題なくリダイレクトできるはず/dev/null
です。
/dev/null
-dd
書き込みアクセスが必要なため、あなたはsudoしています/dev/r$temp1
(私は推測します)。dd
の出力をどのように抑制しても、それを行う必要があります。出力のリダイレクトに/dev/null
ルートは必要ありません