Как вы входите в каталог, имя которого является только минусом?

Я загрузил lessn на свой веб-сервер и разархивировал его.

Он содержит папку с именем - . Я предположил, что знаю, как с этим бороться, но я этого не делаю.

Я попробовал cd -- - , но это не имеет желаемого эффекта. Использование кавычек также не влияет на это. Я положил косые черты повсюду, безрезультатно.

Каким образом можно перейти в эту папку?

4 Solutions collect form web for “Как вы входите в каталог, имя которого является только минусом?”

Вы хотите, чтобы он не был параметром, поэтому мы пытаемся что-то придумать. Доступ к текущему каталогу возможен . , таким образом, вложенную папку - можно получить альтернативно с ./- .

 cd ./- 

Причина, по которой cd -- - не работает, потому что это выполняется по-другому, если вы сравниваете rm (см. man rm ) с cd (см. man bash или man cd ), cd имеет другую интерпретацию, которая видит - как параметр (см. man bash или man cd ).

Следует также отметить, что cd является встроенной функцией оболочки, как можно прочитать в этом ответе :

cd не является внешней командой – это встроенная функция оболочки. Он работает в контексте текущей оболочки, а не, как внешние команды, в контексте fork / exec'd как отдельный процесс.

Существует внешняя команда cd , но она делает что-то совершенно другое .

Это объясняет, почему реализация отличается, поскольку Bash и Coreutils – это две разные вещи.

Предположим, вы не поверили бы этому, как мы это подтвердим? Используйте их и type .

  $ which cd && type cd which: no cd in (/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.7.2:/usr/games/bin cd is a shell builtin $ which rm && type rm /bin/rm /bin/rm is /bin/rm 

См. man which для получения дополнительной информации, и man bash или man type для type

Минус (aka dash) один не вариант, а операнд (т. Е. Аргумент, который не является вариантом). Из-за этого, помещая -- до этого не имеет никакого эффекта. Черточка – это операнд в cd - и все же операнд в cd -- - . Как и другие стандартные утилиты, cd обрабатывает операнд как операнд, независимо от того, есть ли перед ним.

Команда cd присваивает операнду особое значение - . Все остальное – это каталог, на который нужно переключиться. cd -- -a переключается в каталог с именем -a , потому что -a не является специальным в качестве операнда, а -- предотвращает обработку cd в качестве опции. Это не работает - только это не вариант.

Помещение котировок вокруг - не поможет, так как это в конечном итоге передаст операнд - или иначе.

Поэтому ваш единственный ресурс – это найти другой способ выражения той же идеи, то есть другое имя для того же каталога. К счастью, есть простой: если вы добавляете ./ перед относительным именем файла, это все равно означает тот же файл. ./ делает разницу, которая не имеет значения в нашем случае: CDPATH не CDPATH , когда имя каталога начинается с / , ./ или ../ . Таким образом:

 cd ./- 

Другой способ, поскольку - это каталог, заключается в том, чтобы добавить / после него. Добавление / в конце имени файла гарантирует, что файл рассматривается как каталог (в частности, команда будет работать в самом каталоге, а не на символической ссылке, если файл является символической ссылкой на каталог), но в противном случае не имеет значения. Таким образом:

 cd -- -/ 

Написание -/ предлагается кодом завершения, кстати, но в bash он работает только с -- перед ним bash не имеет специального случая для cd -/ (zsh does).

Квалификация с помощью пути – один из вариантов.

 cd ./- 

Они также будут работать:

 cd ~/'-' 

или

 cd ~/"-" 
  • Создать псевдоним для каталога рабочего стола
  • Почему текущий каталог не изменяется в make-файле?
  • Создание псевдонима для изменения каталога и наличие этого каталога в текущем рабочем каталоге на вкладках новых терминалов
  • cd: разрешено: binutils-2.21.1
  • Как добавить псевдоним для моего pwd в существующий файл?
  • Запустить сценарий оболочки при навигации по каталогу с помощью cd
  • Нарушается ли поведение CDPATH в раке bourne (/ bin / sh)
  • Есть ли способ вернуться несколько раз в bash?
  • Как оболочка знает дома (дома)?
  • Является ли стандартным поведением для компакт-диска автоматически выбирать, когда задано неполное имя каталога?
  • Сценарий Bash не изменит каталог
  • Как не показывать путь после команды cd с помощью набора CDPATH?
  • Linux и Unix - лучшая ОС в мире.