Как экранировать "-" в команде в оболочке (Zsh)? [закрыто]

Я пытаюсь переименовать файл с именем "-a" в "a" с помощью командной строки (zsh shell). Я пробовал следующее

mv \-a "a"
mv '\-a' "a"
mv "\-a" "a"

но каждый раз получал

mv: illegal option -- a
usage: mv [-f | -i | -n] [-v] source target
   mv [-f | -i | -n] [-v] source ... directory

. Есть ли способ экранировать "-a" или любую другую командную опцию в оболочке?

0
задан 26 February 2019 в 11:56

2 ответа

Когда необходимо указать имя файла, которое запускается с тире как аргумент команде, которая могла бы интерпретировать его как опцию вместо этого, можно записать абсолютный или явный относительный путь в файл вместо этого:

mv /path/to/-a a
mv ./-a a

Кроме того, некоторые (не все) управляют поддержкой -- как разделитель между опциями и позиционными параметрами. Это зависит от определенной команды, которую Вы используете все же.

mv -- -a a
3
ответ дан 26 October 2019 в 03:47
mv -- -a a

'-' говорит оболочке, что, что следует после того, как это не опция к команде.

Все Ваши варианты дают, после оценки кавычек и обратной косой черты, команды mv -a a таким образом, Вам говорят, что опция '-a' не является допустимой опцией к команде mv и что необходимо дать целевой операнд.

1
ответ дан 26 October 2019 в 03:47

Другие вопросы по тегам:

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