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

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

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

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

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

  • команда, которая работает как символ ~ (тильда) для представления некоторого каталога
  • Это плохо, когда dvdisaster говорит, что некоторые сектора DVD-диска нечитаемы?
  • Создавайте shorcuts в терминале для перемещения между папками
  • Можно ли изменить команду для `cd`, чтобы отображать только каталоги и игнорировать файлы?
  • Предотвращение или обнаружение действия каталога изменений в сценарии оболочки
  • смена каталога происходит очень медленно
  • Нет такого каталога после его создания
  • У нас больше истории для 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 ~/"-" 
    Interesting Posts

    Как перестроить диск на логическом томе с минимальным временем обнуления

    Почему я не могу использовать sudo для OpenBSD?

    Запустить mplayer с помощью x11 из текстовой консоли?

    Клон Virtualbox vboxmanage не отображается в списке виртуальных машин

    $ _ vs! $. Последний аргумент предыдущего перенаправления команды и вывода

    Как запустить «find -exec <script> {} \;

    Почему использование `yes` на bash-конвейерах * не * вызывает бесконечные циклы?

    Как объединить дерево с размером каталога?

    Как запустить процесс, если машина не прослушивает порт?

    Самый простой способ подсчета строк, соответствующих определенным шаблонам, включая «0», если строка не найдена?

    Проблема единства: нет пусковой установки и других баров (Ubuntu 16.04)

    chmod + w / var / log / messages, похоже, тоже не работает для пользователя root

    Есть ли способ иметь регулярное выражение в ~ / .ssh / config

    Как назначить управляющий терминал другому процессу?

    Найдите и замените строку, если определенный шаблон найден в строке

    Linux и Unix - лучшая ОС в мире.