xxdとuniqを使ってドライブが0に設定されていることを確認しますか?

xxdとuniqを使ってドライブが0に設定されていることを確認しますか?

USBデバイスの完全なバイナリコンテンツが純粋なゼロであることを確認する方法を探しています。

このコマンドを試しています。 sudo xxd /dev/sdb | uniqしかし、出力はなく、永遠に実行されます。

Sortコマンドを検討しましたが、標準の端末出力だけでなくファイルも読み取る必要があることを理解しました。

更新:確認できることに気づきましたsudo xxd -a /dev/sdbが、まだ質問が残っています。まず、ファイルに保存せずに端末の出力を一意にソートする方法はありますか?

答え1

単にodor を使用すると、これらのプログラムが重複ライン出力を防止するため(または上記のように使用)、hexdump大丈夫です。xxd -aたとえば、

$ truncate -s 1M test
$ hexdump test
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
0100000
$ od test
0000000 000000 000000 000000 000000 000000 000000 000000 000000
*
4000000

ドライブがゼロに設定されている場合、出力はこれと大きく変わらず、最終アドレスがはるかに大きくなります。他のデータが表示されたらCrtl- をクリックしますC

ゼロ以外のデータを探して端末を入力した後に続行したくない場合は、次のようにします(からbash)。

count=0
stdbuf -oL od /dev/sdb |
  while read line; do
    echo "$line"
    (( ++count > 3 )) && break
  done

これにより、ドライブが0に設定されているかどうかを知ることができる最大4行の出力が印刷されます。

Topはこれをきちんと処理し、あなたも同じことができますsudo xxd /dev/sdb | sort -u。ソートオプションを追加する-uことは、を実行するのと同じですsort | uniq

答え2

xxd私はこれがこのネジに適したハンマーであるとは思わない。 null バイトの削除を実行しtr、残りがあるかどうかを確認できます。

[ -n "$(</dev/sdb tr -dc '\0' | head -c 1)" ]

od空の行を縮小することもできます。

[ "$(od -tx1 -An -w1 | head -n 2 | tr -d ' \n')" = "00*" ]

答え3

このコマンドは問題を解決できると思います。

xxd /dev/sdb | grep -v '0000 0000 0000 0000 0000 0000 0000 0000'

ドライブが0に設定されている場合、このコマンドは出力を返しません。バイトが残っている場合、コマンドは画面にそのバイトを求めるメッセージを表示します。

ありがとう

答え4

cat -b /dev/disk2 

ディスクから空でない行を印刷するには、このcatコマンドとそのオプションを試してください。-bディスクが正しくゼロになると、行は印刷されません。

関連情報