Объясните это перенаправление оболочки: файл хоста Uuencode <файл хоста> encodedfile

Как ниже работ перенаправления оболочки? Кажется, является сложным для понимания порядка выполнения. Какое-либо легкое объяснение?

uuencode host-file  < host-file >encodedfile
3
задан 11 April 2014 в 01:13

3 ответа

uuencode команда. host-file его аргумент. < host-file перенаправления файл к стандартному входу команды. >encodedfile вывод перенаправлений команды в файл.

5
ответ дан 17 November 2019 в 19:14

Когда консольная программа запускается, она открывает три стандартных дескрипторов файлов:

0 STDIN
1 STDOUT
2 STDERR

Обычно дескриптор файла STDIN читает из терминального входа (т.е. клавиатура). Но то, когда < перенаправление используется, введите, читается из того файла вместо этого. Аналогично, STDOUT обычно пишет в терминал, но когда > используется, производится, записан в тот файл вместо этого.

STDERR может так же быть перенаправлен при помощи 2>. Вы могли бы также видеть, что STDERR был перенаправлен к тому же месту как STDOUT при помощи 2>&1.

3
ответ дан 17 November 2019 в 19:14

uuencode host-file < host-file >encodedfile

Давайте разломаем это на 4 части:

  1. uuencode название команды для выполнения. Оболочка ищет переменную окружения PATH ($PATH) и ищет названный исполняемый файл uuencode в каждом каталоге в ПУТИ. В стандартной установке это будет /usr/bin/uuencode. Программа Uuencode берет двоичный файл и превращает его в текст в специальном формате, таким образом, он может быть отправлен по сети, которая не может обработать символы неASCII.
  2. Первое host-file параметр командной строки к uuencode. uuencode управляйте нуждается в одном аргументе так, чтобы он мог поставить имя файла в закодированной версии. Первая строка закодированного файла будет выглядеть примерно так: begin 644 host-file
  3. < host-file оболочка с помощью названного файла host-file поскольку стандарт ввел (stdin) для uuencode процесс. Итак, когда uuencode чтения некоторые байты входа, вместо того, чтобы произойти из Вашей клавиатуры, они прибывают из того файла.
  4. >encodefile оболочка с помощью названного файла encodedfile как стандартный вывод (stdout). Таким образом, когда uuencode записи некоторый вывод, вместо того, чтобы идти в Ваш экран, это переходит к тому файлу.

Нет действительно порядка выполнения, только начиная с одной команды, uuencode, выполняется. Если Вы хотите технические детали, продолжать читать.

Негласно, вызовы оболочки fork(), затем дочерний процесс открывается host-file файл для чтения, открывается encodedfile файл для записи и вызовы exec(), который заменяет дочерний процесс (копия процесса оболочки) с uuencode процесс. Дочерний процесс затем становится uuencode, с входным дескриптором файла (путь операционная система отслеживает открытые файлы), набор к тому из host-file и набор дескриптора выходного файла к тому из encodedfile.

3
ответ дан 17 November 2019 в 19:14

Другие вопросы по тегам:

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