2013-04-18 2 views
0

Я пытаюсь перенаправить стандартный вывод файла в команду write и отобразить содержимое файла (с изменениями цвета) в терминале другого пользователя.Перенаправить вывод файла в команду записи

Содержимое файла, выход которого будет отображаться в (имя файла menu_sys.sh)

echo -e "\t\t\033[4;41m Welcome to Internal Messaging System \033[0;0m"

Когда я использовать код $ sh menu_sys.sh | write 680613 выход ^[[4;41m Welcome to Internal Messaging System^[[0;0m

Пытались, используя стандарт перенаправление вывода с использованием &1>, но это тоже не сработало

Но мне нужен выходной сигнал в форматированном состоянии.

+2

Терминология «стандартный вывод файла» нечетна; команды или программы имеют стандартные выходы - файлы часто там, где вы отправляете стандартный вывод команды, но файлы не имеют собственного стандартного вывода. Ваш скрипт 'menu_sys.sh', генерирует вывод и отправляется на' write 680613'. Стандартная команда 'write' попытается отправить это сообщение на терминал пользователя' 680613'. Это ты? Что вы ожидаете от escape-последовательностей? –

+0

@JonathanLeffler no пользователь терминала '680613' - это кто-то еще. Термин стандартный вывод файла i означал вывод кода, содержащегося в файле menu_sys.sh Мне нужен вывод, который будет отображаться другому пользователю на другом терминале. Используя escape-последовательность, я пытаюсь изменить цвет текста и цвет фона, в котором отображается текст «Добро пожаловать во внутреннюю систему сообщений» – debal

ответ

0

Если команда записи позволила передать произвольные управляющие символы на терминал другого пользователя, это будет вопиющей проблемой безопасности. Фактически, он дезинфицирует содержимое отправляемого сообщения, чтобы обезопасить управляющие символы. Вот почему вы видите символ управления ESC как два символа ASCII '^' и '[' на терминале другого пользователя.

В качестве ссылки: Как указано в Jonathan Leffler, «стандартный вывод файла» не имеет никакого смысла. Фактически то, что вы делаете, это отправить стандартный вывод команды (echo) в команду write, а не «стандартный вывод файла». Или если вы хотели отправить содержимое файла другому пользователю (с помощью команды, такой как write 680613 < somefile), было бы тоже хорошо.

+0

Затем как я могу отправить какой-то отформатированный текст (как в тексте с другим цветом шрифта) к терминалу другого пользователя. Мне нужно создать систему, которая может использоваться для отправки уведомлений другим пользователям терминала от администратора. – debal

+0

У вас нет. Одна из проблем заключается в том, что у вас нет способа узнать, какой тип терминала (переменная среды $ TERM) используется другим пользователем, поэтому вы не знаете, какие последовательности esacpe отправлять, даже если система позволяет вам отправлять их. – Celada

+0

Итак, есть ли другой способ достижения цели. – debal

Смежные вопросы