次のコマンドを実行すると:
$ cat picture.jpg > copy1.jpg
そして
$ cat -v picture.jpg > copy2.jpg
copy1.jpg
はい、完璧なレプリカpicture.jpg
ですが、copy2.jpg
はるかに大きいですpicture.jpg
。
copy2.jpg
これは、catが考える行の終わりが置き換えられ^M
、^M
各行の終わりのサイズが行の終わりよりも大きいためだと思います。これは正しいですか?
これにより、inインスタンスcat copy2.jpg
がないことがわかります。^M
copy2.jpg
ここで何が起こっているのでしょうか?>
出力が入力と異なる場合は、catを使用してファイルを完全にリンクできますか?
答え1
それだけではありません^M
。 すべて印刷できない文字(現在のロケールで何を意味するか)を含むバイトはcat -v
。
接続ファイルを使用している場合は、cat
出力を変更するすべてのオプションを避ける必要があります。(数字行)、(マーカー行で終わる)、(繰り返し空白行を抑制する)、-b
(印刷可能なコンテンツを使用して印刷できない文字を表示)。-n
-E
$
-s
-v
-T
答え2
あなたの分析が私の考えに合うようです。cat
これが主な機能なので、ファイルをリンクするために使用します。-v
スイッチや問題のスイッチなしでこれを実行してください。
cat -v ..
このファイルを使用すると、デフォルトでは廃止されます。画像ビューアで開いてみましたか?私はあなたの方法を試してみましたが、これは私の状況です。
次のコマンドを使用して、その証拠を表示することもできますfile
。
$ file copy*
copy1.png: PNG image data, 1440 x 847, 8-bit/color RGB, non-interlaced
copy2.png: ASCII text, with very long lines
cat
情報ページには、このトピックの詳細があります。
'-v'
'--show-nonprinting'
Display control characters except for LFD and TAB using '^'
notation and precede characters that have the high bit set with
'M-'.
On systems like MS-DOS that distinguish between text and binary
files, 'cat' normally reads and writes in binary mode. However, 'cat'
reads in text mode if one of the options '-bensAE' is used or if 'cat'
is reading from standard input and standard input is a terminal.
Similarly, 'cat' writes in text mode if one of the options '-bensAE' is
used or if standard output is a terminal.
それで^Mはどこにありますか?
copy2.jpg
ファイルを開くと、vim
次のように散在していることがわかります。