Командный интерпретатор shell ассоциирует с каждым открытым файлом так называемый дескриптор. Дескрипторы нумеруются десятичными целыми числами, начиная с нуля.

Верхняя граница зависит от реализации, но, согласно стандарту POSIX, должны поддерживаться по крайней мере десять одновременно открытых файлов (с номерами дескрипторов от 0 до 9 включительно). Дескрипторы с номерами 0, 1 и 2 имеют специальный смысл.

0 Стандартный ввод
1 Стандартный вывод
2 Стандартный протокол

Перед выполнением команды ее ввод и вывод могут быть перенаправлены.

<файл   Перенаправление ввода.
>файл   Перенаправление вывода с перезаписью файла (если разрешено).
>!файл  Перенаправление вывода с безусловной перезаписью.
>>файл  Перенаправление вывода с дозаписью.
<>файл  Открыть файл одновременно на чтение и запись.
2>файл  Перенаправление дескриптора в файл
        (дескриптор 2 - стандартный протокол).
2>&1    Перенаправление дескриптора в дескриптор
        (дескриптор 2 - стандартный протокол, 1 - стандартный вывод).

 

Shell дает возможность размещать исходные данные в виде вставки в интерпретируемый командный файл, для чего употребляются многострочные конструкции:

Команда <<слово
   вставка
слово

или

Команда <<-слово
   вставка
слово

На вход команды подается вставка, представляющая собой череду строк вплоть до слова, указанного при перенаправлении. Второй вариант отличается тем, что из строк вставки удаляются начальные символы табуляции.