Я хотел бы понять, что на самом деле означает полное имя пути. У меня есть файл в моем домашнем каталоге под названием my_script. Я предположил, что полное имя пути - ./my_script, что означает, что оно находится в корневой папке, но я не уверен. Может кто-нибудь, пожалуйста, просветить меня на этот счет?
Нет, ваше предположение неверно. Полное имя пути для my_script
файл из вашего домашнего каталога находится: /home/your_user_name/my_script
. Когда вы печатаете ./my_script
в терминале вы фактически пытаетесь выполнить скрипт (если он исполняемый), и он будет выполнен только в том случае, если ваш текущий рабочий каталог находится /home/your_user_name/
. Для выполнения скрипта вы также можете использовать полный путь к файлу, который, как я уже сказал, /home/your_user_name/my_script
.
Считается, что имя пути UNIX выглядит и ощущается как интернет-адреса, что приводит к совместимости. Полное имя пути к текущему рабочему каталогу можно найти в терминале с помощью следующей команды:
pwd
Чтобы узнать полный путь к домашнему каталогу вашего пользователя, вы можете использовать:
echo ~echo $HOMEecho /home/$USER
Приведенные выше три команды эквивалентны.
Чтобы узнать полный путь к файлу, вы можете использовать readlink
команда. Например, в вашем случае:
cd ~readlink -f my_script
Полное имя пути на самом деле означает полный путь к этому файлу или папке из файловой системы /
каталог.
Например, полный путь к вашему скрипту - это:
/home/your_username/my_script
Или полное имя пути к grep
исполняемый файл - это
/bin/grep
Что касается ./my_script
, символ .
обозначает текущий каталог, поэтому вы на самом деле говорите: "Найдите в текущем каталоге файл или папку с именем my_script".
Чтобы понять полный путь, вы должны сначала знать отправную точку.
Корневой каталог /
это отправная точка операционных систем на базе *nix. Он содержит все остальные каталоги, как системные, так и пользовательские.
Домашний каталог пользователя /home/USERNAME/
или ~/
для краткости, содержит файлы и каталоги пользователя. Например, Фотографии, Музыка, Документы и т.д. На каждый из этих каталогов ссылаются как /home/USERNAME/DIRECTORY
например, Documents находится по адресу /home/USERNAME/Documents
.
Как и в случае с каталогами, ссылки на файлы выполняются таким же образом, например, на файл с именем my_script
находится в домашнем каталоге пользователя sosytee
можно ссылаться, используя полный путь /home/sosytee/my_script
или ~/my_script
для краткости.
Как на файлы, так и на каталоги можно ссылаться / получать к ним доступ, используя их полные пути из любой точки системы. Кроме того, к ним можно получить доступ, используя только их имя, если оно находится в том же каталоге. Например, если пользователь находится на ~/
при использовании терминала он может получить доступ my_script
файл, используя только my_script
.
Кроме того, можно получить доступ к каталогам и файлам, используя только их имена, если они помещены в его переменную PATH. Вы можете увидеть, что хранится в PATH, используя echo $PATH
.
Простые примеры того, как получить доступ к файлам с помощью командной строки:
- Пользователь в настоящее время находится на
/home/USERNAME/
и хочет использоватьcat
команда для файла, расположенного по адресу/home/USERNAME/Documents
названный foo.txt:
cat Documents/foo.txt
-
Пользователь находится внутри
~/Documents
и хочет запустить скрипт с именемfoo.sh
размещенное объявление~/Scripts/Foo
:sh ../Scripts/Foo/foo.sh
или
sh ~/Scripts/Foo/foo.sh
безусловно, это всего лишь краткое изложение.
Дополнительная информация
Руководство по Bash для начинающих, автор Machtelt Garrels
Подробнее о ПУТИ здесь
Я предположил, что полное имя пути - ./my_script
Нет, это не так. Этот путь относителен. Точка в начале указывает на текущий каталог:
$ ls ./my_scriptmy_script$ cd ..$ ls ./my_scriptls: cannot access ./my_script: No such file or directory
Как вы можете видеть, я изменил каталог и my_script
не найден, что означает, что ./my_script
это не абсолютный путь.
Я предположил, что полное имя пути - ./my_script, что означает, что оно находится в корневой папке, но я не уверен.
Из Википедия:
[...] Полный путь или абсолютный путь это путь, который указывает на одно и то же местоположение в одной файловой системе, независимо от рабочего каталога или комбинированных путей.
С тех пор, как ./my_script
не выполняйте условие, которое всякий раз, когда я нахожусь, я могу найти my_script
файл, мы должны сделать вывод, что это относительный путь.
A относительный путь это путь относительно рабочего каталога пользователя или приложения, поэтому полный абсолютный путь указывать не нужно.
Полное имя пути - это путь из корневого каталога (т.е., /
)../my_script
является относительным именем пути, поскольку путь задается относительно текущего каталога, который обозначается .
.Итак, если вы находитесь в своем домашнем каталоге, полный путь s.th . как /home/sosytee/my_script
. Для вашего домашнего каталога есть "короткий путь". ~
, что означает , что вы также можете написать ~/my_script
. Но это, конечно, приведет к другому пути для каждого пользователя.
Чтобы увидеть полный путь к вашему текущему каталогу, вызовите pwd
.
Здесь ... я предполагаю, что вы спрашиваете, потому что вы установили Ubuntu server в Windows...
скопируйте этот код в свой проводник папок в Windows %userprofile%\AppData\Local\Packages
это покажет вам местоположение дома... он спрятан где-то в вашей системе
В этой папке дважды щелкните папку для дистрибутива Linux, файлы которого вы хотите просмотреть:
- Ubuntu: Каноническая группа ограничена.UbuntuonWindows_79rhkp1fndgsc
- openSUSE Leap 42: 46932SUSE.opensuseleap 42.2_022rs5jcyhyac
- Корпоративный сервер SUSE Linux 1246932SUSE.SUSELinuxEnterpriseServer12SP2_022rs5jcyhyac
Названия этих папок могут немного измениться в будущем. Просто найдите папку, названную в честь дистрибутива Linux.
ваш дом будет находиться под LocalState\rootfs\home
Большая часть этой информации была получена от Как получить доступ к вашим файлам Ubuntu Bash в Windows (и к Вашему системному диску Windows в Bash)
Можете ли вы спросить: “возможно ли написать команду, которая отобразит список файлов с их именами?” в еще один ** новый ** вопрос?