В ос windows корневой каталог в пути указывается символом

Путь к файлу – это набор символов, который показывает расположение того или иного файла в операционной системе. Запись, которая включает в себя разделительный знак в виде «\» (обратного слеша). Также существуют пути каталогов. Все они используются в файловых системах компьютеров и иных устройств.

Работать с соответствующим элементом предстоит всем, кто пользуется оборудованием: программистам, системным администраторам, обычным пользователям. В данной статье речь зайдет о видах путей к каталогам и документам. Предложенная информация поможет классифицировать соответствующие «символьные наборы», а также научит пользоваться ими.

Особенности

Определение пути к каталогу или файлу можно дать как «маршрут». Это – «дорога», по которой нужно пройти, чтобы отыскать конкретные директории или документы на устройстве. Последовательность, записываемая по определенным принципам. Форма представления зависит от вида путей каталогам.

За основу возьмем работу в операционной системе Windows (Виндовс). Здесь рекомендуется запомнить такие нюансы:

  1. Есть «маршрут» начинается с обратного слеша (символ обратной косой черты), то система будет воспринимать его, как идущий от корневого каталога.
  2. Каждое имя каталога или файла, указанное в пути, должно соответствовать входу в папку.
  3. Символ «…» (многоточие) – это переход в родительский каталог.
  4. Слеш «/» — указывает, куда делать следующий «шаг».

Это – база, без которой дальнейшая работа с Windows и «маршрутами» в ней невозможна.

Имя

Путь к файлу не получится указать, если не знать, как правильно пишется его имя. То же самое касается и папок. Для поиска директории или документов максимально эффективно и быстро, необходимо узнать полное имя того или иного объекта.

Имя файла в системах DOS и Windows включает в себя три элемента:

  • непосредственное название – имя;
  • разделитель (точка);
  • расширение (тип информации, с которой предстоит работать).

По умолчанию в Виндовс расширения (виды) документов скрыты. Эта информация среднестатистическому пользователю не нужна. Способов узнать расширение документа несколько. Пример – через параметр «Свойства». Методов включения отображения расширения тоже несколько – все зависит от конкретной операционной системы.

MS DOS определяет для имени всего 8 символов. Такое ограничение было в старых версиях операционных систем. Теперь оно упразднено, но это не значит, что нужно давать документам слишком длинные названия. Это усложнит поиск пути к файлу. 

Разновидности

Для получения доступа к той или иной директории, а также любому документу на устройстве, нужно знать, где он размещается. Здесь на помощь придет путь к файлу. Он может быть нескольких видов:

  • относительный;
  • абсолютный.

Зная особенности каждого варианта, можно выучить, как правильно записать каждую форму представления, а также использовать соответствующую последовательность на практике.

Относительный вид

Относительный путь к файлу – это «маршрут» к документу относительно текущего каталога. Текущий каталог – это тот, в котором запускается программа, скрипт или открывается страница в браузере.

Он ссылается на местоположение относительно текущей директории. Используют два специальных символа:

  1. Точку «.». Используя этот символ, можно перейти в текущий каталог.
  2. Двойную точку «..». Позволяет посмотреть (перейти) в родительский каталог. Используется для перехода на один уровень вверх.
Файлы и пути к ним

Выше – наглядный пример расположения файлов в системе. Эта графическая последовательность используется для быстрого поиска конкретного документа на компьютере. Она поможет понять, как правильно указать путь к файлу относительного вида.

Для перехода в Posters нужно записать такую последовательность: D:\Data\Maps\Posters. Соответствующая запись указывает на то, что нужно перейти на диск D, затем в директорию Posters, которая расположена в Maps. Последняя вложена в Data, размещенной на разделе диска с именем D.

Текущая директория – это корневая папка. После перехода в каталог Posters именно он будет выступать корневым.

Нюансы работы

Понятие путей к файлам, а также к каталогам понятно. Также стало понятно, что обозначает относительный «маршрут». Чтобы лучше работать с ним, рекомендуется рассмотреть наглядный практический пример. За основу возьмем документы, которые находятся на устройстве по образцу выше.

Предположим, что хочется перейти к папке Landuse из текущей директории, которая называется Soils. Чтобы переключиться туда, нужно:

  1. Открыть адресную строчку Windows.
  2. Узнать путь к файлу или директории. В нашем случае – к конкретной папке.
  3. Написать в адресной строчке запись формы: ..\Landuse.

В данном случае Windows произведет поиск каталога, после чего перейдет в D:\Data\Shapefiles\Landuse.

Абсолютный путь

Абсолютный путь к файлу означает полный «маршрут» до документа или архива. Он включает в себя все диски, а также имена папок и файлов, которые нужно открыть для перехода к заданному изначально объекту.

Файловая система Windows работает преимущественно с таким вариантом. Он наиболее прост для понимания среднестатистических пользователей. В Виндовс все начинается с диска или его раздела. Традиционно он записывается как одна буква:

  • D;
  • C;
  • E.

Абсолютно сформированный путь к до файла формируется по определенному принципу. Его легко запомнить. Он выглядит так:

  1. Начинается всегда с диска, на котором находится тот или иной объект. Это – корневой диск.
  2. Все вложенные папки. Все то, куда будет заходить пользователь или файловая система, чтобы искать объект.
  3. Имя файла. Оно должно быть записано корректно. Желательно вместе с расширением (типом).

Сейчас покажу, как выглядит путь до файла статья.txt:

Стоит обратить внимание на принципы правильного формирования пути к файлу: начинается с диска, на котором расположен, а разделяющими символами служат обратные слеши. Предложенная ранее запись показывает, что файл статья.txt находится на диске C, в папке Media, которая расположена в директории Thecode. Последний элемент – это корень.

Разница с UNIX

В MacOS, как и в любой UNIX-системе все диски – это тоже папки. Это значит, что по умолчанию все новые диски будут подключаться как папки внутри папки /Volumes.

Понятие полного пути к файлу в Windows раскрыто. Это «маршрут», в начале которого указывается диск, на котором расположен объект. В случае с MacOS и Linux не только отсутствуют диски, но и используются измененные разделительные знаки. А именно – знаком «/».

Больше разницы между Windows и UNIX-системами нет. Абсолютный путь к директории означает написание всего «маршрута», по которому должен пройти клиент для обнаружения «архива». Относительный – его «уменьшенная» вариация.

Что лучше использовать

Абсолютный и относительный путь к каталогу (или иному объекту системы) – означает почти одно и то же. Первый вариант отвечает за определение полного «маршрута» до документа, второй – ее «урезанную» интерпретацию.

Перед тем как программировать или работать в операционной системе, встает вопрос о том, какую форму представления использовать.

При программировании и разработке используется относительный вариант. Связано это с тем, что находить документы и директории тут не сложно – они расположены в корневой папке проекта.

Для системного администрирования и получения доступа к тем или иным объектам ОС, рекомендуется использовать полный путь. Он более информативный. Это значит, что компьютеру или пользователю предстоит сделать все «шаги», предусматриваемые «маршрутом», для получения доступа к объекту.

Принцип использования того или иного «адреса» прост:

  • работа в интернете с чужими документами – абсолютный вариант;
  • оперирование собственными объектами проекта – относительный.

Теперь выясним, как по имени файла провести определение пути к файлу, а также скопировать соответствующий «адрес».

Как определить и скопировать маршрут

Существуют различные методы реализации. Для того, чтобы просмотреть полный путь файла, а затем перенести его в буфер обмена устройства, можно использовать системные возможности и «горячие клавиши». Все варианты достаточно просты в освоении.

Через Shift

Первый прием показывает, как копировать в буфер обмена «адрес» документа или директории без его непосредственной демонстрации:

  1. Выбрать файл, который хочется использовать.
  2. Нажать на Shift на клавиатуре и кликнуть ПКМ по документу.
  3. Выбрать «Скопировать как путь».

Теперь можно пользоваться соответствующей информацией по собственному усмотрению.

Свойства

Понятие полного пути к файлам раскрыто. Посмотреть его в Windows можно через «Свойства» объекта. Там найдете не только местоположение файла/директории, но и иную важную информацию вроде объема и расширения.

Чтобы воспользоваться этим приемом, нужно:

  1. Найти документ на устройстве.
  2. Нажать ПКМ по нему.
  3. Выбрать параметр «Свойства».
  4. Открыть вкладку «Общие».

Теперь в разделе «Расположение» можно увидеть путь к соответствующему файлу вместе с именем файла. Остается выделить значение строчки «Адрес» и скопировать его. Пример – при помощи ctrl + c.

Командная строка

Командная строка Windows позволяет отследить путь из корневого каталога до желаемого объекта с самого начала. Выводит информацию в консоли:

  1. Открыть командную строку.
  2. Перетащить иконку документа в основное окно приложения «Командная строка».
  3. Посмотреть на результат.
Файлы и пути к ним

В консоли появится путь к желаемому файлу вместе с именем файла, а также всеми папками, которые нужно открыть для поиска соответствующего элемента.

В MacOS

Для MacOS уточнение расположения документов/директорий проводится точно так же, как и в Windows – при помощи Shift. Здесь предстоит найти тот или иной файл в Finder, а затем, удерживая клавишу Option, зажать ПКМ. Теперь остается выбрать команду «Скопировать путь до…».

Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в Otus!

Файлы и пути к ним

Материал из РУВИКИ — свободной энциклопедии

Logo-ran.png

Проводится экспертиза
Российской Академией Наук

Подробнее

Экспертиза РАН

Logo-ran.png

Проводится экспертиза
Российской Академией Наук

Ege oge.png

База знаний для подготовки к ЕГЭ и ОГЭ, проверенная Российской Академией наук

Подробнее

Материал ОГЭ/ЕГЭ

Ege oge.png

База знаний для подготовки к ЕГЭ и ОГЭ, проверенная Российской Академией наук

Путь (англ. path) — это последовательность символов, определяющая расположение файла или каталога в файловой системе.

Основные понятия

  • Разделитель каталогов — символ, используемый для разделения названий каталогов в пути. В операционных системах семейства UNIX это «/», в Windows — «\».
  • Абсолютный путь — полный путь к файлу или каталогу, начинающийся с корневого каталога. Он указывает точное расположение независимо от текущего рабочего каталога.
  • Относительный путь — путь к файлу или каталогу относительно текущего рабочего каталога пользователя или приложения.

Типы путей

Абсолютный путь

Абсолютный путь указывает местоположение файла или каталога в файловой системе, начиная от корневого каталога.

  • В UNIX-подобных системах абсолютный путь начинается с символа корневого каталога «/».
  • В Windows абсолютный путь может начинаться с буквы диска и двоеточия, например, «C:\».

Примеры:

  • UNIX: /home/user/docs/file.txt
  • Windows: C:\Users\User\Documents\file.txt

Относительный путь

Относительный путь определяет расположение файла или каталога относительно текущего рабочего каталога.

Примеры:

  • Если текущий каталог — /home/user, то относительный путь к файлу будет docs/file.txt.
  • В Windows, находясь в каталоге C:\Users\User, относительный путь будет Documents\file.txt.

Представление путей в разных операционных системах

Операционная система Разделитель каталогов Корневой каталог Текущий каталог Родительский каталог Пример пути
UNIX/Unix-подобные ОС / / . .. /usr/local/bin/script.sh
Windows \ или / C:\ . .. C:\Program Files\App\app.exe
Mac OS (классический) : Имя_диска: : :: Macintosh HD:Applications:App.app
OpenVMS . Диск:[Каталог] [] [-] DISK1:[USER.DOCS]FILE.TXT

UNC-пути в Windows

UNC (англ. Uniform Naming Convention) — универсальное соглашение об именовании, используемое для указания расположения сетевых ресурсов (файлов, папок и принтеров) в Windows.

Синтаксис UNC-пути

\\Сервер\Общий_ресурс[\Путь]\Имя_файла

  • Сервер — сетевое имя компьютера.
  • Общий_ресурс — имя общего каталога или принтера на сервере.
  • Путь — (необязательно) последовательность подкаталогов внутри общего ресурса.
  • Имя_файла — (необязательно) имя файла.

Примеры:

  • Путь к сетевому файлу: \\FileServer\Shared\Docs\report.docx
  • Путь к сетевому принтеру: \\PrintServer\HP_LaserJet

Заключение

Понимание структуры путей в файловой системе является ключевым для эффективной работы с файлами и каталогами. Знание различий между абсолютными и относительными путями, а также особенностей их записи в различных операционных системах, позволяет уверенно навигировать в файловой системе и обращаться к необходимым ресурсам как на локальном компьютере, так и в сети.

Литература

  • Босова Л. Л., Босова А. Ю. Информатика: учебник для 9 класса. — М.: БИНОМ. Лаборатория знаний, 2013.
  • Семакин И. Г., Залогова Л. А., Русаков С. В., Шестакова Л. В. Информатика: учебник для 9 класса. — М.: БИНОМ. Лаборатория знаний, 2015. — Т. 3-е изд..
  • Поляков К. Ю., Еремин Е. А. Информатика. 9 класс. — М.: БИНОМ. Лаборатория знаний, 2017.
  • Угринович Н. Д. Информатика и ИКТ: учебник для 9 класса. — М.: БИНОМ. Лаборатория знаний, 2012. — Т. 6-е изд..

Пути файловых систем в Windows страннее, чем можно подумать. В любой производной от Unix системе пути на удивление просты: если нечто начинается с /, то это путь. Но всё совершенно иначе в Windows, которая имеет озадачивающее разнообразие схем составления пути.

Когда я реализовал функцию автозавершения пути в Fileside 1.7, мне нужно было изучить этот вопрос внимательнее, чтобы ничего не упустить. В этой статье я расскажу о своих находках.

Стоит заметить, что статья ограничивается только тем типом путей, который видит пользователь приложений Windows (обусловленный Win32 API). Под этим слоем есть ещё больше любопытного, в основном касающегося тех, кто пишет драйверы оборудования и тому подобное.

Вкратце

Форматы абсолютных путей

Форматы относительных путей

Запрещённые символы

Ограничения длины

Схемы путей Windows

В Windows существует три разных вида абсолютного пути и три разных типа относительного пути.

Абсолютные пути

Абсолютные, или полные пути — это завершённые пути, сами по себе уникальным образом идентифицирующие местоположение в файловой системе.

Пути к диску

Пути к диску — это старые добрые пути, которые мы знаем и любим, они состоят из буквы диска и последовательности папок.

D:\Doughnut preferences\With jam in

UNC-пути

UNC расшифровывается как Universal Naming Convention, это описание файлов, начинающееся с \\, часто используемое для ссылок на сетевые накопители. Первый сегмент после \\ — это хост, который может быть или сервером с именем, или IP-адресом:

\\Work\Hard
\\192.168.1.15\Hard

UNC-пути также можно использовать для доступа к локальным дискам:

\\localhost\C$\Users\Andrew Fletcher
\\127.0.0.1\C$\Users\Alan Wilder

Или с использованием имени компьютера:

\\Pipeline\C$\Users\Martin Gore

Символ $ в C$ обозначает скрытую административную общую папку; он не заменяет двоеточие рядом с именем диска :. Общие диски в стиле C$ — это просто удобные ярлыки, автоматически создаваемые Windows. Доступ к дискам через них возможен, только если вы вошли как администратор.

Стоит также заметить, что \\Pipeline сам по себе не валидный путь к папке, он идентифицирует только сервер. Чтобы попасть в папку, нужно добавить имя общей папки.

Пути к устройству

Путь к устройству начинается с одного из следующих фрагментов:

  • \\?\
  • \\.\

Кроме файлов и папок их можно использовать для адресации физических устройств (дисков, дисплеев, принтеров и так далее). Не совсем то, что вы используете в повседневном процессе управления файлами, но это полезно знать, если вы когда-нибудь найдёте что-то подобное.

Синтаксис доступа к локальной папке выглядит как один из этих вариантов:

\\?\Z:\Animals\Cute
\\.\Z:\Animals\Cunning

Если вам нужно ещё больше загадочности, то можно также подставить эквивалентный Z: идентификатор устройства:

\\?\Volume{59e01a55-88c5-411f-bf0b-92820bdb2548}\Animals\Cryptic

Здесь Volume{59e01a55-88c5-411e-bf0a-92820bdb2549} — это идентификатор дискового тома, на котором находится Z: в компьютере.

Также существует специальный синтаксис для описания UNC-путей как путей к устройству:

\\?\UNC\localhost\Z$\Animals\Curious

В путях к устройству часть, идущая после \\?\ или \\.\ — это имя, определённое во внутреннем пространстве имён Object Manager Windows. Те, кому любопытно исследовать это пространство имён, могут скачать инструмент WinObj и посмотреть.

Нормализованные и литеральные пути к устройству

Так в чём же разница между \\?\ и \\.\?

В обычном случае, когда вы передаёте путь операционной системе Windows, она очищает его, прежде чем использовать. Этот процесс называется нормализацией, подробнее о нём мы поговорим ниже.

Путь \\?\ пропускает этот этап очистки, а \\.\ не пропускает. Поэтому можно назвать пути \\?\ литеральными путями к устройству, а \\.\нормализованными путями к устройству.

Допустим, по какой-то непонятной причине, у вас есть файл с именем .. (например, он мог быть создан на сетевом диске в другой системе). В обычном случае вы бы не смогли получить доступ к нему, потому что нормализация резолвит его в родительскую папку, но благодаря литеральному пути к устройству это можно сделать.

Относительные пути

Относительные пути — это неполные пути, которые для уникальной идентификации местоположения необходимо скомбинировать с другим путём.

Пути, относительные к текущей папке

Эти пути используют в качестве начальной точки текущую папку, например, .\Torquay относится к подпапке текущей папки, а ..\Wales относится к подпапке родителя текущей папки.

Папки, относительные к корню текущего диска

Если начать путь с одной \, то путь интерпретируется как относительный к корню текущего диска. Поэтому если вы находитесь в любом месте диска E: и введёте \Africa, то окажетесь в E:\Africa.

Когда доступ к текущей папке выполняется через UNC-путь, то путь, относительный к текущему диску, интерпретируется относительно к общей корневой папке, допустим \\Earth\Asia.

Пути, относительные к текущей папке диска

Эти более редко используемые пути указывают диск без обратной косой черты, например E:Kreuzberg, и интерпретируются относительно к текущей папке этого накопителя. На самом деле это имеет смысл только в контексте оболочки командной строки, отслеживающей текущую рабочую папку для каждого диска.

Это единственный тип путей, не поддерживаемый Fileside, потому что в нём нет понятия текущей папки каждого диска. Текущую папку имеют только панели.

Нормализация

Как говорилось ранее, все пути, за исключением литеральных путей к устройству, перед использованием проходят процесс нормализации. Этот процесс состоит из следующих этапов:

  • Замена косых черт (/) на обратные косые черты (\)
  • Сворачивание повторяющихся разделителей в виде обратных косых черт в один
  • Резолвинг относительных путей заменой всех . или ..
  • Отсечение завершающих пробелов и точек

Таким образом, в общем случае можно указывать пути Windows при помощи косых черт.

Правила именования в Windows

Теперь рассмотрим отдельные элементы, из которых состоит путь. Существует множество ограничений имён, которые можно использовать для файлов и папок.

Запрещённые символы

В имени нельзя использовать следующие символы:

< > " / \ | ? *

Также исключаются любые непечатаемые символы со значением ASCII меньше 32.

Хитрое двоеточие

В большинстве случаев : также запрещено.

Однако существует экзотическое исключение в виде изменённых потоков данных NTFS, в которых двоеточие используется в качестве разделителя внутри имени. Малоизвестно, что в некоторых контекстах можно хранить внутри файла скрытый фрагмент данных, добавляя к его имени суффикс, которому предшествует двоеточие.

Опасная точка

Символ . допустим внутри или в начале имени, но запрещён в конце.

Начинающие и завершающие пробелы

Любопытно, что Windows допускает пробелы в начале, но не в конце имён. Так как имя с пробелами в начале и конце часто выглядит похожим на имя без пробелов, обычно это ужасная идея, и при переименовании или создании файлов Fileside автоматически удаляет их.

Запрещённые имена

По историческим причинам нельзя использовать следующие имена:

CON, PRN, AUX, NUL, COM0, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT0, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 и LPT9.

Это включает и имена с расширениями. Например, если вы назовёте файл COM1.txt, то внутри он преобразуется в \\.\COM1\ и интерпретируется самой Windows как устройство. А это не то, что нам нужно.

Чувствительность к регистру

В большинстве случаев Windows не делает различий между символами в верхнем и нижнем регистре в путях.

C:\Polish hamlet, c:\polish Hamlet, C:\Polish Hamlet и C:\POliSh hAMlET считаются абсолютно одинаковыми.

Однако с обновления Windows 10 за апрель 2018 года файловые системы NTFS имеют опцию включения чувствительности к регистру на уровне папок.

Ограничения длины

Мы ещё не закончили: ограничения есть и на длину.

Пути

Традиционно длина пути в Windows не могла превышать 260 символов. Даже сегодня это справедливо для некоторых приложений, если только их разработчики не предприняли мер для обхода этого ограничения.

Этот обход заключается в преобразовании каждого пути в литеральный путь к устройству перед передачей его Windows. Сделав это, мы сможем обойти ограничение в 260 символов и увеличить его до чуть более щедрого предела в 32767 символов.

Имена

Имена файлов и папок не могут быть длиннее 255 символов.

Так много способов сказать одно и то же

Вооружённые этим знанием, мы понимаем, что можем создать почти неограниченное количество различных строк путей, и все они будут ссылаться на одну и ту же папку.

  • C:\CHAMELEON
  • c:\chameleon
  • C:\/\\//\\\///Chameleon
  • C:\Windows\..\Users\..\Chameleon
  • \\localhost\C$\Chameleon
  • \\127.0.0.1\C$\Chameleon
  • \\?\C:\Chameleon
  • \\.\C:\Chameleon
  • \\.\UNC\localhost\C$\Chameleon
  • \\?\Volume{59e01a55-88c5-411e-bf0a-92820bdb2549}\Chameleon
  • \\.\GLOBALROOT\Device\HarddiskVolume4\Chameleon
  • и так далее

Вот что получаешь, когда приходится обеспечивать полную обратную совместимость в течение нескольких десятилетий!

Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку

Абсолютные и относительные пути определяют расположение файла или каталога в файловой системе. Это набор инструкций для ОС по поиску того или иного элемента. Понимание того, как использовать пути, поможет как обычным, так и опытным пользователям. 

В этой статье мы рассмотрим, чем отличается абсолютный путь от относительного, и посмотрим, как их найти и создать в своей системе.

Что такое пути? 

Пути в компьютерной системе – это иерархический способ указания места, где располагается файл или каталог. Пути имеют ключевое значение для операционной системы, так как с их помощью она может находить файлы и каталоги, а также получать к ним доступ.

Существует два типа путей:

  • Абсолютный путь. Полный и точный путь к файлу или каталогу из корневого каталога системы.
  • Относительный путь. Расположение файла или каталога относительно текущего рабочего каталога.

То, какой путь выбрать, зависит от конкретной задачи и потребности в переносимости в данной ситуации. В следующих разделах мы подробно рассмотрим оба пути и приведем примеры.

Что такое абсолютный путь?

Абсолютный путь – это расположение файла или каталога, которое указывается, начиная с корневого каталога. Это полный путь от начала файловой системы. 

Абсолютный путь всегда начинается с жесткого диска или какого-либо другого устройства хранения и описывает каждый шаг, который должен сделать пользователь, перемещаясь по файловой системе, чтобы оказаться в указанном месте. Абсолютные пути точны и просты для понимания. Их следует использовать тогда, когда вам нужно точно указать местоположение файла или каталога независимо от вашего текущего рабочего каталога.

Однако с абсолютными путями может быть неудобно работать, особенно если вы работаете с глубоко вложенными каталогами. 

Пример абсолютного пути

Абсолютный путь может записываться по-разному. Это зависит от операционной системы. Любой абсолютный путь начинается с корневого каталога. В Unix-подобных ОС он записывается в виде слеша (/), а в Windows – в виде буквы диска и обратного слеша (например, С:\).

Вот пример абсолютного пути в Linux:

/home/user/documents/file.txt

А вот так выглядит абсолютный путь в Windows:

C:\Users\User\Documents\file.txt

И тот, и другой путь начинается с диска или корневого каталога и ведет к файлу под названием file.txt. Но при этом каждая ОС использует свой собственный способ указания пути.

Что такое относительный путь?

Относительный путь – это расположение файла или каталога относительно вашего текущего рабочего каталога. В отличие от абсолютного, относительный путь не начинается со слеша или буквы диска, так как он не начинается с корневого каталога. 

Относительные пути упрощают работу с файлами, минимизируя количество вводимого текста для указания пути к файлу или каталогу. Относительный путь используется в тех случаях, когда вы ссылаетесь на файл или каталог только по его имени. Это самая простая форма относительного пути. В данном случае оболочка будет искать файл с указанным именем в текущем каталоге.

Относительные пути способны адаптироваться к изменениям в текущем рабочем каталоге, что делает из удобными для написания сценариев, разработки и управления файлами в пределах ограниченной области.

Этот путь также может принимать точки входа. Таким образом, пользователи могут указывать относительные пути к файлам, которые расположены ближе к корневому каталогу. Например, 

  • Символ .. говорит о том, что файл расположен в родительском каталоге
  • Символ . говорит о том, что файл расположен в текущем каталоге

Для всех остальных файлов, которые расположены еще ближе к корневому каталогу, уже нужно использовать абсолютный путь.

Пример относительного пути

Относительный путь записывается по-разному в зависимости от ОС. Например, в Linux для разделения каталогов используется слеш (/), а в Windows – обратный слеш (\).

Linux

Если ваш текущий рабочий каталог – это /home/user/documents, и вы хотите обратиться к файлу с именем file.txt, который находится в этом каталоге, относительный путь будет выглядеть вот так:

file.txt

Система будет искать указанный файл в текущем рабочем каталоге.

Аналогично, чтобы обратиться к файлу с именем report.txt, который расположен в подкаталоге report текущего каталога, нужно записать следующий относительный путь:

./reports/report.txt

Путь указывает ОС, что искать файл report.txt нужно в каталоге report текущего рабочего каталога.

Windows

Если в данный момент вы находитесь в каталоге C:\Users\John\Documents и хотите обратиться к файлу с именем document.txt, который расположен в текущем каталоге, то запишите следующий относительный путь:

.\document.txt

Этот путь указывает Windows, что искать файл document.txt необходимо в текущем рабочем каталоге, то есть C:\Users\John\Documents. Символ точки (.) обозначает текущий каталог. 

Если вы хотите обратиться к файлу invoice.pdf, который расположен в подкаталоге invoices текущего каталога, относительный путь будет выглядеть вот так:

.\invoices\invoice.pdf

Путь указывает системе, что искать файл invoice.pdf необходимо в каталоге invoices текущего рабочего каталога. Здесь символ обратного слеша (\) разделяет каталоги.

Абсолютные и относительные пути в Windows

Если речь идет о Windows, здесь для разделения каталогов в абсолютных и относительных путях используется обратный слеш (\). Абсолютный путь здесь начинается с буквы диска, двоеточий и обратного слеша (например, С:\).

Как найти абсолютный путь в Windows

Существует несколько способов, как можно найти абсолютный путь к файлу или каталогу в Windows. Самые популярные способы перечислены ниже.

Проводник (File Explorer)

1. Нажмите клавишу Windows и введите «Проводник». Откройте приложение, нажав Enter.

Opening the file explorer in Windows.

2. Перейдите туда, где расположен файл или каталог, абсолютный путь которого вы хотите найти.

3. После того, как вы окажетесь там, нажмите на адресную строку. Здесь отображается полный путь к текущему местоположению. Это и есть абсолютный путь:

Getting the absolute path in Windows explorer.

4. Или вы можете щелкнуть правой кнопкой мыши на файл, для которого хотите найти абсолютный путь, и выбрать «Свойства» (Properties).

Obtaining a file's properties to see its absolute path in Windows.

Окно свойств содержит расположение файла, то есть его абсолютный путь:

Командная строка (Command prompt)

1. Нажмите клавишу Windows и введите «Командная строка». Откройте приложение, нажав Enter.

Opening the command prompt.

2. Воспользуйтесь командой cd, чтобы перейти к каталогу, где содержится файл или каталог, для которого вы хотите найти абсолютный путь. 

3. После того, как вы окажетесь там, запустите команду cd без аргументов. Отобразится абсолютный путь текущего каталога:

cd

Getting the absolute path using the Command Prompt.

PowerShell

1. Нажмите клавишу Windows и введите «PowerShell». Откройте приложение, нажав Enter.

Opening Windows PowerShell.

2. Воспользуйтесь командой cd (Change-Location), чтобы перейти к каталогу, где содержится файл или каталог.

3. После того, как вы окажетесь в нужном каталоге, запустите командлет Get-Location, чтобы отобразить абсолютный путь текущего каталога.

Getting the absolute path using Windows PowerShell.

Абсолютные и относительные пути в Linux

Если речь идет о Linux, то здесь для разделения каталогов в абсолютных и относительных путях используются слеши (/). Любой абсолютный путь здесь начинается с корневого каталога (/). 

Ниже приведены инструкции, как найти абсолютный путь в Linux.

Как найти абсолютный путь в Linux

Существует несколько способов, как можно найти абсолютный путь к файлу или каталогу в Linux. Ниже приведены самые популярные.

Команда pwd

1. Откройте терминал, нажав Ctrl+Alt+T.

2. Воспользуйтесь командой cd, чтобы перейти в каталог, где содержится файл или каталог, для которого вы хотите найти абсолютный путь.

3. Запустите команду pwd (print working directory). Отобразится абсолютный путь текущего каталога. 

pwd

Printing the working directory in Linux.

Команда realpath

1. Откройте терминал.

2. Воспользуйтесь следующим синтаксисом, чтобы определить абсолютный путь к файлу или каталогу, пусть даже это символическая ссылка или относительный путь:

realpath [/path/to/file]

Например, 

Resolving a relative path in Linux.

Графический пользовательский интерфейс

Чтобы найти абсолютный путь файла в Linux вам понадобиться Проводник.

1. Найдите в Файлах (Files) тот файл, абсолютный путь которого вы хотите найти.

2. Щелкните по нему правой кнопкой мыши и выберите «Свойства» (Properties).

Viewing file properties in Linux GUI.

3. В окне свойств найдите строку «Корневая папка» (Parent folder), где и указан абсолютный путь к родительскому каталогу файла.

Obtaining a file's absolute path using GUI in Linux.

Как создать относительный путь?

Путь файла также можно использовать для обращения к внешним файлам, например, веб-страницам, изображениям, таблицам стилей и т.д. Такие пути описывают расположение файла в структуре папок веб-сайта.

Абсолютные пути к файлам (полный URL-адрес) используют теги HTML, например, <a> и <img>, и это логично, так как он указывает на URL-адрес файла в Интернете. А вот относительные пути указывают на файл относительно текущей страницы. Относительные пути начинаются с ./. Далее следует путь к локальному файлу.

Чтобы создать ссылку на файл в Интернете с помощью относительного пути, выполните следующее:

Шаг 1. Убедитесь, что файл, на который вы хотите создать ссылку, и HTML-файл, с которым вы работаете, находятся на одном сервере. Неважно, разрабатываете ли вы веб-сайт онлайн или локально, файл, на который вы хотите создать ссылку, должен быть доступен.

Шаг 2. Чтобы создать относительный путь, путь к файлу должен быть записан относительно каталога, где расположен HTML-файл, с которым вы работаете. Представим, что вы хотите создать ссылку на файл с именем example.jpg, который располагается на текущей странице, а ваш локальный HTML-файл находится в каталоге web-development.

Шаг 3. Если относительно вашего HTML-файла файл example.jpg находится в подкаталоге images, то используйте символ ../, чтобы переместиться на один уровень каталога вверх. А затем укажите каталог images. В результате получится вот такой относительный путь:

<a href="../images/example.jpg"><img src="../images/example.jpg"></a>

В данном примере символ ../ указывает на переход на один уровень каталога вверх и последующее обращение к каталогу images с целью получить доступ к нужному файлу.

Добавив относительный путь в HTML, вы можете получить доступ к указанному файлу напрямую без необходимости указывать абсолютный путь, который включает все каталоги, ведущие к файлу. Преимущество использования относительных путей в HTML заключается в том, что вы можете без каких-либо проблем изменять имена доменов. Кроме того, вы можете спокойно перемещать каталоги, так как это никак не повлияет на относительный путь.

Заключение

В этой статье мы выяснили, чем отличается абсолютный путь от относительного, а также продемонстрировали, как можно найти абсолютный путь к файлу или каталогу в Linux и Windows с помощью графического пользовательского интерфейса или командной строки. Кроме того, мы рассмотрели, как можно создать относительный путь, ведущий к URL-адресу файла в Интернете. 

Пути файлов – и абсолютные, и относительные, нужны для управления файлами, перемещения между ними и обращения к ним посредством сценариев. Они используются в самых различных ситуациях для эффективного взаимодействия и организации файлов и каталогов.

Методические указания¶

В рамках лабораторной работы необходимо реализовать обработку строковой
информации в соответствии с заданием. В качестве обрабатываемых данных
рассматриваются пути к файлам в операционных системах Windows и GNU/Linux.

Путь (англ. path) – набор символов, описывающий расположение файла в файловой
системе. В UNIX-подобных операционных системах разделительным знаком при записи
пути является символ «/» (слэш), в ОС Windows – символ «» (обратный слэш).

Файловые пути в ОС Windows¶

Полное имя файла в Windows-системах состоит из буквы диска, после которого
ставится двоеточие и обратная наклонная черта (обратный слеш), затем через
обратные слеши перечисляются подкаталоги, в конце пишется имя файла. Например:

C:\Windows\System32\calc.exe

Полное имя файла (включая расширение) в ОС Windows может содержать до 260
символов
, данное значение определено константой MAX_PATH.

Пути, не имеющие в начале буквы диска и двоеточия, считаются относительными и
отсчитываются относительно рабочего каталога. Например, если текущим является
каталог C:\Windows, то относительный путь System32\calc.exe
соответствует абсолютному пути C:\Windows\System32\calc.exe.

Граф структуры файлов ОС Windows представляет собой лес деревьев, корнями
каждого из которых являются дисковые разделы:

../_images/win_paths.png

Для описания пути к файлам, расположенным на удаленных узлах вычислительной
сети используется стандарт UNC (Universal Naming Convention). Описание
файлового пути в формате UNC имеет следующий формат:

\\<Имя или IP адрес узла>\<Путь к ресурсу на указанном узле>

Например:

\\192.168.1.2\Share\file.txt
\\windows-machine.com\Share\file.txt

IP адрес представляет собой набор из четырех целых чисел, разделенных точкой:

\[IP = x_1.x_2.x_3.x_4\]

где \(0 ≤ x_i ≤ 255\), например: 192.168.1.1, 93.158.134.3, 173.194.47.164,
91.196.245.216.

Имя узла представляет собой
доменное имя, которое состоит из
непосредственного имени узла и далее имён всех доменов, в которые он входит,
разделённых точками. Например, полное имя rus.wikipedia.org обозначает узел
с именем rus, который входит в домен второго уровня .wikipedia, который
входит в домен первого уровня .org.

В рамках данной лабораторной работы будем считать, что существует только три
домена верхнего уровня: ru, com и org. Также в имени домена могут
присутствовать только латинские буквы.

Примечание

Символ «обратный слэш» – «» является служебным в языке Си и выполняет
функции экранирования. С помощью него записываются спецсимволы, например
\n, \t и т.п. Для использования данного символа в обычном контексте
его также нужно экранировать: \\. Таким образом для того, чтобы в языке Си
записать константную строку, содержащую путь C:\Windows\System32\calc.exe,
требуется заменить каждый обратный слэш на двойной:

char str[] = "C:\\Windows\\System32\\calc.exe";

Файловые пути в UNIX-подобных ОС¶

В UNIX-подобных операционных системах (например, GNU/Linux) полный путь состоит
из слеша («/»), обозначающего корневой каталог, после которого идет
перечисление каталогов и подкаталогов, разделенных также символом «/», в конце
указывается имя файла. Например:

Пути, начинающиеся не с символа «/», считаются относительными и отсчитываются
относительно рабочего каталога. Пусть текущий каталог – /home/alex/video,
тогда относительный путь prog/c_manual.avi соответствует абсолютному пути
/home/alex/video/prog/c_manual.avi.

Особое значение имеют пути, которые начинаются со знака тильда («~»). Тильда
обозначает домашнюю директорию текущего или указанного пользователя.

Если после знака тильда («~») следует слэш («/»), то речь идет о пути
относительно домашнего каталога текущего пользователя:

Пусть текущий пользователь – iv622s01
Домашний каталог пользователя iv622s01/home/STUDENTS/iv421s01/.
Тогда путь ~/video/prog/c_manual.avi соответствует абсолютному пути:
/home/STUDENTS/iv421s01/video/prog/c_manual.avi.

Если после знака тильда («~») следуют любой другой символ, то подстрока,
содержащая символы, расположенные между знаком «~» и первым знаком «/»
рассматриваются как имя пользователя в данной ОС, а подстрока, расположенная
справа от первого знака «/» трактуется как путь относительно домашнего каталога
этого пользователя ОС. При этом текущий пользователь значения не имеет.

Пусть текущий пользователь – iv421s01. Домашние каталоги пользователей
находятся в /home/STUDENTS/. Тогда путь
~is441s15/video/prog/c_manual.avi соответствует абсолютному пути:
/home/STUDENTS/is441s15/video/prog/c_manual.avi

Граф структуры файлов ОС GNU/Linux представляет собой единое дерево, корнем
которого является один из доступных дисковых разделов. Остальные разделы
монтируются (присоединяются) к основному дереву ниже первого уровня иерархии:

../_images/linux_paths.png

Для описания пути к файлам, расположенным на удаленных узлах вычислительной
сети используется два варианта записи (в зависимости от используемой
программы). Формат записи, применяемый в таких программах, как scp, rcp, rsync,
выглядит следующим образом:

<Имя или IP адрес узла>:<Путь к ресурсу на указанном узле>

Например:

192.168.1.2:/Share/file.txt
linux-machine.com:/Share/file.txt

Также распространено использование формата URL (Universal Resource Location),
синтаксис которого выглядит следующим образом:

<протокол>://<Имя или IP адрес узла>[:<порт>]/<Путь к ресурсу на узле>

Где протокол – строка, порт – целое число в диапазоне [0, 65535] Например:

http://192.168.1.2:8080/Share/file.txt
smb://linux-machine.com/Share/file.txt
smb://ya.ru:80/Share/file.txt

Примечание

В рамках данной лабораторной работы будем рассматривать следующие протоколы:
http, ftp, rsync, smb. Использование любых других протоколов недопустимо и
считается ошибкой.

Обозначение текущего и родительского каталогов¶

В операционных системах Windows и GNU/Linux существуют специальные обозначения
для текущего каталога (строка «.») и каталога, который является родительским
для текущего (строка «..»).

Пусть текущий каталог – /home/alex/video,
тогда относительный путь ./prog/c_manual.avi
соответствует абсолютному пути /home/alex/video/prog/c_manual.avi,
а относительный путь ../projects/lab1/lab1.c
соответствует абсолютному пути /home/alex/projects/lab1/lab1.c.

Абсолютному пути /home/alex/video/./prog/c_manual.avi
соответствует минимальный путь /home/alex/video/prog/c_manual.avi

Абсолютному пути /home/alex/video/../projects/lab1/lab1.c
соответствует минимальный путь: /home/alex/projects/lab1/lab1.c.

Преобразование путей ОС Windows в пути ОС GNU/Linux в эмуляторе Cygwin¶

Эмулятор Linux-окружения Сygwin (http://www.cygwin.com/ ) предоставляет
пользователю возможность работы в Linux-подобной среде из операционной системы
Windows. В связи с различиями между графами файловых структур в ОС GNU/Linux и
Windows для доступа к файлам ОС Windows из Linux-окружения выполняется
преобразование их путей. Преобразование леса деревьев к дереву заключается в
подключении (монтировании) его корней к заранее определенному каталогу
/cygdrive. Таким образом, путь C:\somedir\somefile
транслируется в /cygdrive/c/somedir/somefile.

../_images/cygwin_paths.png

Запрещенные символы¶

Многие операционные системы запрещают использование некоторых служебных символов.
Запрещенные символы Windows:

Символ Описание
\ разделитель подкаталогов
/ ключи командного интерпретатора
: отделяет букву диска в Windows-путях
* заменяющий символ (маска «любое количество любых символов»)
? заменяющий символ (маска «один любой символ»)
« используется для указания путей, содержащих пробелы
< обозначение перенаправления ввода
> обозначение перенаправления вывода
| обозначение программного конвейера

В UNIX и UNIX-подобных ОС запрещен слеш («/») – разделитель подкаталогов – и
символ конца строки (\0). Остальные перечисленные выше символы (кроме слеша)
использовать можно, но из соображений совместимости их лучше избегать.

Примечание

В рамках данной лабораторной работы выдвигается требование совместимости
файловых путей в ОС Windows и GNU/Linux. Поэтому использование запрещенных
символов не допускается ни в Windows-путях ни в Linux-путях. Длина пути
также не должна превышать ограничение, установленное в ОС Windows
(MAX_PATH = 260 символов).

Задание¶

Общая информация¶

Номер варианта выбирается в соответствии с номером студента в журнале по
формуле \((i – 1) \% n + 1\), где \(i\) – номер студента по журналу,
\(n\) – количество заданий.

При разработке подпрограмм в соответствии с заданием следует учитывать, что:

  1. Исходная задача должна быть разбита на четыре основные подзадачи:

    1. ввод данных – функция input() – предусматривает взаимодействие с
      пользователем и возвращает строку, содержащую входные данные (путь);
    2. проверка корректности данных – check() – которая обеспечивает
      проверку допустимости длины входной строки и используемых в ней символов.
      Значения, возвращаемые функцией check(), должны позволять определить тип
      ошибки и (если возможно) номер символа, в которой она обнаружена;
    3. обработка – process() – входных данных согласно заданию;
    4. вывод данных – output() – на экран, обеспечивает отображение
      полученных результатов или сообщений об ошибке.

    Взаимодействие между указанными функциями осуществляется через данные.
    Каждая из них, при необходимости, также разбивается на подзадачи. Разбиение
    производится до тех пор, пока подзадачи не становятся тривиальными,
    например, вычисление длины строки.

  2. Каждая подзадача оформляется в виде функции.

  3. Не допускается использования стандартных функций обработки строк. Все
    операции над строками должны быть реализованы самостоятельно в виде
    отдельных подпрограмм. Эти подпрограммы необходимо разместить в отдельном
    файле strings.c, а прототипы функций – в файле strings.h.

    Примерами типичных функций, которые должны присутствовать в каждой программе
    являются:

    1. функция вычисления длины строки (slen);
    2. функция разбиения строки на элементы-токены (stok), разделенные
      заданным символом (например, символ “/” при анализе пути или символ “.”,
      при разборе IP-адресов или доменных имен);
    3. функция проверки символа на принадлежность заданному множеству символов
      (sspn), необходимая для проверки допустимости используемых символов.
    4. функция сравнения строк (scmp);
    5. функция копирования строк (scpy).

Набор тестов должен обеспечивать проверку поведения программы для всех классов
входных данных:

  1. некорректный файловый путь;
  2. превышение допустимой длины пути;
  3. допустимый путь, который не удовлетворяет указанным в задании условиям;
  4. допустимый путь, удовлетворяющий условиям.

Для определения типа ОС для абсолютного пути необходимо проверить
следующие характеристики:

ОС Характеристики пути
Linux Путь не содержит ни одного Windows-разделителя (“’).
Windows
  1. Путь не содержит ни одного Linux-разделителя („/“).
  2. В начале пути располагается имя раздела, которое может состоять из
    одной („A“, „C“, „d“) или двух („AA“, „Bd“, „zz“) букв латинского
    алфавита в произвольном регистре.
  3. Имя раздела отделяется от списка директорий при помощи двоеточия,
    после которого следует знак «».

Требования к IP-адресам и доменным именам:

Адресация узла  
IP-адрес

Строка, содержащая четыре десятичных числа, разделенных
точками, каждое из которых не превышает 255. Например:

Корректные значения: «10.125.200.4», «192.168.0.1»

Некорректные значения: «10.125.200», «400.168.0.1», «x.125.200.4»

Доменное имя

Доменное имя содержит набор имен доменов, разделенных
точками. В рамках данной лабораторной работы действуют
следующие ограничения:

  1. Имя домена состоит только из латинских символов.

  2. Доменами верхнего уровня (самый правый) может быть только
    ru, com, org.

  3. глубина вложенности не должна быть больше четырех.

    Корректные значения: «my.ya.ru», «csc.sibsutis.ru»

    Некорректные значения: «10.ya.ru», «my.ya.eu»,

    «a.b.c.d.e» (глубина вложенности – 5).

Задание для факультета ИВТ¶

Входными данными для всех подпрограмм является строка, содержащая пути к
файлам, разделенные указанным видом разделителей (может быть пробел, двоеточие,
«+»). На вход могут также поступать дополнительные данные, определяемые
вариантом задания.

Вариант 1¶

Файлы, расположенные в каталоге dir1 были перемещены в каталог dir2.
Для заданных с клавиатуры dir1 и dir2 обновить список входных файловых
путей. dir1 и dir2 должны относиться к одной и той же ОС.

Вход:

delim: +
paths: C:\Windows\system32+C:\User\test+C:\Windows\explorer.exe+D:\Windows\Distrib
dir1: C:\Windows
dir2: E:\WindowsXP

Выход:

new paths: E:\WindowsXP\system32+C:\User\test+E:\WindowsXP\explorer.exe+D:\Windows\Distrib

Вариант 2¶

Для заданного имени текущего пользователя обновить список входных файлов,
преобразовав пути, заданные относительно его домашнего каталога (вида
~/somedir), к абсолютным путям. Имя каталога (dir), в котором находятся
домашние каталоги пользователей, вводится с клавиатуры.

Вход:

delim: +
user name: jack
dir: /home/stud
paths: ~/games/packman.cpp+~alex/docs+~/study/Prog/lab4.c+/usr/bin/gcc

Выход:

new paths: /home/stud/games/packman.cpp+~alex/docs+/home/stud/study/Prog/lab4.c +/usr/bin/gcc

Вариант 3¶

Преобразовать все пути входного списка, заданные относительно домашних
каталогов указанных пользователей (вида ~alex/somedir), к абсолютным путям.
Имя каталога (dir), в котором находятся домашние каталоги пользователей,
вводится с клавиатуры.

Вход:

delim: +
dir: /home/stud
paths: ~/games/packman.cpp+~alex/docs+~/study/Prog/lab4.c+/usr/bin/gcc

Выход:

new paths: ~/games/packman.cpp+/home/stud/alex/docs+~/study/Prog/lab4.c +/usr/bin/gcc

Вариант 4¶

Преобразовать все пути, содержащие служебные каталоги: текущий каталог («.») и
родительский каталог («..»); к минимально возможным путям.

Вход:

delim: +
paths: /home/alex/video/../progs/./test.c+~alex/docs+~/study/Prog/lab4.c+/usr/bin/gcc

Выход:

new paths: /home/alex/progs/test.c+~alex/docs+~/study/Prog/lab4.c+/usr/bin/gcc

Вариант 5¶

Преобразовать все Windows пути во входном списке к Linux-путям, используя формат
эмулятора Cygwin.

Вход:

delim: +
paths: C:\Windows\system32+E:\Distrib\msoffice.exe+/home/alex/prog/lab4.c

Выход:

new paths: /cygdrive/c/Windows/system32+/cygdrive/e/Distrib/msoffice.exe+/home/alex/prog/lab4.c

Вариант 6¶

Преобразовать все Windows-пути формата Cygwin к оригинальным Windows-путям.

Вход:

delim: +
paths: cygdrive/c/Windows/system32+/cygdrive/e/Distrib/msoffice.exe+/home/alex/prog/lab4.c

Выход:

new paths: C:\Windows\system32+E:\Distrib\msoffice.exe+/home/alex/prog/lab4.c

Вариант 7¶

На сетевых узлах была выполнена замена ОС Windows на ОС GNU/Linux. Сетевые
ресурсы (файлы) были перенесены без изменения иерархии. В ОС GNU/Linux доступ к файлам
осуществляется с помощью программы scp. Обновить все сетевые пути входного списка.
Необходимо проверять допустимость всех IP-адресов, доменных имен и протоколов в списке
путей. Некорректные пути исключать из списка.

Вход:

delim: +
paths: \\192.168.1.1\test+\\mysrv.com\Windows\system32+\\192.500.1.1\test+\\my.fr\m\n\k.txt

Выход:

new paths: 192.168.1.1:/test+mysrv.com:/Windows/system32

Вариант 8¶

На сетевых узлах была выполнена замена ОС Windows на ОС GNU/Linux. Файлы были
перенесены без изменения иерархии. В ОС GNU/Linux доступ к файлам будет осуществляться по
протоколу http (формат пути – URL). Обновить все сетевые пути входного списка. Необходимо
проверять допустимость всех IP-адресов, доменных имен и протоколов в списке путей.

Вход:

delim: +
paths: \\192.168.1.1\test+\\mysrv.com\Windows\system32+\\192.500.1.1\test+\\my.fr\m\n\k.txt

Выход:

new paths: http://192.168.1.1/test+http://mysrv.com/Windows/system32

Вариант 9¶

Файлы из входного списка, расположенные на сетевом узле, работающем под
управлением ОС GNU/Linux, были перенесены на новый узел под управлением ОС Windows.
Иерархия каталогов не изменялась. Доступ к файлам осуществлялся по протоколам smb и http
(формат пути – URL). По заданным именам или IP адресам исходного и нового узлов обновить
входной список файлов. Необходимо проверять допустимость всех IP-адресов, доменных имен и
протоколов в списке путей.

Вход:

delim: +
paths: smb://192.168.1.1/test+http://mysrv.com/Windows/+http://192.500.1.1/test+ftp://my.ru/m/n/k.txt

Выход:

new paths: \\192.168.1.1\test+\\mysrv.com\Windows\

Вариант 10¶

Файлы из входного списка, расположенные на сетевом узле, работающем под
управлением ОС GNU/Linux, были перенесены на новый узел под управлением ОС Windows.
Иерархия каталогов не изменялась. Доступ к файлам осуществлялся с помощью программы scp.
По заданным именам или IP адресам исходного и нового узлов обновить входной список файлов.
Необходимо проверять допустимость всех IP-адресов, доменных имен и протоколов в списке
путей.

Вход:

delim: +
paths: 192.168.1.1:/test+mysrv.com:/Windows/+ 192.500.1.1:/test+my.fr:/m/n/k.txt

Выход:

new paths: \\192.168.1.1\test+\\mysrv.com\Windows\

Задание для факультета МРМ¶

Входными данными для всех подпрограмм является путь к одному
файлу.

Вариант 1¶

На вход программы поступает строка, соответствующая абсолютному пути. Для заданной
строки выполнить следующие операции:

  1. определить тип ОС, использующей данный путь;
  2. найти глубину (depth) вложенности конечного файла в структуру каталогов (количество
    каталогов, начиная с корневого, которое необходимо пройти, чтобы получить доступ к файлу);
  3. вывести имя каталога(каталогов), имеющее наибольшую длину.

Вход:

/home/qwert/sandbox/openmpi/1.6.5/lib/OpenMPI/mca_btl_tcp.so

Выход:

OS: Linux
Depth: 8
Max dir name: sandbox, openmpi, OpenMPI

Вход:

CA:\home\qwert\sandbox\openmpi\1.6.5\lib\OpenMPI\mca_btl_tcp.so

Выход:

OS: Windows
Depth: 8
Max dir name: sandbox, openmpi, OpenMPI

Замечание: для решения задачи пункта (3) используйте дополнительный массив для хранения
индексов каталогов, длина которых соответствует текущему максимуму. При обнаружении
нового максимума ранее сохраненные индексы должны отбрасываться.

Вариант 2¶

На вход программы поступает строка, соответствующая абсолютному пути. Для заданной
строки выполнить следующие операции:

  1. определить тип ОС, использующей данный путь;
  2. найти количество символов в имени конечного файла (длина файла без учета каталогов)
    и распечатать его имя;
  3. определить, присутствуют ли во входном пути директории, имена которых состоят
    только из цифр, если да – заменить имя такого каталога на число, которое на единицу превышает
    числовое представление имени каталога.

Вход:

/home/qwert/9/openmpi/165/lib/OpenMPI/mca_btl_tcp.so

Выход:

OS: Linux
file name: mca_btl_tcp.so
file name length: 14
updated path: /home/qwert/10/openmpi/166/lib/OpenMPI/mca_btl_tcp.so

Вход:

CA:\home\qwert\9\openmpi\165\lib\OpenMPI\mca_btl_tcp.so

Выход:

OS: Windows
file name: mca_btl_tcp.so
file name length: 14
updated path: CA:\home\qwert\10\openmpi\166\lib\OpenMPI\mca_btl_tcp.so

Вариант 3¶

На вход программы поступает строка, соответствующая абсолютному пути. Для заданной
строки выполнить следующие операции:

  1. определить тип ОС, использующей данный путь;
  2. преобразовать все символы в имени конечного файла (без учета каталогов) к верхнему
    регистру;
  3. расположить имена каталогов в пути в обратном порядке.

Вход:

/home/openmpi/1.6.5/lib/OpenMPI/mca_btl_tcp.so

Выход:

OS: Linux
updated path: /OpenMPI/lib/1.6.5/openmpi/home/MCA_BTL_TCP.SO

Вход:

CA:\home\openmpi\1.6.5\lib\OpenMPI\mca_btl_tcp.so

Выход:

OS: Windows
updated path: CA:\OpenMPI\lib\1.6.5\openmpi\home\MCA_BTL_TCP.SO

Вариант 4¶

На вход программы поступает строка, соответствующая абсолютному пути и произвольная
последовательность символов. Для заданной строки выполнить следующие операции:

  1. определить тип ОС, использующей данный путь;
  2. преобразовать все символы в имени каталога, содержащего конечный файл, к нижнему
    регистру;
  3. исключить из пути (после преобразования (б)) все директории, в имя которых входит
    заданная последовательность символов.

Вход:

path: /home/testmpi/1.6.5/lib/OpenMPI/mca_btl_tcp.so
sequence: mpi

Выход:

OS: Linux
Update#1: /home/testmpi/1.6.5/lib/openmpi/mca_btl_tcp.so
Update#2: /home/1.6.5/lib/mca_btl_tcp.so

Вход:

path: CA:\home\testmpi\1.6.5\lib\OpenMPI\mca_btl_tcp.so
sequence: mpi

Выход:

OS: Windows
Update#1: CA:\home\testmpi\1.6.5\lib\openmpi\mca_btl_tcp.so
Update#2: CA:\home\1.6.5\lib\mca_btl_tcp.so

Вариант 5¶

На вход программы поступает строка. Для заданной строки выполнить следующие
операции:

  1. определить, соответствует ли заданная строка сетевому пути формата UNC
    (используемому в ОС Windows), в котором для указания имени узла используется IP-адрес.
    Необходимо также проверить допустимость IP-адреса.
  2. если расширение файла «.exe» заменить его на «.bin».

Вход:

path: \\192.168.10.2\home\openmpi\mpicc.exe

Выход:

Is UNC: yes
IP is correct: yes
Updated path: \\192.168.10.2\home\openmpi\mpicc.bin

Вход:

path: \\192.168.10.2\home\openmpi\mpicc.txt

Выход:

Is UNC: yes
IP is correct: yes
Updated path: \\192.168.10.2\home\openmpi\mpicc.txt

Вход:

path: \\192.168.10.300\home\openmpi\mpicc.exe

Выход:

Is UNC: yes
IP is correct: no

Вход:

path: 192.168.10.2:/home/openmpi/mpicc.exe

Выход:

Вариант 6¶

На вход программы поступает строка. Для заданной строки выполнить следующие
операции:

  1. определить, соответствует ли заданная строка сетевому пути формата UNC
    (используемому в ОС Windows), в котором для указания имени узла используется доменное имя.
    Необходимо также проверить допустимость доменного имени.
  2. если расширение файла «.exe» заменить его на «.bin».

Вход:

path: \\my.test.ru\home\openmpi\mpicc.exe

Выход:

Is UNC: yes
Domain name is correct: yes
Updated path: \\ my.test.ru\home\openmpi\mpicc.bin

Вход:

path: \\ my.test.ru\home\openmpi\mpicc.txt

Выход:

Is UNC: yes
Domain name is correct: yes
Updated path: \\my.test.ru\home\openmpi\mpicc.txt

Вход:

path: \\a.b.c.d.e\home\openmpi\mpicc.exe

Выход:

Is UNC: yes
Domain name is correct: no

Вход:

path: \\a.b.c.eu\home\openmpi\mpicc.exe

Выход:

Is UNC: yes
Domain name is correct: no

Вариант 7¶

На вход программы поступает строка. Для заданной строки выполнить следующие
операции:

  1. определить, соответствует ли заданная строка сетевому пути, используемому в утилитах
    SCP, RSYNC и т.д. (ОС Linux), в котором для указания имени узла используется IP-адрес.
    Необходимо также проверить допустимость IP-адреса.
  2. привести все имена каталогов и файлов в пути к нижнему регистру.

Вход:

path: 192.168.10.2:home/OpenMPI/MPicc.exe

Выход:

Is SCP: yes
IP is correct: yes
Updated path: 192.168.10.2:home/openmpi/mpicc.exe

Вход:

path: 192.168.10.300:home/OpenMPI/MPicc.exe

Выход:

Is SCP: yes
IP is correct: no

Вход:

path: \\192.168.10.2\home\openmpi\mpicc.exe

Выход:

Вариант 8¶

На вход программы поступает строка. Для заданной строки выполнить следующие
операции:

  1. определить, соответствует ли заданная строка сетевому пути, используемому в утилитах
    SCP, RSYNC и т.д. (ОС Linux), в котором для указания имени узла используется доменное имя.
    Необходимо также проверить допустимость доменного имени.
  2. привести все имена каталогов и файлов в пути к нижнему регистру.

Вход:

path: my.test.ru:home/OpenMPI/MPicc.exe

Выход:

Is SCP: yes
Domain name is correct: yes
Updated path: my.test.ru:home/openmpi/mpicc.exe

Вход:

path: a.b.c.d.e:home/OpenMPI/MPicc.exe

Выход:

Is SCP: yes
Domain name is correct: no

Вход:

path: 192.168.2.2:home/OpenMPI/MPicc.exe

Выход:

Вариант 9¶

На вход программы поступает строка, содержащая файловый путь, а также два символа.
Выполнить следующие операции:

  1. определить, соответствует ли заданная строка сетевому пути формата URL (ОС Linux), в
    котором для указания имени узла используется IP-адрес. Необходимо также проверить
    допустимость IP-адреса.
  2. Заменить все вхождения первого символа в именах каталогов на второй.

Вход:

path: http://192.168.10.2/home/Open-MPI/MPicc-test.exe
symbol1: -
symbol2: _

Выход:

Is URL: yes
IP is correct: yes
Updated path: http://192.168.10.2/home/Open_MPI/MPicc_test.exe

Вход:

path: http://192.168.10.300/home/Open-MPI/MPicc-test.exe

Выход:

Is URL: yes
IP is correct: no

Вход:

path: \\192.168.10.2\home\openmpi\mpicc.exe

Выход:

Вариант 10¶

На вход программы поступает строка, содержащая файловый путь, а также два символа.
Выполнить следующие операции:

  1. определить, соответствует ли заданная строка сетевому пути формата URL (ОС Linux), в
    котором для указания имени узла используется IP-адрес. Необходимо также проверить
    допустимость IP-адреса.
  2. Заменить все вхождения первого символа в именах каталогов на второй.

Вход:

path: http://my.ya.ru/home/Open-MPI/MPicc-test.exe
symbol1: -
symbol2: _

Выход:

Is URL: yes
Domain name is correct: yes
Updated path: http://my.ya.ru/home/Open_MPI/MPicc_test.exe

Вход:

path: http://10.ya.ru/home/Open-MPI/MPicc-test.exe

Выход:

Is URL: yes
Domain name is correct: no

Вход:

path: \\192.168.10.2\home\openmpi\mpicc.exe

Выход:

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Где найти папку со шрифтами в windows 10
  • Как убрать рекламу на ноутбуке windows 10
  • Ar3011 bluetooth driver windows 11
  • Convert utf8 to windows 1251 oracle
  • Не запускается league of legends на windows 10