bashでファイル末尾を0埋めする方法。例えばLinuxカーネルのページサイズでalignしたい場合。

文字列の先頭や末尾を0埋めする方法はよくあるんですが、ファイル末尾を0データで埋める方法って、なかなか見つからなかったので、書いてみました。

こんなの一体いつ使うのか? と聞かれたら、使う機会は早々ないのであまり役に立たないかもしれないです(・_・; が、例えばinitramfsイメージファイルをLinuxカーネルのページサイズでalignしたい場合に役立ちます。

…絶対使わなそうですが、以下のようなスクリプトを書いてtest.shとして保存しておき、test.sh target.bin 4096のように実行すれば、target.binの後に0データを付加して4096バイトでalignしてくれます。

例えば以下のようなサイズのファイルがあったとします。10進で99472バイトのデータです。

これに先ほどのスクリプトを実行してやると、以下のようになります。

しっかりと、4096 (0x1000)バイトでalignされたデータファイルになりました。これでとある機器のLinuxカーネルがパニックすることなく起動できます。

ぜひお試しあれ。

ただ、先ほどのスクリプト、get_printf_format関数内の処理がかなり非効率なので、もっといい案あればぜひ教えてください(^人^)

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする