Osx

如何獲得命令的原始格式輸出?

  • June 7, 2020

我想知道程序將哪些控制序列發送到 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。

用於script /tmp/output在新的 shell 中開始錄製,然後鍵入命令並查看/tmp/output文件,例如使用編輯器或cat -vet. 在 shell 中鍵入exit以退出錄製。

最好通過十六進制查看器執行輸出(例如od, hexdump, xxd):

% 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|
% 

引用自:https://unix.stackexchange.com/questions/226412