cat
não modifica os dados. Pode haver sistemas Unix antigos onde trunque linhas que contenham bytes nulos, mas não o Linux, e eu acho que não existe nenhum sistema moderno semelhante a um unix.
Por outro lado, se você tentar exibir dados binários diretamente em seu terminal, o terminal interpretará caracteres de controle como comandos para controlar a exibição. É para isso que servem os personagens de controle. Se você quiser ver uma representação imprimível dos dados brutos, terá várias soluções:
- Execute
cat -A
, que imprimirá uma representação legível, mas ambígua, dos caracteres de controle (por exemplo, ^A
pode ser o byte 0x01 ou a sequência de dois bytes 0x5e 0x41).
- Execute
hexdump -C
, od -t x1
ou algum outro programa de despejo hexadecimal (ou um dump octal, se preferir).
- Execute
less /dev/ttyS0
e pressione F
para ler alguns dados, em seguida, Ctrl+C
para procurá-lo. Dentro de menos, digite -r
para alternar entre exibição bruta de caracteres de controle e uma representação imprimível.
Observe que a leitura de /dev/ttyS0
mostra o que a porta serial recebe, não o que é enviado por ela. Se você quiser, espionar o aplicativo que está sendo escrito, por exemplo, com strace
ou depurador.