作成したファイルを見てください。次のようになります ( viで表示した場合):
LS(1) BSD General Commands Manual LS(1)
N^HNA^HAM^HME^HE
l^Hls^Hs -- list directory contents
S^HSY^HYN^HNO^HOP^HPS^HSI^HIS^HS
l^Hls^Hs [-^H-A^HAB^HBC^HCF^HFG^HGH^HHL^HLO^HOP^HPR^HRS^HST^HTU^HUW^HW@^H@a^Hab^Hbc^Hcd^Hde^Hef^Hfg^Hgh^Hhi^Hik^Hkl^Hlm^Hmn^Hno^Hop^Hpq^Hqr^Hrs^Hst^Htu^Huw^Hwx^Hx1^H1] [_^Hf_^Hi_^Hl_^He _^H._^H._^H.]
D^HDE^HES^HSC^HCR^HRI^HIP^HPT^HTI^HIO^HON^HN
For each operand that names a _^Hf_^Hi_^Hl_^He of a type other than directory, l^Hls^Hs
displays its name as well as any requested, associated information. For
each operand that names a _^Hf_^Hi_^Hl_^He of type directory, l^Hls^Hs displays the names
of files contained within that directory, as well as any requested, asso-
ciated information.
^H
?を参照してください。つまり、スペースをバックアップします。このman
コマンドはtroff出力を生成し、その出力を nroff 自体にパイプして、その出力を表示用にフォーマットします。troff は、印刷ページをフォーマットするテキスト フォーマット プログラムでした。したがって、単語を太字にするにtroff
は、文字の上にバックスペースを入れてからタイプします。それが繰り返されるほど、文字は濃くなります。
man
端末でまたはを使用すると、太字nroff
を意味することを理解し、端末の強調表示された色でその文字を表示します。コマンドは同じことを行います。B^HB
B
less
一方、cat
コマンドは実際にはファイルをそのまま表示しています。シーケンスB^HB
が表示されるB
と、画面に が表示され、1 つのスペースがバックアップされB
、前の の上に別のスペースが表示されますB
。これは端末でありプリンターではないため、その 2 番目B
は前の と同じピクセルの上に表示されますB
。
これを試してください(Macを使用しているため):
CLICOLOR_FORCE=1
ls > ls.txt
cat ls.txt
これは色を表示することに注意してください。環境変数を設定すると、端末に表示されていない場合でも、色付きの出力がCLICOLOR_FORCE
強制的に表示されます。を見ると、やのようなシーケンスが表示されます。これは、ANSI 端末にさまざまな色を設定するよう指示し、それらの色を表示します (オプションを使用しない場合)。ls
ls.txt
VI
[34m
^[[m^[[m
cat
-v
言い換えれば、あなたの仮定は逆です。less
コマンドが文字-バックスペース-文字シーケンスを太字で表示する出力を処理している間、Cat はファイルの完全に表現されたバージョンを提供します。