Use script /tmp/output
para começar a gravar em um novo shell, digite seus comandos e procure no arquivo /tmp/output
, por exemplo, com um editor ou cat -vet
. Digite exit
no shell para sair da gravação.
Gostaria de saber quais seqüências de controle são enviadas para bash por programas para formatar suas saídas.
Por exemplo, se eu despejo man less
, posso discernir quais partes estão em negrito ou sublinhadas.
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.
Mas se eu enviar a saída de ls -G
para um arquivo, não há dados sobre o formato das cores.
Estou usando o Mac OS X.
Provavelmente, melhor executar a saída por meio de um visualizador hexadecimal (por exemplo, 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. |
%
Como então você pode pesquisar qualquer caractere não imprimível em ascii(7)
.
Quanto ao disparate "não funciona", uma rápida olhada nos resultados manuais ls(1)
em:
% 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|
%
Para você pode fazer
export CLICOLOR_FORCE=X
ls -G | cat -vet
A maioria dos utilitários principais se comporta de maneira diferente quando eles emitem para um terminal interativo. Se eles detectarem que você está enviando para um arquivo ou um pipe, eles não serão formatados (razoavelmente: não queremos seqüências de escape de cores quando estamos processando listas de arquivos com um script). Para ls
, você pode forçá-lo:
CLICOLOR_FORCE=1 ls -G
(Isso é para o OSX; no Linux, isso seria ls --color=always
.)
Outras ferramentas têm switches semelhantes ( grep
, por exemplo).
Talvez seja simples:
$ ls --color=always | od -cAn
será o suficiente.