web-dev-qa-db-ja.com

猫は何も見せない

私のチームはCI環境で作業しています。

x.koという名前のkoファイルは、CI環境から常に定期的に生成され、そのタイプはELF 64-bit LSB relocatableです。

今日、このkoファイルのタイプがdataになったことがわかりました。

その理由を理解しようとしています。

このcatファイルをkoしようとしましたが、出力は何もありません。次に、cat -et x.koを試してみると、たくさんの^@^@^@^@^@^@^@^@^@^@^@^@^@^@...が得られます。

^@^@^@^@^@^@^@^@^@の意味を知っていますか?

7
Yves

ファイルが空ではなくnullでいっぱいです。通常のcatは、nullを標準出力に出力しますが、端末は通常、nullをそれぞれ何も表示せず、cat -vは、nullを^@として表します。 "@"(0x40、または64)xor 64(フリップビット7)のバイト値がゼロであるため、^@はnullバイトを表します。

なぜ突然nullでいっぱいになり、ここからはわかりません。

この関連する質問は、キャレット表現についての情報になるかもしれません: ASCIIエスケープシーケンスと制御文字のペアリングは、標準の一部ですか?

12
Michael Homer

注意してくださいcatは、バイナリの可能性があるデータを表示するための完璧なツールではありません。

簡単なUNIXツールはod(octal dump)です。

od -c -tx1の例

root@server:~# od -c -tx1 /etc/passwd | head
0000000   r   o   o   t   :   x   :   0   :   0   :   r   o   o   t   :
         72  6f  6f  74  3a  78  3a  30  3a  30  3a  72  6f  6f  74  3a
0000020   /   r   o   o   t   :   /   b   i   n   /   b   a   s   h  \n
         2f  72  6f  6f  74  3a  2f  62  69  6e  2f  62  61  73  68  0a
0000040   d   a   e   m   o   n   :   x   :   1   :   1   :   d   a   e
         64  61  65  6d  6f  6e  3a  78  3a  31  3a  31  3a  64  61  65
0000060   m   o   n   :   /   u   s   r   /   s   b   i   n   :   /   u
         6d  6f  6e  3a  2f  75  73  72  2f  73  62  69  6e  3a  2f  75
0000100   s   r   /   s   b   i   n   /   n   o   l   o   g   i   n  \n
         73  72  2f  73  62  69  6e  2f  6e  6f  6c  6f  67  69  6e  0a

キャリッジリターン\ n

12
EchoMike444