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

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

-2

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

bash: cd: -2: неверный параметр

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

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

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

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

145 голосов | спросил user151851 4 Jam1000000amFri, 04 Jan 2013 00:29:40 +040013 2013, 00:29:40

6 ответов


242

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

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

    cd - -2
    

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

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

      

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

         

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

    foo - -myfile
    
         

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

    а также :

      

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

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

    cd ./-2
    

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

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

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

ответил Michael Hampton 4 Jam1000000amFri, 04 Jan 2013 00:32:11 +040013 2013, 00:32:11
47

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

cd - -2

- означает больше опцию

ответил Tim Haegele 4 Jam1000000amFri, 04 Jan 2013 00:33:41 +040013 2013, 00:33:41
25

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

cd ./-2

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

ответил newbee 4 Jam1000000amFri, 04 Jan 2013 10:19:12 +040013 2013, 10:19:12
10

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

ответил Vivek 4 Jam1000000amFri, 04 Jan 2013 06:46:59 +040013 2013, 06:46:59
6

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

rm -r - -2
ответил Zignd 4 Jpm1000000pmFri, 04 Jan 2013 18:14:05 +040013 2013, 18:14:05
-1

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

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

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

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

Фон-информация:

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

ответил Jobin Thomas 5 J000000Wednesday17 2017, 17:00:14

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132