Назад | Перейти на главную страницу

Как войти в каталог с таким именем «-2» (начиная с дефиса)?

У меня есть каталог с именем:

-2

Я хочу вставить в него cd, но cd жалуется:

bash: cd: -2: invalid option

Безуспешно я пробовал:

cd "-2"
cd '-2'
cd \-2

Любое решение?

Изменить: на сервере нет файловых браузеров, таких как mc и т. Д.

Как минимум двумя способами:

  1. Использовать -- аргумент.

    cd -- -2
    

    Здесь используется стандартное для инструментов GNU соглашение, которое не обрабатывает все, что появляется после -- как параметр командной строки.

    Как комментатор отметил, что это соглашение также определено в стандарте POSIX:

    Поведение по умолчанию: Если для этого раздела указано «Нет», это означает, что реализация не обязана поддерживать какие-либо параметры. Стандартные утилиты, которые не принимают параметры, но принимают операнды, должны распознавать "--" как первый аргумент, который следует отбросить.

    Требование признания "--" потому что соответствующим приложениям нужен способ защиты своих операндов от любых произвольных опций, которые реализация может предоставить как расширение. Например, если стандартная утилита foo указана как не имеющая параметров, а приложению необходимо указать ей путь с дефисом в начале, она может безопасно сделать это как:

    foo -- -myfile
    

    и избежать проблем с используется как расширение.

    так же как:

    Рекомендация 10:
    Аргумент -- следует принимать в качестве разделителя, обозначающего конец опций. Любые следующие аргументы следует рассматривать как операнды, даже если они начинаются с '-' персонаж. В -- Аргумент не должен использоваться как опция или как операнд.

  2. Укажите путь явно:

    cd ./-2
    

    Это указывает путь, явно называющий текущий каталог (.) в качестве отправной точки.

    cd $(pwd)/-2
    cd /absolute/path/to/-2
    

    Это вариации вышеизложенного. Возможно любое количество таких вариантов; Я оставлю читателю в качестве упражнения открыть для себя их все.

Это должно работать:

cd -- -2 

- означает, что выбора больше нет

Это будет работать, если в текущем каталоге находится «-2».

    cd ./-2

Вы можете выполнить автозаполнение, набрав - и нажав вкладку.

cd /home/...../-2 тоже работает. Дайте полный путь к доступу.

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

rm -r -- -2

Я знаю, что на этот вопрос уже дан ответ. Если у кого-то есть ситуация, подобная моей, это для них:

Я запустил Java-приложение, и оно искало каталог, начинающийся с <path>, Я должен был заменить это на правильный путь перед запуском приложения. Однако я забыл это сделать. Приложение создало каталог с именем <path>.

Я пытался cd <path> - выдал мне ошибку "-bash: синтаксическая ошибка рядом с неожиданной новой строкой токена" На основе предложенного здесь (я понимаю, что это для каталога, начинающегося с - а не <) Я пробовал cd -- <path>. Однако я получил ту же ошибку.

Когда я попробовал cd \<path>\ - это сработало!

Исходная информация:

Символы «<» и «>» используются для перенаправления STDIN и STDOUT, поэтому их нужно экранировать, чтобы оболочка не интерпретировала их как перенаправления.