Изменение цвета при смене каталога

Сценарий, вероятно, является примером, и вы должны изменить echo goodbye , чтобы сделать что-то еще.

Предположим, что сценарий называется demo . Когда вы запускаете его, как вы видели, он сначала выводит «привет». Затем он видит, идет ли вывод на терминал или нет, с намерением решить, используете ли вы

demo

или

demo | some other program

. Если это первый, то он просто отправляет вывод остальной части файла в файл. называется журнал . В последнем случае if создает именованный канал и запускает процесс tee для копирования всего, что записано в именованный канал, в выходные данные сценария demo (так какая-то другая прога получит) и в файл с именем log . Затем он организует отправку вывода остальной части файла в этот именованный канал. Он также устанавливает, что когда демо завершается, он удаляет именованный канал.

Строка exec 1> & - не нужна.

Конечным результатом всего этого является то, что слово «до свидания» записывается в файл «журнал». Если вы запустили демо | cat вы увидите на экране как «привет», так и «до свидания».

Как отмечает @derobert в комментариях, именованный канал имеет предсказуемое имя. В зависимости от настройки umask это может позволить кому-то испортить вывод демо , либо прочитав его (так что tee не увидит его), либо добавив дополнительные материал для тройник для копирования. Это дополнение к ряду стандартных атак, которые можно использовать против известных или предсказуемых имен. Программные или жесткие ссылки можно настроить заранее, чтобы другие файлы открывались или усекались. В моей системе Linux mknod завершится ошибкой, если файл уже существует, но поскольку сценарий игнорирует эту ошибку, будет выполнено exec 1> $ npipe .

2
01.04.2016, 02:56
0 ответов

Теги

Похожие вопросы