Если каталог с таким именем не существует, вы переименовали файл openvpn
в корневой каталог /
. Чтобы восстановить это, запустите:
sudo mv /openvpn /etc/MyFile.conf
Если каталог существовал, вы переместили файл в него, а затем:
sudo mv /openvpn/MyFile.conf /etc/
Чтобы переместить его в существующий подкаталог текущего каталога, вы можете запустить любой из них - они используют относительные пути:
mv MyFile.conf openvpn
mv MyFile.conf openvpn/
mv MyFile.conf ./openvpn
mv MyFile.conf ./openvpn/
.
является ссылкой на текущий каталог, поэтому ./
в начале пути означает «в этом каталоге». Косая черта в конце означает, что openvpn
это каталог, и вы хотите переместить файл в него. Если вы не предоставите его, файл будет перемещен в него, если каталог с таким именем существует, иначе файл будет переименован в openvpn
. Если /
в конце есть mv
буква , он предупредит вас, если каталог отсутствует, и не переименовывает, так что это безопасный способ, если вы не хотите переименовывать.
Если ваш путь начинается с /
другой стороны, это абсолютный путь, независимо от текущего рабочего каталога, он всегда относительно корневого каталога /
. Используя абсолютные пути для файла и места назначения, ваша команда будет выглядеть так:
mv /etc/MyFile.conf /etc/openvpn
mv /etc/MyFile.conf /etc/openvpn/
дальнейшее чтение
sudo mv /openvpn/MyFile.conf /etc/
сначала выполнить команду. В вероятном сценарии каталог не существует, он просто выдаст вам ошибку (вероятно, «Не каталог») и не коснется файловой системы. Тогда вы можете просто сделатьsudo mv /openvpn /etc/MyFile.conf
.Вам нужно использовать
переместить
MyFile.conf
файл вopenvpn
подкаталог/etc/
.С другой стороны
переместил бы файл в
/
каталог какopenvpn
(т.е. переименовал какopenvpn
) вместо этого (предполагая, что/openvpn
каталог не существует).источник
Когда вы перемещаете файл, вы указываете ОС каталог, в который вы хотите поместить его, или новый путь, который вы хотите указать.
Вы сказали ОС "/ openvpn". Так что он собирается сделать именно это - проверить, существует ли / openvpn (имеется в виду объект с именем "openvpn", расположенный в корневом каталоге) и является ли каталогом, и если это так, переместите в него свой файл, или же если / openvpn является файлом или не существует, переименуйте и переместите файл, чтобы он был доступен как / openvpn.
То, что вы хотели сделать, это переместить его в каталог "openvpn", который находится в вашем текущем каталоге , а не в корневой каталог файловой системы (именно это означает начальный символ "/"). Таким образом, вам нужно было указать на этот каталог в команде перемещения, а не на абсолютный путь "/ openvpn". Любой из них будет работать:
mv MyFile.conf openvpn
- посмотрите в моем текущем dir для этого "openvpn"mv MyFile.conf /etc/openvpn
- ищите абсолютный путь / etc / openvpnmv MyFile.conf openvpn/
- посмотрите в моем текущем dir, для dir под названием openvpnmv MyFile.conf ./openvpn
- делает «текущий каталог» еще более очевиднымКороткая версия - вы, вероятно, использовали «/» для обозначения «моего текущего каталога», поэтому «/ openvpn» для обозначения «openvpn, который находится в моем текущем каталоге». Но ведущий «/» всегда означает «корневой каталог», поэтому «/ openvpn» означает «openvpn в корневом каталоге». Вам нужно было просто использовать «openvpn» или «openvpn /», что означает «openvpn в моем текущем каталоге ».
источник
Любой путь, который начинается с,
/
является абсолютным, а не относительным.Если бы все пути были всегда относительно текущего каталога, как бы вы
cd /etc
в первую очередь? Вам придетсяcd ../../../../../etc
надеяться, что уровней будет достаточно..
, или просто продолжать,cd ..
пока не дойдете до корневого каталога.Или вам понадобится другой синтаксис для выражения абсолютных путей. Но Unix выбрал
/
абсолютное значение, а все остальное относительно текущего рабочего каталога процесса. Такmv MyFile.txt openvpn
будет работать.И нет, было бы не очень хорошо вывести абсолютные и относительные из существующих файлов или нет. Мы не хотели бы
mkdir
системные вызовы , чтобы лечить по- разному дорожкам отchdir
илиrename
системных вызовов, и делаяmv
программу делать это только оставляет за несогласованностиmv
и некоторой другой программой , которая принимает имя выходного файла.mv
уже является особенным, потому что, когдаrename()
местом назначения является каталог, он добавляет имя файла источника в этот каталог назначения и пытается снова. Но обратите внимание, что одна простая стратегия реализации основана на сбое первогоrename()
системного вызова с помощьюEEXIST
илиEISDIR
. Поэтому мы должны знать, является ли путь относительным или абсолютным, прежде чем проверять файловую систему.(Ранний Unix работал на медленных компьютерах, где дополнительные проверки, если каталог существовал, могли означать дополнительный ввод / вывод, если он не был кэширован, или большее давление на кэширование каталогов. Но я думаю, что аргументы здравомыслия / корректности достаточны, чтобы объяснить, почему ваша первая догадка не было правдоподобного способа работы системы, не прибегая к историческим аргументам эффективности.)
источник
Чтобы завершить другие ответы:
так же, как для Windows
Файловой системы в Linux , как полагают , в соответствии с стандартом файловой иерархии , или FHS для краткости. это поможет вам узнать, где должен быть размещен файл, в зависимости от его характера и содержания.
Первая папка (эквивалентная
c:
в Windows) есть/
.источник