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