cd -
может переключаться между текущим и предыдущим каталогами.
Похоже, что раньше я -
использовал в качестве аргументов другие команды, хотя я не помню, -
означает ли if то же, что и с cd
.
Я обнаружил, что -
это не работает ls
.
Является ли -
использоваться только с компакт - диска?
cd
это встроенная, а не внешняя команда (и при этом она не может работать как единое целое).cd -
таким образом, функция уровня оболочки.git checkout -
чтобы переключиться на предыдущую ветку-
используются с другими встроенными функциями ?pushd
, да. В противном случае значение «предыдущий каталог» не очень полезно по умолчанию.Ответы:
В рекомендации утилита синтаксис POSIX ( в частности , # 13) указывают , что за коммунальные услуги , которые ожидают имя файла для чтения из,
-
средства стандартного ввода, а также за коммунальные услуги , которые ожидают имя файла для записи в,-
средства стандартный вывод. Например,cat somefile -
копирует содержимоеsomefile
в свой стандартный вывод, за которым следует то, что он читает на своем стандартном вводе.Это руководство не относится к
cd
команде, так как она не читает и не записывает в файл.cd
делает что-то другое: аргумент-
означает «предыдущий каталог». Командаcd -
эквивалентнаcd "$OLDPWD" && pwd
. Это поведение специфично дляcd
команды и для таких команд, которые непосредственно связаны с командойpushd
.Обратите внимание, что
-
это операнд, а не опция. Только аргументы, которые начинаются с-
и не являются просто-
или--
являются вариантами. Основной смысл того, чтобы быть операндом, заключается в том, что--
это не влияет на его особое значение. Например,cd -- -P
изменения в подкаталоге, который называется-P
, ноcd -- -
такой жеcd -
, как и в каталоге, который называется-
. Точно такcat -- -
же не читает из файла, названного,-
но из стандартного ввода.источник
-
определяется в Руководстве по синтаксису служебной программы POSIX как стандартный ввод:Вы можете увидеть это определение для утилит, которые работают с файлами для чтения или записи.
cd
не относится к этим утилитам, поэтому-
в cd не следует этому руководству.Кроме того, POSIX также
-
имеет собственное значение cd :источник
cd -
фактически является сокращением дляcd "$OLDPWD" && pwd
, где$OLDPWD
устанавливается каждый раз, когда вы меняете каталоги на каталог, в котором вы только что находились.Обработка
-
зависит от приложения. Некоторые приложения используют-
для обозначенияSTDIN
, напримерgrep
,awk
Другие приложения могут использовать в
-
качестве краткого обозначения все , что они выбирают, как ответ специфицирует Майкл, сsu
, представляет-
собой сокращенное--login
источник
Хотя Майкл упоминает, что
su
и другие приложения могут использовать-
для обозначения того, что они хотят (чтение из stdin обычно), Git использует-
способ, аналогичный тому, как этоcd
делается , для смены веток.источник
Любая программа может использовать
-
в качестве аргумента, чтобы означать все, что они хотят. Один общий примерsu
, в котором используется-
как сокращение для--login
. Единственное соглашение, которое я могу придумать, это то, что программы, которые читают из файлов, часто используют-
для обозначения «читать из стандартного ввода» , но это полностью зависит от программы.источник
Добавляя мои два цента здесь. Я использую '-', чтобы сказать инструменту ps2pdf для чтения из стандартного ввода, как ранее предлагали несколько человек:
Приведенный выше однострочный текст создает pdf-версию справочной страницы для ls в текущем каталоге.
Надеюсь, кто-то найдет это полезным :).
источник
Как отвечает gnouc ,
-
имеет свое значение вcd
.Тем не менее, вы можете повторить поведение
-
других программ, используя~-
. Например:источник