Приемы профессиональной работы в UNIX

       

ЗАХВАТ ДАННЫХ


Теперь мы умеем найти модем, подключиться к последовательной линии и установить связь с другой системой. Если мы вызываем доску объявлений, нам может понадобиться захватывать файлы с целью последующего использования. Программа cu не предоставляет такой возможности. Как мы уже отмечали, микро-ЭВМ делают это обычно при помощи RAM-буфера, который сохраняется на диске, когда он заполняется. А UNIX не может действовать таким образом.

Простейший способ, придуманный мною для захвата данных из другой системы - пропустить по конвейеру все, что выдается на терминал, через команду tee системы UNIX. Весь ввод с вашей клавиатуры не перехватывается, а все, что идет на стандартное устройство вывода (stdout) попадает в выходной файл утилиты tee. Это выглядит так:

cu -ltty00 dir | tee файл_перехвата

Одно из последствий перехвата информации таким методом состоит в том, что все символы возврата каретки, печатаемые из удаленной системы, попадают в выводной файл команды tee. Вы обнаруживаете их в виде "^M" в конце каждой строки файла. Избавиться от всех этих возвратов каретки легко, попробуйте выполнить такую последовательность команд редактора ed:

ed файл_перехвата 1,$s/^M//g w q

Смысл этих команд следующий. Для каждой строки во всем файле (1, $) заменить возврат каретки (^M) на ничего (//). Сделать это для произвольного количества символов возврата каретки в отдельной строке ("g" означает глобальную замену в строке). Вы можете превратить control-M в заменяемую строку либо вводом символа обратной косой черты (\) и настоящим нажатием на клавишу возврата каретки, либо в редакторе vi использовать префикс control-V для разрешения ввода управляющих символов. После редактирования запишите файл и выйдите из редактора ed.

Конечно, все это вы можете для удобства оформить в виде командного файла интерпретатора shell.



Содержание раздела