Черта сама по себе является простым аргументом команды. Его значение зависит от команды. Два его наиболее обычных значения - это «стандартный ввод» или (реже) «стандартный вывод». Значение «предыдущий каталог» уникально для встроенной оболочки cd
(и это означает, что в некоторых оболочках не во всех оболочках).
cat file1 - file2 | troff ...
Это означает чтение file1
, стандартный ввод и file2
в этой последовательности и отправка вывода на troff
.
Крайний случай использования -
для обозначения «стандартный ввод» или «стандартный вывод» происходит из (GNU) tar
:
generate_file_list ... |
tar -cf - -T - |
( cd /some/where/else; tar -xf - )
Параметры -cf -
в первом tar
означают «создать архив» и «выходной файл - стандартный вывод»; опция -T -
означает «читать список файлов и / или каталогов из стандартного ввода».
Опции -xf -
во втором tar
означают «извлечь архив» и «входной файл является стандартным вводом». Фактически, GNU tar
имеет опцию -C /some/where/else
, что означает, что она сама выполняет cd
, поэтому вся команда может быть:
generate_file_list ... |
tar -cf - -T - |
tar -xf - -C /some/where/else
Чистый эффект этого - копирование файлов, названных командой generate_file_list
, из «текущего каталога» в /some/where/else
, сохраняя структуру каталогов. («Текущий каталог» должен быть взят с небольшим количеством соли; любые абсолютные имена файлов обрабатываются GNU tar
- & mdash; он удаляет начальную косую черту & mdash; относительные имена берутся относительно текущего каталога .)