コマンドの生形式出力をどのように取得できますか?

コマンドの生形式出力をどのように取得できますか?

プログラムが出力フォーマットを指定するためにbashに送信する制御シーケンスが何であるかを知りたいです。

たとえば、ダンプすると、man lessどの部分が太字で表示されているのか、下線が引かれているのかがわかります。

DDEESSCCRRIIPPTTIIOONN
       _L_e_s_s is a program similar to _m_o_r_e (1), but which allows backward  move-
       ment in the file as well as forward movement.

ただし、ls -G出力をファイルに送信すると、その色の形式に関するデータはありません。

私はMac OS Xを使用しています。

答え1

新しいシェルで録音を開始し、エディタを使用するか、シェルに入力して録音を終了するなどのコマンドを入力し、ファイルを表示するためにscript /tmp/output使用されます。/tmp/outputcat -vetexit

答え2

16進ビューア(例えば、)を介して出力を実行するのが最善ですodhexdumpxxd

% man less | hexdump -C | head -5
00000000  4c 45 53 53 28 31 29 20  20 20 20 20 20 20 20 20  |LESS(1)         |
00000010  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00000040  20 20 20 20 20 20 20 4c  45 53 53 28 31 29 0a 0a  |       LESS(1)..|
00000050  0a 0a 4e 08 4e 41 08 41  4d 08 4d 45 08 45 0a 20  |..N.NA.AM.ME.E. |
% 

これにより、印刷できない文字が見つかりますascii(7)

ls(1)「動作しない」というナンセンスについてマニュアルを少し見てみると、次のような内容が明らかになります。

% env TERM=xterm-color CLICOLOR_FORCE=1 ls -G | hexdump -C | head -3
00000000  1b 5b 33 34 6d 41 70 70  6c 69 63 61 74 69 6f 6e  |.[34mApplication|
00000010  73 1b 5b 6d 1b 5b 6d 0a  1b 5b 33 34 6d 44 65 73  |s.[m.[m..[34mDes|
00000020  6b 74 6f 70 1b 5b 6d 1b  5b 6d 0a 1b 5b 33 34 6d  |ktop.[m.[m..[34m|
% 

答え3

lsのためにすることができます

export CLICOLOR_FORCE=X
ls -G | cat -vet

答え4

たぶん単純なものかもしれません。

 $ ls --color=always  |  od -cAn

十分でしょう。

関連情報