次のコマンドを実行しました# top > /home/user/top_output.txt
しばらく何も起こらなかったので、Ctrl+C
を押しました。作成したファイルを確認したところ、内容が含まれていました。そこで、cat
コマンドを実行すると、この出力が得られました。
しかし、less
コマンドで同じことを試したところ、これがわかりました。
これによると postCat,less or More
の仕事は、エンコーディングを翻訳せずにファイルの内容を表示することだけです。誰かがここで何が起こっているのか教えてもらえますか?
追記:現在Fedora19を使用しています
エスケープシーケンスESC [ ... m
は ANSIエスケープシーケンス と呼ばれます。 top
はそれらを端末に送信して、出力をカラー、太字、反転テキストなどでフォーマットします。 top
を実行しているときはこれらの文字は表示されませんが、結果の形式は表示されます。ブラウザでウェブページを見ていると考えることができます。コンテンツのフォーマットは<html>...
では表示されません。
top
の出力をファイルにダンプすると、印刷できないエスケープシーケンスが他のすべてのものと一緒に保存されます。ブラウザにview source
を保存することと考えてください。
less
のデフォルトは、端末制御文字をエスケープして、印刷可能な形式で表示することです。
cat
のデフォルトは、それらを端末に渡し、端末がそれらを解釈して「正常」に見えるようにすることです。
less -r /home/user/top_output.txt
をお試しください
$ man less ... -r or --raw-control-chars Causes "raw" control characters to be displayed. The default is to display control characters using the caret notation; for example, a control-A (octal 001) is displayed as "^A". Warning: when the -r option is used, less cannot keep track of the actual appearance of the screen (since this depends on how the screen responds to each type of control character). Thus, various display problems may result, such as long lines being split in the wrong place.
印刷できない文字をエスケープするcat -v /home/user/top_output.txt
と比較してください。