Как в пути к файлу обозначается родительский каталог

Обновлено: 07.07.2024

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

Если компонент пути является именем файла, он должен быть последним компонентом.

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

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

Для функций Windows API, которые управляют файлами, имена файлов часто могут быть относительно текущего каталога, в то время как некоторые API требуют полного пути. Имя файла относится к текущему каталогу, если оно не начинается со следующего:

  • UNC-имя любого формата, которое всегда начинается с двух символов обратной косой черты ("\\").
  • Обозначение диска с обратной косой чертой, например " C:\"или" d:\".
  • Одну обратную косую черту, например, "каталог \" или "\file.txt" Это также называется абсолютным путем.
  • "C: tmp.txt " относится к файлу с именем "tmp.txt " в текущем каталоге на диске C.
  • "C:tempdir\tmp.txt " относится к файлу в подкаталоге к текущему каталогу на диске C.
  • "..\ tmp.txt " указывает на файл с именем tmp.txt, который расположен в родительском каталоге текущего каталога.
  • "..\..\ tmp.txt " указывает на файл, который расположен выше двух каталогов над текущим каталогом.
  • "..\ tempdir\tmp.txt " указывает файл с именем tmp.txt, который находится в каталоге с именем tempdir в том же каталоге текущего каталога.

Максимальное ограничение длины пути

В API-интерфейсе Windows (с некоторыми исключениями, которые будут обсуждаться в следующих параграфах), есть максимальная длина пути в max_path, которая определяется как 260 символов. Локальный путь структурирован в следующем порядке: буква диска, двоеточие, обратная косая черта, компоненты имени, разделенные обратной косой чертой, и завершающий нулевой символ. Например, максимальный путь на диск D "D:\some 256-символьный путь строку ", где " " представляет собой невидимый символ NULL для текущей кодовой странице системы. (Символы используются здесь для наглядности и не могут быть частью допустимой строки пути.)

Функции файлового ввода/вывода в Windows API конвертируют "/" в "\" в рамках преобразования имени в НТ-имя типа, за исключением случаев использования "\\?\" префикса.

В Windows API есть множество функций, которые также имеют версии в формате юникода, чтобы разрешить путь расширенной длины для максимальной общей длины пути 32 767 символов. Этот тип пути состоит из компонентов, разделенных обратными косыми чертами, каждый до значения, возвращаемого в параметре Lpmaximumcomponentlength функции GetVolumeInformation (это значение обычно составляет 255 символов). Чтобы указать путь расширенной длины, используйте"\\?\" префикс. Например?\\" ?\D:\очень_длинный_путь".

Обратите внимание, что максимальный путь 32 767 символов является приблизительным, потому что"\\?\ "префикс может быть расширен до более длинной строки системой во время выполнения, и это расширение применяется к общей длине.

Этот же префикс также можно использовать с путями, построенными в соответствии с универсальным соглашением об именовании (UNC). Чтобы указать такой путь с помощью UNC, используйте"\\? \UNC\". Например?\\" ,\UNC-путь\ \ сервер\общий_ресурс", где "сервер" - имя компьютера и " общий_ресурс " - имя общей папки. Эти префиксы не используются как часть самого пути. Они указывают, что путь должен быть передан системе с минимальным изменением, а это означает, что вы не можете использовать прямые косые черты для представления разделителей пути, или точку для представления текущего каталога, или двойные точки для представления родительского каталога. Так как вы не можете использовать "\\?\ "префикс с относительным путем, относительные пути всегда ограничены в общей сложности числом символов MAX_PATH.

Нет необходимости выполнять какие-либо действия для нормализации юникода в строках путь и имя файла для файла Windows функций API ввода-вывода, поскольку файловая система обрабатывает путь и имена файлов как последовательность значений типа wchar. Любые нормализации, необходимые для вашего приложения должны быть выполнены с учетом этого, внешнего на любые вызовы, связанные с файлом Windows функции API ввода-вывода.

При использовании API для создания каталога указанный путь не может быть таким длинным, что невозможно добавить Имя файла 8.3 (то есть имя каталога не может превышать MAX_PATH минус 12).

Оболочка и файловая система имеют различные требования. Можно создать путь с API Windows, который пользовательский интерфейс оболочки не в состоянии интерпретировать должным образом.

Начиная с Windows 10 версии 1607, ограничения MAX_PATH были удалены из общих Win32 файлов и каталогов функций. Тем не менее необходимо выбрать новое поведение. Рееста позволяет включить или отключить новое поведение длинного пути. Для включения длинных путей установить ключ реестра в

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

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

Эти функции управления каталогами, которые не будут иметь ограничения в max_path если вы включите длинные пути: CreateDirectoryW, CreateDirectoryExW GetCurrentDirectoryW RemoveDirectoryW SetCurrentDirectoryW.

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

Путь (Path)

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

Вы можете столкнуться с двумя написаниями пути: "pathname" и "path name". Все варианты написания пути (Path, pathname и path name) являются синонимами.

Системный путь и путь каталога

ArcGIS оперирует термином "путь каталога" или "путь ArcCatalog". Путь каталога – это путь, распознаваемый только ArcGIS. Например:

относится к классу пространственных объектов powerlines в наборе объектов EastValley файловой базы геоданных Infrastructure . Этот путь не является корректным системным путем с точки зрения операционной системы, поскольку Windows не распознает наборы и классы пространственных данных, расположенные внутри файловой базы геоданных. Само собой, ArcGIS работает с путями каталога.

Рабочая область и базовое имя

Пути каталога состоят из двух частей: рабочей области и базового имени, как показано ниже:

Местоположение

Местоположение (Location) является общим термином (см., например: "Укажите местоположение ваших данных" или "Введите местоположение ваших данных").

Прямые и обратные косые черты

В Windows обратная косая черта ( \ ) используется в качестве разделителя при указании пути. UNIX системы используют прямую косую черту ( / ). В ArcGIS не имеет значения, какая косая черта используется при указании пути. ArcGIS всегда будет правильно считывать путь, какой бы знак в нем не использовался.

Обратная косая черта при написании скрипта

Языки программирования, уходящие корнями в UNIX и язык C, такие как Python, рассматривают обратную косую черту ( \ ) в качестве управляющего символа. К примеру, \n соответствует возврату каретки. Поскольку пути могут содержать обратные косые черты, необходимо избегать их распознавания как знак перехода. Обычным делом является использование двойной обратной косой черты, например:

Другой вариант преобразования путей в строки Python с помощью директивы r показан ниже. Благодаря этому Python будет игнорировать обратные косые черты.

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

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

Абсолютный (или полный) путь начинается с буквы диска, за которой следует двоеточие, например, D: .

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

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

В приведенной ниже структуре папок, предположим, что вы воспользовались Проводником Windows для перехода в папку D:\Data\Shapefiles\Soils . После перехода в данный каталог относительный путь будет использовать директорию D:\Data\Shapefiles\Soils в качестве текущей (пока вы не перейдете в новый каталог и он не станет текущей директорией). Текущую директорию иногда называют корневой папкой.

Если вы хотите перейти к папке Landuse из текущей директории ( Soils ), вам нужно ввести следующий текст в адресную строку Проводника Windows:

Проводник Windows перейдет в папку D:\Data\Shapefiles\Landuse . Другие примеры использования папки D:\Data\Shapefiles\Landuse в качестве текущей представлены ниже:

Примечание:

Вы не сможете вводить относительные пути (с использованием точки и двойной точки) в приложениях ArcGIS.

Относительный путь не может распространяться на другие диски. К примеру, если ваша текущая папка находится на диске D , вы не можете использовать относительные пути для перехода к какой-либо директории на диске E .

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

При создании документа ArcMap (либо ArcScene, либо ArcGlobe) вы можете указать, что сохраняться будут относительные пути. Для установки этой опции выберите Файл (File) > Свойства документа карты (Map Document Properties) . Здесь вы можете указать, будете ли вы хранить абсолютные или относительные пути.

Установка относительных или абсолютных путей

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

и данными одного из слоев являются

то в Newmap.mxd записано следующее:

Когда вы снова открываете Newmap.mxd , ArcMap преобразует сохраненные относительные пути (с обозначением с помощью точки и двух точек) обратно в абсолютные, которые отображаются как источник данных слоя. Эта конвертация всегда зависит от местоположения документа карты (текущей директории).

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

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

Абсолютные и относительные пути в инструментах модели

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

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

Для сохранения относительных путей щелкните правой кнопкой мыши инструмент модели, выберите Свойства (Properties) , а затем перейдите на закладку Общие (General) . В нижней части диалогового окна включите опцию Сохранить относительные пути (Store relative path names (instead of absolute paths) , как показано ниже.

Относительные пути в инструментах модели

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

Относительные пути не могут менять диски. То есть в случае, если корневой каталог находится на диске D , вы не сможете использовать относительные пути для перехода к директории на диске E . Если вы сохраняете вашу модель с использованием относительных путей, преобразованы и сохранены будут только пути, относящиеся к одному и тому же диску.

Абсолютные и относительные пути в инструментах-скриптах

При использовании мастера Добавить скрипт (Add Script) опция сохранения относительных путей появится на первой панели. Вы также можете установить эту опцию, щелкнув правой кнопкой мыши инструмент-скрипт, выбрав Свойства (Properties) , а затем закладку Общие (General) . В нижней части диалогового окна выберите Сохранить относительные пути (Store relative path names (instead of absolute paths) .

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

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

Относительные пути не могут менять диски. То есть в случае, если корневой каталог находится на диске D , вы не сможете использовать относительные пути для перехода к директории на диске E . Если вы сохраняете ваш инструмент-скрипт с использованием относительных путей, преобразованы и сохранены будут только пути, относящиеся к одному и тому же диску.

Пути в скрипте не преобразуются

Нельзя использовать точку и двойную точку в скриптах. Например, представленная ниже запись работать не будет:

т.к. путь ..\redlands.mdb\streets является относительным.

Какой смысл в использовании относительных путей вместо абсолютных?

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

  • Вы можете перемещать документ или набор инструментов в любое местоположение на вашем компьютере и данные будут по-прежнему найдены, когда вы откроете документ или инструмент.
  • На большинстве компьютеров расположение данных обычно не меняется. То есть вы обычно не перемещаете ваши данные из одной папки в другую. Как правило, используются абсолютные пути.
  • Вы можете ссылаться на данные, которые находятся на других дисках.

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

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

К примеру, возьмем представленную ниже структуру папок. В этом примере D:\Tools\Toolboxes\Toolbox1 содержит инструмент-скрипт D:\Tools\Scripts\MyScript.py .

С другой стороны, если вы работаете с относительными путями, вы можете просто скопировать папку D:\Tools в любое место на любом компьютере и все будет работать. Это не сработает при использовании абсолютных путей, поскольку другой пользователь может скопировать папку в каталог F:\NewTools и путь D:\Tools\Scripts\MyScript.py на его компьютере найден, естественно, не будет.

Заключение

  • Относительные пути не могут менять диски.
  • Абсолютные пути лучше применять, если данные не будут переноситься, как это обычно и происходит на дисках персональных компьютеров.
  • Относительные пути полезно использовать в случае, когда вы передаете документы и данные другому пользователю.
  • Относительные пути используют обозначения точки и двойной точки (. and ..). Вы можете вводить относительные пути с такими обозначениями в Проводнике Windows и командной строке Windows.
  • ArcGIS не позволяет вводить относительные пути с использованием обозначений точки и двойной точки. Чаще в документе и наборе инструментов хранятся относительные пути (после того как вы отметили опцию сохранения относительных путей).
  • Относительные пути "отсчитываются" от текущей папки, являющейся местоположением сохраненного документа или набора инструментов.

Пути UNC

UNC расшифровывается как Universal (или Uniform, или Unified) Naming Convention – Конвенция об универсальных наименованиях, и является синтаксисом для доступа к директориям и файлам в компьютерных сетях. Синтаксис показан ниже:

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

Имя компьютера отделяется с помощью двойной обратной косой черты ( \\ ).

В UNC имя компьютера также называется именем хоста.

Есть несколько правил для путей UNC:

  • Пути UNC не могут содержать меток тома (таких как D ).
  • Невозможен переход в директорию выше уровнем, чем общая директория.
  • Опция Сохранять относительные пути (Store relative path names) для документов и инструментов неприменима к путям UNC.

В ArcGIS вы можете использовать путь UNC при любом запросе пути. Это особенно удобно для общедоступных данных в локальной вычислительной сети (LAN). Данные могут храниться на одном компьютере, и любой пользователь, имеющий к нему доступ, может эти данные использовать, пока компьютер не будет выключен или отсоединен от сети.

В Windows возможно открывать доступ к папкам, чтобы другие пользователи в сети могли с ними работать. В ArcCatalog или Проводнике Windows щелкните правой кнопкой мыши Общий доступ и безопасность (Sharing and Security) и следуйте дальнейшим указаниям открывающегося диалогового окна.

URL расшифровывается как Uniform Resource Locator – Универсальный локатор ресурса и уникально описывает адрес любого документа в Интернете. Компонентами URL являются:

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

Путь к файлу подключения ArcSDE

Инструменты геообработки используют путь к файлу подключения ( .sde ) для доступа к данным, хранящимся в базе данных ArcSDE.

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

Файловая система логически имеет древовидную структуру и имена файлов задаются в формате [диск:][путь\]имя_файла, то есть обязательным параметром является только имя файла. При этом, если путь начинается с символа "\", то маршрут вычисляется от корневого каталога, иначе — от текущего каталога. Например, имя C:123.txt задает файл 123.txt в текущем каталоге на диске C:, имя C:\123.txt — файл 123.txt в корневом каталоге на диске C:, имя ABC\123.txt — файл 123.txt в подкаталоге ABC текущего каталога.

Существуют особые обозначения для текущего каталога и родительского каталогов. Текущий каталог обозначается символом . (точка), его родительский каталог — символами .. (две точки). Например, если текущим каталогом является C:\WINDOWS, то путь к файлу autoexec.bat в корневом каталоге диска C: может быть записан в виде ..\autoexec.bat.

В именах файлов (но не дисков или каталогов) можно применять так называемые групповые символы или шаблоны: ? (вопросительный знак) и * (звездочка). Символ * в имени файла означает произвольное количество любых допустимых символов, символ ? — один произвольный символ или его отсутствие. Скажем, под шаблон text??1.txt подходят, например, имена text121.txt и text11.txt, под шаблон text*.txt — имена text.txt, textab12.txt, а под шаблон text.* — все файлы с именем text и произвольным расширением.

Для того, чтобы использовать длинные имена файлов при работе с командной строкой, их нужно заключать в двойные кавычки. Например, чтобы запустить файл с именем 'Мое приложение.exe' из каталога 'Мои документы', нужно в командной строке набрать "C:\Мои документы\Мое приложение.exe" и нажать клавишу <Enter>.

Команда CD

Текущий каталог можно изменить с помощью команды CD [диск:][путь\]

Путь к требуемому каталогу указывается с учетом приведенных выше замечаний. Например, команда CD \ выполняет переход в корневой каталог текущего диска. Если запустить команду CD без параметров, то на экран будут выведены имена текущего диска и каталога.

Команда COPY

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

Синтаксис этой команды:

COPY [/A|/B] источник [/A|/B] [+ источник [/A|/B] [+ . ]] [результат [/A|/B]] [/V][/Y|/–Y]

Краткое описание параметров и ключей команды COPY приведено в табл. 1.

Таблица 1. Параметры и ключи команды COPY

Параметр Описание
источник Имя копируемого файла или файлов
/A Файл является текстовым файлом ASCII, то есть конец файла обозначается символом с кодом ASCII 26 (<Ctrl>+<Z>)
/B Файл является двоичным. Этот ключ указывает на то, что интерпретатор команд должен при копировании считывать из источника число байт, заданное размером в каталоге копируемого файла
результат Каталог для размещения результата копирования и/или имя создаваемого файла
/V Проверка правильности копирования путем сравнения файлов после копирования
/Y Отключение режима запроса подтверждения на замену файлов
/-Y Включение режима запроса подтверждения на замену файлов

Примеры использования команды COPY.

0. Копирование файла abc.txt из текущего каталога в каталог D:\PROGRAM под тем же именем:

COPY abc.txt D:\PROGRAM

1. Копирование файла abc.txt из текущего каталога в каталог D:\PROGRAM под новым именем def.txt:

COPY abc.txt D:\PROGRAM\def.txt

2. Копирование всех файлов с расширением txt с диска A: в каталог 'Мои документы' на диске C:

COPY A:\*.txt "C:\Мои документы"

Если не задать в команде целевой файл, то команда COPY создаст копию файла-источника с тем же именем, датой и временем создания, что и исходный файл, и поместит новую копию в текущий каталог на текущем диске. Например, для того, чтобы скопировать все файлы из корневого каталога диска A: в текущий каталог, достаточно выполнить такую команду:

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

Для решения задачи необходимо ввести команду COPY CON my.txt, которая будет копировать то, что набирается на клавиатуре в файл my.txt (если этот файл существовал, то он перезапишется, иначе — создастся). Для завершения ввода необходимо ввести символ конца файла, то есть нажать клавиши <Ctrl>+<Z>.

Команда COPY может также объединять (склеивать) несколько файлов в один. Для этого необходимо указать единственный результирующий файл и несколько исходных. Это достигается путем использования групповых знаков (? и *) или формата файл1 + файл2 + файл3. Например, для объединения файлов 1.txt и 2.txt в файл 3.txt можно задать следующую команду:

COPY 1.txt+2.txt 3.txt

Объединение всех файлов с расширением dat из текущего каталога в один файл all.dat может быть произведено так:

COPY /B *.dat all.dat

Ключ /B здесь используется для предотвращения усечения соединяемых файлов, так как при комбинировании файлов команда COPY по умолчанию считает файлами текстовыми.

Если имя целевого файла совпадает с именем одного из копируемых файлов (кроме первого), то исходное содержимое целевого файла теряется. Если имя целевого файла опущено, то в его качестве используется первый файл из списка. Например, команда COPY 1.txt+2.txt добавит к содержимому файла 1.txt содержимое файла 2.txt. Командой COPY можно воспользоваться и для присвоения какому-либо файлу текущей даты и временибез модификации его содержимого. Для этого нужно ввести команду

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

Команда COPY имеет и свои недостатки. Например, с ее помощью нельзя копировать скрытые и системные файлы, файлы нулевой длины, файлы из подкаталогов. Кроме того, если при копировании группы файлов COPY встретит файл, который в данный момент нельзя скопировать (например, он занят другим приложением), то процесс копирования полностью прервется, и остальные файлы не будут скопированы.

Команда XCOPY

Указанные при описании команды COPY проблемы можно решить с помощью команды XCOPY, которая предоставляет намного больше возможностей при копировании. Необходимо отметить, правда, что XCOPY может работать только с файлами и каталогами, но не с устройствами. Синтаксис команды:

XCOPY источник [результат] [ключи]

Команда XCOPY имеет множество ключей, далее приведены лишь некоторых из них. Ключ /D[:[дата]] позволяет копировать только файлы, измененные не ранее указанной даты. Если параметр дата не указан, то копирование будет производиться только если источник новее результата. Например, команда

XCOPY "C:\Мои документы\*.*" "D:\BACKUP\Мои документы" /D

скопирует в каталог 'D:\BACKUP\Мои документы' только те файлы из каталога 'C:\Мои документы', которые были изменены со времени последнего подобного копирования или которых вообще не было в 'D:\BACKUP\Мои документы'.

Ключ /S позволяет копировать все непустые подкаталоги в каталоге-источнике. С помощью же ключа /E можно копировать вообще все подкаталоги, включая и пустые.

Если указан ключ /C, то копирование будет продолжаться даже в случае возникновения ошибок. Это бывает очень полезным при операциях копирования, производимых над группами файлов, например, при резервном копировании данных.

Ключ /I важен для случая, когда копируются несколько файлов, а файл назначения отсутствует. При задании этого ключа команда XCOPY считает, что файл назначения должен быть каталогом. Например, если задать ключ /I в команде копирования всех файлов с расширением txt из текущего каталога в несуществующий еще подкаталог TEXT,

XCOPY *.txt TEXT /I

то подкаталог TEXT будет создан без дополнительных запросов.

Ключи /Q, /F и /L отвечают за режим отображения при копировании. При задании ключа /Q имена файлов при копировании не отображаются, ключа /F — отображаются полные пути источника и результата. Ключ /L обозначает, что отображаются только файлы, которые должны быть скопированы (при этом само копирование не производится).

С помощью ключа /H можно копировать скрытые и системные файлы, а с помощью ключа /R — заменять файлы с атрибутом "Только для чтения". Например, для копирования всех файлов из корневого каталога диска C: (включая системные и скрытые) в каталог SYS на диске D:, нужно ввести следующую команду:

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

Используя XCOPY можно при копировании обновлять только уже существующие файлы (новые файлы при этом не записываются). Для этого применяется ключ /U. Например, если в каталоге C:\2 находились файлы a.txt и b.txt, а в каталоге C:\1 — файлы a.txt, b.txt, c.txt и d.txt, то после выполнения команды

в каталоге C:\2 по-прежнему останутся лишь два файла a.txt и b.txt, содержимое которых будет заменено содержимым соответствующих файлов из каталога C:\1. Если с помощью XCOPY копировался файл с атрибутом "Только для чтения", то по умолчанию у файла-копии этот атрибут снимется. Для того, чтобы копировать не только данные, но и полностью атрибуты файла, необходимо использовать ключ /K.

Ключи /Y и /-Y определяют, нужно ли запрашивать подтверждение перед заменой файлов при копировании. /Y означает, что такой запрос нужен, /-Y — не нужен.

Команда DIR

DIR [диск:][путь][имя_файла] [ключи]

используется для вывода информации о содержимом дисков и каталогов. Параметр [диск:][путь] задает диск и каталог, содержимое которого нужно вывести на экран. Параметр [имя_файла] задает файл или группу файлов, которые нужно включить в список. Например, команда

выведет на экран все файлы с расширением bat в корневом каталоге диска C:. Если задать эту команду без параметров, то выводится метка диска и его серийный номер, имена (в коротком и длинном вариантах) файлов и подкаталогов, находящихся в текущем каталоге, а также дата и время их последней модификации. После этого выводится число файлов в каталоге, общий объем (в байтах), занимаемый файлами, и объем свободного пространства на диске. Например:

Том в устройстве C имеет метку PHYS1_PART2 Серийный номер тома: 366D-6107 Содержимое папки C:\aditor. <ПАПКА> 25.01.00 17:15 . <ПАПКА> 25.01.00 17:15 ..HILITE DAT 1 082 18.09.98 18:55 hilite.datTEMPLT01 DAT 48 07.08.98 1:00 templt01.datTTABLE DAT 357 07.08.98 1:00 ttable.datADITOR EXE 461 312 01.12.99 23:13 aditor.exeREADME TXT 3 974 25.01.00 17:26 readme.txtADITOR HLP 24 594 08.10.98 23:12 aditor.hlpТЕКСТО

1 TXT 0 11.03.01 9:02 Текстовый файл.txt 11 файлов 533 647 байт 2 папок 143 261 696 байт свободно

С помощью ключей команды DIR можно задать различные режимы расположения, фильтрации и сортировки. Например, при использовании ключа /W перечень файлов выводится в широком формате с максимально возможным числом имен файлов или каталогов на каждой строке. Например:

Том в устройстве C имеет метку PHYS1_PART2 Серийный номер тома: 366D-6107 Содержимое папки C:\aditor[.] [..] TEMPLT02.DAT UNINST1.000 HILITE.DAT TEMPLT01.DAT UNINST0.000 TTABLE.DAT ADITOR.EXE README.TXT ADITOR.HLP ТЕКСТО

1.TXT 11 файлов 533 647 байт 2 папок 143 257 600 байт свободно

С помощью ключа /A[[:]атрибуты] можно вывести имена только тех каталогов и файлов, которые имеют заданные атрибуты (R — "Только чтение", A — "Архивный", S — "Системный", H — "Скрытый", префикс "–" имеет значение НЕ). Если ключ /A используется более чем с одним значением атрибута, будут выведены имена только тех файлов, у которых все атрибуты совпадают с заданными. Например, для вывода имен всех файлов в корневом каталоге диска C:, которые одновременно являются скрытыми и системными, можно задать команду

а для вывода всех файлов, кроме скрытых — команду

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

Ключ /O[[:]сортировка] задает порядок сортировки содержимого каталога при выводе его командой DIR. Если этот ключ опущен, DIR печатает имена файлов и каталогов в том порядке, в котором они содержатся в каталоге. Если ключ /O задан, а параметр сортировка не указан, то DIR выводит имена в алфавитном порядке. В параметре сортировка можно использовать следующие значения: N — по имени (алфавитная), S — по размеру (начиная с меньших), E — по расширению (алфавитная), D — по дате (начиная с более старых), A — по дате загрузки (начиная с более старых), G — начать список с каталогов. Префикс "–" означает обратный порядок. Если задается более одного значения порядка сортировки, файлы сортируются по первому критерию, затем по второму и т.д.

Ключ /S означает вывод списка файлов из заданного каталога и его подкаталогов.

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

Команды MKDIR и RMDIR

Для создания нового каталога и удаления уже существующего пустого каталога используются команды MKDIR [диск:]путь и RMDIR [диск:]путь [ключи] соответственно (или их короткие аналоги MD и RD). Например:

Команда MKDIR не может быть выполнена, если каталог или файл с заданным именем уже существует. Команда RMDIR не будет выполнена, если удаляемый каталог не пустой.

Команда DEL

Удалить один или несколько файлов можно с помощью команды

DEL [диск:][путь]имя_файла [ключи]

Для удаления сразу нескольких файлов используются групповые знаки ? и *. Ключ /S позволяет удалить указанные файлы из всех подкаталогов, ключ /F – принудительно удалить файлы, доступные только для чтения, ключ /A[[:]атрибуты] – отбирать файлы для удаления по атрибутам (аналогично ключу /A[[:]атрибуты] в команде DIR).

Команда REN

Переименовать файлы и каталоги можно с помощью команды RENAME (REN). Синтаксис этой команды имеет следующий вид:

REN [диск:][путь][каталог1|файл1] [каталог2|файл2]

Здесь параметр каталог1|файл1 определяет название каталога/файла, которое нужно изменить, а каталог2|файл2 задает новое название каталога/файла. В любом параметре команды REN можно использовать групповые символы ? и *. При этом представленные шаблонами символы в параметре файл2 будут идентичны соответствующим символам в параметре файл1. Например, чтобы изменить у всех файлов с расширением txt в текущей директории расширение на doc, нужно ввести такую команду:

Команда MOVE

Синтаксис команды для перемещения одного или более файлов имеет вид:

MOVE [/Y|/–Y] [диск:][путь]имя_файла1[. ] результирующий_файл

Синтаксис команды для переименования папки имеет вид:

MOVE [/Y|/–Y] [диск:][путь]каталог1 каталог2

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

MOVE "C:\Мои документы\список.txt" D:\list.txt

Если указан ключ /-Y, то при создании каталогов и замене файлов будет выдаваться запрос на подтверждение. Ключ /Y отменяет выдачу такого запроса.

2. МЕТОДИКА ВЫПОЛНЕНИЯ

1. Ознакомиться с теоретическими сведениями.

2. Запустить интерпретатор командной строки

3. Увеличить размер окна интерпретатора и задать цвет фона и цвет шрифта (рекомендуется синий фон и белый шрифт).

4. Создать список фамилий студентов группы, используя пример 1. Отсортировать список в алфавитном порядке и сохранить его в новом файле.

Замечание 1. При создании текстового файла интерпретатор командной строки использует кодировку кириллица (DOS). Поэтому рекомендуется переназначать вывод в файл с расширением .txt,а для просмотра содержимого файла использовать Internet Explorer, указав вид кодировки кириллица (DOS). Пример вывода содержимого текстового файла приведен на рис. 3.

Замечание 2. Интерпретатор хранит историю введенных команд в буфере (размером 50 строк). Для просмотра содержимого буфера используйте клавиши клавиатуры СТРЕЛКА ВВЕРХ и СТРЕЛКА ВНИЗ. Полученную команду можно отредактировать и выполнить снова.


Рис.3 – вывод содержимого текстового файла, полученного с помощью команды DIR, в IE в кодировке кириллица (DOS)

5. Создать текстовый файл, содержащий справочные сведения по командам DIR, COPY и XCOPY.

6. Вывести содержимое указанного в табл.3 каталога по указанному формату на экран и в файл.

Таблица 3. Варианты заданий для бригад

Номера бригад Имя каталога Что выводить Сортировать по Атрибуты фай-лов и каталогов
1, 6 %Windows% Только файлы По размеру Системный
2, 7 %Windows% Файлы и подкаталоги По дате Скрытый
3, 8 %Windows% Только подкаталоги Именам Только чтение
4, 9 %Windows% и все подкаталоги Только файлы bmp По размеру Только чтение
5, 10 %Windows% и все подкаталоги Только файлы jpg Именам Любые

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

8. Скопировать все имеющиеся в каталоге Windows исполняемые файлы в каталог WinEx на диске С:. Если диск С: недоступен, использовать любой другой доступный диск.

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

Иерархическую структуру каталогов обычно иллюстрируют рисунком "дерева каталогов", в котором каждый каталог изображается узлом "дерева", а файлы - "листьями". В MS Windows или DOS каталоговая структура строится отдельно для каждого физического носителя (т. е., имеем не отдельное " дерево ", а целый " лес ") и корневой каталог каждой каталоговой структуры обозначается какой-нибудь буквой латинского алфавита (отсюда уже возникает некоторое ограничение). В Linux (и UNIX вообще) строится единая каталоговая структура для всех носителей, и единственный корневой каталог этой структуры обозначается символом "/". В эту единую каталоговую структуру можно подключить любое число каталогов, физически расположенных на разных носителях (как говорят, "смонтировать файловую систему" или "смонтировать носитель").

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

Полным именем файла (или путем к файлу) называется список имен вложенных друг в друга подкаталогов, начинающийся с корневого каталога и оканчивающийся собственно именем файла. При этом имена подкаталогов в этом списке разделяются тем же символом "/", который служит для обозначения корневого каталога. Например, на моем компьютере /home/kos/ve/book/filesystem1.htm является полным именем того файла, в котором я сохранил первый вариант данного текста.

В каждый момент времени пользователь работает с одним экземпляром оболочки shell и эта оболочка хранит значение так называемого "текущего" каталога, т. е. того каталога, в котором пользователь сейчас работает. Имеется специальная команда , которая сообщает вам значение текущего каталога - pwd .

Если быть более точным, то следует сказать, что текущий каталог - это понятие, относящееся к каждому запущенному в системе процессу (в частности к оболочке); поэтому иногда запуск какой-то программы в shell может привести к тому, что после завершения работы этой программы текущий каталог сменится.

Кроме текущего каталога для каждого пользователя определен еще его " домашний каталог " - каталог, в котором пользователь имеет все права : может создавать и удалять файлы, менять права доступа к ним и т. д. В каталоговой структуре Linux домашние каталоги пользователей обычно размещаются в каталоге /home и имеют имена, совпадающие с именем пользователя. Например, /home/jim . Каждый пользователь может обратиться к своему домашнему каталогу с помощью значка

, т. е., например, пользователь jim может обратиться к каталогу /home/jim/doc как к

/doc . Когда пользователь входит в систему, текущим каталогом становится домашний каталог данного пользователя.

Для изменения текущего каталога служит команда cd . В качестве параметра этой команде надо указать полный или относительный путь к тому каталогу, который вы хотите сделать текущим. Понятие полного пути уже было пояснено, а понятие относительного пути требует дополнительного пояснения. Относительным путем называется перечисление тех каталогов, которые нужно пройти в "дереве каталогов", чтобы перейти от текущего каталога к какому-то другому каталогу (назовем его целевым). Если целевой каталог, т. е. каталог, который вы хотите сделать текущим, расположен ниже текущего в структуре каталогов, то сделать это просто: вы указываете сначала подкаталог текущего каталога, затем подкаталог того каталога и т. д., вплоть до имени целевого каталога. Если же целевой каталог расположен выше в каталоговой структуре, или вообще на другой "ветви" дерева, то ситуация несколько сложнее. Конечно, можно было бы пользоваться полным путем, но тогда придется записывать очень длинные маршруты .

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

А чтобы перейти по дереву каталогов на два "этажа" вверх, откуда спуститься в подкаталог kat1/kat2 надо дать команду

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

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

Если дать команду ls без параметров, то выводятся только имена файлов текущего каталога. Если нужно просмотреть содержимое не текущего, а какого-то другого каталога, надо указать команде ls полный или относительный путь к этому каталогу.

Кроме имени файла (или подкаталога) запись о нем в соответствующем каталоге содержит еще массу информации об этом файле. Для того, чтобы получить эту информацию, надо использовать дополнительные параметры команды ls . Если дать команду ls с параметром -l , то будут выданы не только имена файлов, но также данные о правах доступа к файлу (подробнее о правах будет рассказано ниже), количество жестких ссылок или имен файла (для каталога указывается число дополнительных блоков ) 1 Не помню, откуда я взял, что для каталога это число означает число дополнительных блоков и что это за блоки. Небольшой эксперимент с созданием подкаталогов в текущем каталоге и последующим просмотром результата выполнения команды ll в родительском каталоге показывает, что для каталога это тоже есть число ссылок на него. А учитывая, что для любого каталога изначально существует две ссылки (. и ..), это число есть увеличенное на 2 число подкаталогов в данном каталоге. , имя владельца файла и группы файла, его размер и дата последней модификации. Вот небольшой пример.

Если дополнительно задать параметр -i , то в первой колонке будут отображены индексы файлов (номера соответствующих inode ). При задании параметра -t сортировка файлов будет производиться не по именам, а по времени модификации файла. Задание параметра -u приводит к тому, что вместо времени модификации файла будет выводиться время последнего доступа к файлу. Параметр -r меняет порядок сортировки на обратный (используется вместе с параметрами -l и -t ). Заметим еще, что параметры можно перечислять как отдельно:

так и объединять:

На этом мы закончим краткое описание команды ls (подробнее см. соответствующую man- или info-страницу) и перейдем к рассмотрению основных каталогов в каталоговой структуре Linux.

Читайте также: