У меня есть каталог с именем:
-2
Я хочу вставить в него cd, но cd жалуется:
bash: cd: -2: invalid option
Безуспешно я пробовал:
cd "-2"
cd '-2'
cd \-2
Любое решение?
Изменить: на сервере нет файловых браузеров, таких как mc и т. Д.
Как минимум двумя способами:
Использовать --
аргумент.
cd -- -2
Здесь используется стандартное для инструментов GNU соглашение, которое не обрабатывает все, что появляется после --
как параметр командной строки.
Как комментатор отметил, что это соглашение также определено в стандарте POSIX:
Поведение по умолчанию: Если для этого раздела указано «Нет», это означает, что реализация не обязана поддерживать какие-либо параметры. Стандартные утилиты, которые не принимают параметры, но принимают операнды, должны распознавать
"--"
как первый аргумент, который следует отбросить.Требование признания
"--"
потому что соответствующим приложениям нужен способ защиты своих операндов от любых произвольных опций, которые реализация может предоставить как расширение. Например, если стандартная утилита foo указана как не имеющая параметров, а приложению необходимо указать ей путь с дефисом в начале, она может безопасно сделать это как:foo -- -myfile
и избежать проблем с -м используется как расширение.
Рекомендация 10:
Аргумент--
следует принимать в качестве разделителя, обозначающего конец опций. Любые следующие аргументы следует рассматривать как операнды, даже если они начинаются с'-'
персонаж. В--
Аргумент не должен использоваться как опция или как операнд.
Укажите путь явно:
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, поэтому их нужно экранировать, чтобы оболочка не интерпретировала их как перенаправления.