Мнимая ситуация: Вы использовали mysqldump для создания резервного копирования mysql базы данных. Эта база данных имеет столбцы, которые являются блобами. Это означает, что Ваши “текстовые” файлы дампа содержат и строки и двоичные данные (двоичные данные, хранившие как строки?)
Если Вы кошка этот файл на экран
$ cat dump.mysql
Вы будете часто получать неожиданные результаты. Терминал начнет подавать звуковой сигнал, и затем вывод заканчивает прокручивать, у Вас часто будет мусор chacters, ввел в Ваш терминал как через, Вы ввели их, и иногда Ваши подсказки и что-либо, что Вы вводите, будут посторонние символы.
Почему это происходит? Другими словами я думаю, что ищу обзор того, что на самом деле происходит, когда Вы храните двоичные строки в файл, и когда Вы кошка те файлы, и когда о результатах кошки сообщают терминалу и любым другим шагам, я отсутствую.
Начните здесь: http://www.faqs.org/docs/Linux-HOWTO/Keyboard-and-Console-HOWTO.html
В частности, разделы 3 (Общие сведения о консоли) и 4 (Перезагрузка терминала).
Он охватывает немного больше, чем вы говорите, но должен дать вам то, что вам нужно.
Когда вы выводите двоичные данные на экран, терминал пытается интерпретировать эти двоичные данные в ASCII (или UTF). Некоторые персонажи способны управлять терминалом. Например,
echo "^[[0;31;40m" # The first ^[ comes from pressing Ctrl+v, Esc
сделает фон черным, а передний - красным. Используйте сброс
, чтобы вернуть терминал в нормальное состояние.
При кодировании двоичного файла вы можете случайно послать управляющие символы на терминал.
Например, если терминальное приложение хочет послать звуковой сигнал, оно посылает на терминал следующий двоичный код: 0x007 (только SYS V).
То же самое касается цветов, положения курсора и т.д.