Что такое полное имя пути?

Я хотел бы понять, что на самом деле означает полное имя пути. У меня есть файл в моем домашнем каталоге под названием 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

безусловно, это всего лишь краткое изложение.

Дополнительная информация

Я предположил, что полное имя пути - ./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, файлы которого вы хотите просмотреть:

  1. Ubuntu: Каноническая группа ограничена.UbuntuonWindows_79rhkp1fndgsc
  2. openSUSE Leap 42: 46932SUSE.opensuseleap 42.2_022rs5jcyhyac
  3. Корпоративный сервер SUSE Linux 1246932SUSE.SUSELinuxEnterpriseServer12SP2_022rs5jcyhyac

Названия этих папок могут немного измениться в будущем. Просто найдите папку, названную в честь дистрибутива Linux.

ваш дом будет находиться под LocalState\rootfs\home

Большая часть этой информации была получена от Как получить доступ к вашим файлам Ubuntu Bash в Windows (и к Вашему системному диску Windows в Bash)

Можете ли вы спросить: “возможно ли написать команду, которая отобразит список файлов с их именами?” в еще один ** новый ** вопрос?