При именовании файла общепринятой и рекомендуемой практикой является не начинать и не заканчивать имя файла дефисом (тире), пробелом, подчеркиванием и точкой (точкой). Однако иногда вы можете по ошибке начать имя файла с дефиса. Хотя это нормально, но такое наименование может быть немного проблематичным, так как параметры (переключатели) почти всех команд Linux начинаются с дефиса. В этом случае, если вы передадите это имя файла, начинающееся с тире, команде Linux, оно будет рассматриваться как параметр команды (переключатель) и, скорее всего, завершится ошибкой. Наиболее распространенная проблема возникает, когда вы пытаетесь переименовать этот файл, чтобы убрать прочерк. Однако это больше не будет для вас проблемой, так как мы собираемся показать вам, как переименовать файл, начинающийся с дефиса, в ОС Linux.
Давайте сначала покажем вам, что происходит, когда вы переименовываете файл, начинающийся с дефиса. Вывод ниже показывает, что команда mv (rename) обрабатывает аргумент, не являющийся параметром (имя файла «-doc»), как параметр команды и выдает ошибку “invalid option”.
Чтобы просмотреть все файлы, начинающиеся с тире в текущем каталоге, используйте команду ниже:
$ ls -- -*
Есть два способа переименовать файл, который начинается с дефиса. Давайте обсудим их обоих.
Способ 1
Чтобы переименовать файл, начинающийся с тире, добавьте «./» к имени файла, где «.» указывает текущий каталог терминала, а «/» указывает, что имя указывает на файл в текущем каталоге. Цель «./» перед именем файла — скрыть тире от команды.
Например, чтобы переименовать файл с именем «-doc» внутри текущего каталога в «mydoc», команда будет выглядеть так:
$ sudo mv ./-doc mydoc
Эта команда переименует файл в «mydoc».
Если файл для переименования находится в другом каталоге, укажите путь к файлу. Например, чтобы переименовать файл «-doc», расположенный в каталоге ~/Documents, в «mydoc», команда будет выглядеть так:
$ sudo mv ~/Documents/-doc ~/Documents/mydoc
Способ 2
Другой способ переименовать файл, начинающийся с тире, — использовать двойное тире «–» перед именем файла. «-» используется в командах Linux для обозначения конца опций и отключения дальнейшей обработки опций. После «-» ничего не принимается как вариант. Это делается для прекращения обработки опциона. В противном случае команда будет рассматривать аргумент, не являющийся параметром, как параметры (флаги) и завершится ошибкой. Поэтому вам нужно будет использовать «-», когда аргумент, не являющийся опцией, начинается с дефиса.
Чтобы переименовать файл «-doc» в «mydoc», используйте «-» перед именем файла следующим образом:
$ sudo mv ---doc mydoc
Это переименует файл в «mydoc».
Вот и все. В этом посте мы показали вам два способа переименовать файл, начинающийся с дефиса в Linux. Чтобы узнать больше о команде mv (переместить и переименовать), посетите ее справочную страницу.