Командный интерпретатор shell ассоциирует с каждым открытым файлом так называемый дескриптор. Дескрипторы нумеруются десятичными целыми числами, начиная с нуля.
Верхняя граница зависит от реализации, но, согласно стандарту POSIX, должны поддерживаться по крайней мере десять одновременно открытых файлов (с номерами дескрипторов от 0 до 9 включительно). Дескрипторы с номерами 0, 1 и 2 имеют специальный смысл.
0 Стандартный ввод
1 Стандартный вывод
2 Стандартный протокол
Перед выполнением команды ее ввод и вывод могут быть перенаправлены.
<файл Перенаправление ввода. >файл Перенаправление вывода с перезаписью файла (если разрешено). >!файл Перенаправление вывода с безусловной перезаписью. >>файл Перенаправление вывода с дозаписью. <>файл Открыть файл одновременно на чтение и запись. 2>файл Перенаправление дескриптора в файл (дескриптор 2 - стандартный протокол). 2>&1 Перенаправление дескриптора в дескриптор (дескриптор 2 - стандартный протокол, 1 - стандартный вывод).
Shell дает возможность размещать исходные данные в виде вставки в интерпретируемый командный файл, для чего употребляются многострочные конструкции:
Команда <<слово вставка слово
или
Команда <<-слово вставка слово
На вход команды подается вставка, представляющая собой череду строк вплоть до слова, указанного при перенаправлении. Второй вариант отличается тем, что из строк вставки удаляются начальные символы табуляции.