В рекомендации утилита синтаксис POSIX ( в частности , # 13) указывают , что за коммунальные услуги , которые ожидают имя файла для чтения из, -
средства стандартного ввода, а также за коммунальные услуги , которые ожидают имя файла для записи в, -
средства стандартный вывод. Например, cat somefile -
копирует содержимое somefile
в свой стандартный вывод, за которым следует то, что он читает на своем стандартном вводе.
Это руководство не относится к cd
команде, так как она не читает и не записывает в файл. cd
делает что-то другое: аргумент -
означает «предыдущий каталог». Команда cd -
эквивалентна cd "$OLDPWD" && pwd
. Это поведение специфично для cd
команды и для таких команд, которые непосредственно связаны с командой pushd
.
Обратите внимание, что -
это операнд, а не опция. Только аргументы, которые начинаются с -
и не являются просто -
или --
являются вариантами. Основной смысл того, чтобы быть операндом, заключается в том, что --
это не влияет на его особое значение. Например, cd -- -P
изменения в подкаталоге, который называется -P
, но cd -- -
такой же cd -
, как и в каталоге, который называется -
. Точно так cat -- -
же не читает из файла, названного, -
но из стандартного ввода.
cd
это встроенная, а не внешняя команда (и при этом она не может работать как единое целое).cd -
таким образом, функция уровня оболочки.