コピー2018.05.24linuxだと、odにしてもhdにしても、同じ値が連続していると、途中のダンプ表示が省略できます。省略するのにオプションは要らないので、とても便利です。|................|*00000064takk@deb9:~/tmp$どのような条件で省略されるのでしょうか。作りやすさから考えると、行を表示する前に、前行と同じかチェックして、*を表示するか、値を表示するか決めているのではないかと思いますが。1Byteにして、確認してみます。Byteだと最初だけ値が表示されました。0*0000100takk@deb9:~/tmp$同じく一番最後まで省略されました。00000100takk@deb9:~/tmp$3Byte毎だと最後の1Byteが余って、前行と比較した結果不一致なので表示された、ということでしょう。次は先頭に0以外の値を入れてみます。0*0000100takk@deb9:~/tmp$次は、3Byte目を1Byte目と同じ値にします。00と、同じパターンの繰り返しであっても、省略はされてません。0*0000100takk@deb9:~/tmp$1行2Byteの表示になることにより、2行目は1行目と一致するので、省略されました。行を表示する時に、前回表示した内容と一致しているか判定してるっぽいですね。odのソースで答え合わせをしてみます。coreutilsです。オプション:で検索します。このcaseに入った時のフラグであるabbreviate_duplicate_blocksを追いかければ良いですね。追いかけるのも面倒いので、やはりgrepです。前後10行ぐらいを表示してみます。{takk@deb9:~/src/coreutils-8.26/src$予想通りでした。前のブロック(prev_block)と、今のブロック(curr_block)を比較してます。EQUAL_BLOCKSというマクロを直前に定義しているのが面白いです。マクロを書くというテクニック、私的には大収穫です。け中cpioヘッダ(その1)cpioで作成したアーカイブは、どのようなフォーマットになってるのでしょうか。適当なファイルをアーカイブ化して、できたアーカイブをバイナリダンプで確認してみます。記憶がなくなってしまうのは、自分も周囲も辛いでしょうねえ。最近(おそらくセイバーを見つけた時から)、Vim熱が出てきたので、Vimの記事が多くなって行く予感。HEXを書き換えた時の、チェックサム再計算するスクリプトを作ってみます。1行目の先頭データ01を削除してb.hexを作成します。このHEXのチェックサム値を更新します。データ数...仕分け中ddランダムまだddやってます。カーネル乱数ソースデバイス(/dev/urandom)を、ddでフィルタリングします。こんな感じでランダムな値が取得できます。Byte書き込んでみましょう。coun...仕分け中cpioヘッダ(その2)前回cpioアーカイブの構造体はcpio.hではなく、cpiohdr.hにあることが分かりました。今回は、cpiohdr.h内の構造体を特定して、アーカイブの構造を確認していこうと思います。魔法学校に入学するところから始まって、3人組のドタバタで、主人公はきっとすごい魔女。ハリーポッターみたいな感じなのでしょうか。仕分け中スポンサーリンク広告プロフィール管理人:takketeお仕事:システムエンジニア日々何か向上したくて、もがいています。Policyホーム検索トップサイドバースポンサーリンク広告プロフィール管理人:takketeお仕事:システムエンジニア日々何か向上したくて、もがいています。thanksタイトルとURLをコピーしました。