Я пытаюсь переименовать файл с именем "-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" или любую другую командную опцию в оболочке?
Когда необходимо указать имя файла, которое запускается с тире как аргумент команде, которая могла бы интерпретировать его как опцию вместо этого, можно записать абсолютный или явный относительный путь в файл вместо этого:
mv /path/to/-a a
mv ./-a a
Кроме того, некоторые (не все) управляют поддержкой --
как разделитель между опциями и позиционными параметрами. Это зависит от определенной команды, которую Вы используете все же.
mv -- -a a
mv -- -a a
'-' говорит оболочке, что, что следует после того, как это не опция к команде.
Все Ваши варианты дают, после оценки кавычек и обратной косой черты, команды mv -a a
таким образом, Вам говорят, что опция '-a' не является допустимой опцией к команде mv и что необходимо дать целевой операнд.