Я был в моем /etc
каталог и введенный команда
me@mylaptop:/etc$ sudo mv MyFile.conf /openvpn
Я думал, что это переместит файл в каталог openvpn
который является подкаталогом /etc
каталог. Однако это, кажется, не то, что произошло. Все, что я могу подтвердить, - то, что команда выполнялась.
Предоставленный каталог это имя не существует, Вы переименовали файл к 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
. С a /
в конце, mv
предупредит Вас, если каталог будет отсутствовать, и не переименовывают, таким образом, это - безопасный путь, если Вы не хотите переименовывать.
Если Ваш путь начинается /
с другой стороны, это - полный путь независимо от текущего рабочего каталога, это всегда относительно корневого каталога /
. Используя полные пути и для файла и для места назначения Ваша команда была бы похожа на это:
mv /etc/MyFile.conf /etc/openvpn
mv /etc/MyFile.conf /etc/openvpn/
Необходимо использовать
me@mylaptop:/etc$ sudo mv MyFile.conf openvpn/
перемещаться MyFile.conf
файл в openvpn
подкаталог /etc/
.
С другой стороны,
me@mylaptop:/etc$ sudo mv MyFile.conf /openvpn
переместил бы файл в /
каталог как openvpn
(т.е. переименуйте как openvpn
) вместо этого (принятие /openvpn
каталог не существует).
При перемещении файла Вы говорите ОС каталог, в который Вы хотите поместить ее, или новый путь, который Вы хотите дать ей.
Вы сказали ОС "/openvpn". Таким образом, это собирается сделать точно, что - проверяют, существует ли/openvpn (значение объекта, названного "openvpn", расположенным в корневом каталоге), и является каталогом, и раз так переместите свой файл в него, или иначе если/openvpn является файлом или не существует, переименуйте и переместите свой файл, таким образом, это теперь доступно как/openvpn.
То, что Вы хотели, чтобы это сделало, было переместить его в в рамках каталога "openvpn", который должен быть найден в Вашем текущем каталоге, не один это находится в корневом каталоге файловой системы (который является тем, что продвижение "/" показывает). Таким образом, необходимо было указать на тот dir в команде перемещения, не к полному пути "/openvpn". Любой из них будет работать:
mv MyFile.conf openvpn
- посмотрите в моем текущем dir для этого "openvpn"mv MyFile.conf /etc/openvpn
- ищите полный путь/etc/openvpnmv MyFile.conf openvpn/
- посмотрите в моем текущем dir, поскольку dir назвал openvpnmv MyFile.conf ./openvpn
- делает "текущий dir" еще более очевиднымКороткая версия - Вы, вероятно, использовали "/", чтобы означать "мой текущий каталог", поэтому "/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 работал на медленных компьютерах, где дополнительные проверки, если каталог существовал, могли бы означать дополнительный ввод-вывод, если бы он не кэшировался, или больше давления на кэширование каталога. Но я думаю исправность / аргументы правильности достаточны для объяснения, почему первое предположение не было вероятным путем к системе для работы, не обращаясь к историческим аргументам эффективности.)
Завершать другие ответы:
mv file.txt /location
совпадает с, для Windows
mv file.txt c:\location
О файловой системе в Linux думают в соответствии со стандартом иерархии файловой системы или FHS, если коротко. помогает Вам знающий, куда файл должен быть помещен в зависимости от его характера и содержания.
Первая папка (эквивалентный c:
в Windows), /
.