Минус (иначе тире) один не опция, а операнд (т.е. аргумент, который не является опцией). Из-за этого, помещая --
прежде чем это не будет иметь никакого эффекта. Тире является операндом в cd -
и все еще операнд в cd -- -
. Как другие стандартные утилиты, cd
рассматривает операнд как операнд независимо от того, существует ли --
перед ним.
cd
команда присваивает особое значение операнду -
. Что-либо еще - каталог для переключения на. cd -- -a
переключатели к названному каталогу -a
, потому что -a
не является особенным как операнд и --
предотвращает cd
от обработки его как опция. Это не работает на -
один, который не является опцией.
Помещение кавычек вокруг -
движение не должно помогать, так как это в конечном счете передало бы операнд -
так или иначе.
Ваше единственное обращение за помощью должно поэтому найти другой способ выразить ту же идею, т.е. другое название того же каталога. К счастью, существует легкий: если Вы добавляете ./
перед именем файла прямого доступа это все еще означает тот же файл. ./
действительно имеет значение, которое не важно в нашем случае: CDPATH
не консультируется, когда имя каталога начинается /
, ./
или ../
. Таким образом:
cd ./-
Иначе, с тех пор -
каталог, должен добавить a /
после него. Добавление a /
в конце имени файла гарантирует, что файл рассматривают как каталог (в частности, команда будет воздействовать на сам каталог а не на символьную ссылку, если файл будет символьной ссылкой на каталог), но иначе не имеет никакого значения. Таким образом:
cd -- -/
Запись -/
предлагается кодом завершения, между прочим, но в ударе он только на самом деле работает с --
перед ним удар не имеет особого случая для cd -/
(zsh делает).
Необходимо передать аргументы push-mark
, нет global-set-key
:
(global-set-key (kbd "M-SPC") (lambda() (interactive) (push-mark nil nil 1)))