回答:
はい、別のプロセスにパイプするか、ファイルに保存しても安全です。バイナリstdoutをターミナルに出力すると、ターミナルディスプレイを一時的に混乱させるエスケープシーケンス(ランダム)が含まれる可能性があるため、潜在的な「奇妙さ」があります。
reset
、入力してEnter キーを押すと修正できます。
reset<enter>
は実際には端末から見た文字のシーケンスを入力しません...
stty sane; tput rs1
一連のコマンドは、機能しないという特殊なケースがある場合にreset
役立ちます。このようなケースには、Bakuriuによる言及に加えて、端末の行/列の幅が含まれるか、シリアル通信に関連する設定(ボーレート/パリティ)が推測されます。
head
またはなどのコマンドを使用する場合の主な問題tail
は、それらが行指向であり、バイナリファイルがそうではないことです。改行が含まれている場合は、行の終わりを表すために使用されないことが多く、含まれている場合は、プログラムメッセージやデータフィールドなどの文字列の一部である可能性があります。
データが何らかの方法で構造化されている場合、分割点を選択する際にそれを考慮に入れて、途中で構造を壊さないようにする必要があります。
ファイルの構造がわかっている場合は、次のようなコマンドを使用できます
dd -if input-file -of output-file ...
特定の(増分された)オフセットから始まる特定のサイズの非常に多くのデータブロックのみをファイルにコピーするオプションがあります。
split
@egmontで述べたコマンドがこのプロセスを自動化するように見えますが、デフォルトでは行指向のように見えるため--bytes count
、ファイルの各部分の大きさを伝えるなどの追加オプションを指定する必要がありますである。
補足として、ファイルの内容がわからないが、少なくともいくつかの意味のあるテキストデータが含まれていると思われる場合、このstrings
コマンドは最初に見て、何を扱っているかを確認するのに最適な方法です。
strings -n 6 file | less
少なくとも6文字の長さの印刷可能文字のすべての実行を検出し、それらがページャーで表示されるので、端末上を飛び回ることはありません。デフォルトの4文字よりも少し大きい数を使用すると、たまたま印刷可能になったがファイルではそのように使用されていないデータの小さな断片を排除するのに役立ちます。
後でなどのバイナリエディタでファイルをさらに詳しく調べるhexedit
必要がある場合は、興味深いものが見つかる可能性のある場所を示すいくつかのランドマークがあります。
strings
オプションがあります- t x
これは、印刷された各文字列の前にファイルへのオフセットを16進数(8進数の場合はo、10進数の場合はd)で表示します。非常に短いファイルであっても、文字ごとに見なければならない場合には対処する必要があります。
split
コマンドを見てください。