Как ориентироваться в файловой структуре

Обновлено: 21.11.2024

В этом разделе я немного расскажу о том, как R взаимодействует с файловой системой на вашем компьютере. Тема не очень интересная, но полезная. В качестве предыстории этого обсуждения я немного расскажу о том, как работают расположения в файловой системе, в Разделе 4.4.1. Когда-то все, кто использовал компьютеры, могли с уверенностью предположить, что они понимают, как работает файловая система, потому что без этого невозможно было успешно использовать компьютер! Однако современные операционные системы гораздо более «дружественны к пользователю», и вследствие этого они идут на многое, чтобы скрыть файловую систему от пользователей. Так что в наши дни люди нередко используют компьютеры большую часть своей жизни и не знакомы с тем, как компьютеры упорядочивают файлы. Если вы уже знакомы с этим материалом, сразу переходите к разделу 4.4.2. В противном случае читайте дальше. Я попытаюсь дать краткое введение, которое будет полезно тем из вас, кому никогда не приходилось учиться перемещаться по компьютеру с помощью оболочки DOS или UNIX.

4.4.1 Сама файловая система

На компьютере с Windows корнем является физический диск 50, на котором хранится файл, а для большинства домашних компьютеров имя жесткого диска, на котором хранятся все ваши файлы, — C:, поэтому большинство имен файлов в Windows начинаются с буквы C. :. После этого идут папки, а в Windows имена папок разделяются символом \. Таким образом, полный путь к этой книге на моем компьютере с Windows может выглядеть примерно так:

и что это означает, так это то, что книга называется LSR.pdf, и она находится в папке с именем book, которая сама находится в папке с именем dan, которая сама по себе … ну, вы поняли идею. В системах Linux, Unix и Mac OS адреса выглядят немного иначе, но по духу они более или менее идентичны. Вместо обратной косой черты папки разделяются прямой косой чертой, и, в отличие от Windows, они не рассматривают физический диск как корень файловой системы. Итак, путь к этой книге на моем Mac может быть примерно таким:

Вот что мы подразумеваем под «путем» к файлу. Следующая концепция, которую необходимо понять, — это идея рабочего каталога и того, как его изменить. Для тех из вас, кто ранее использовал интерфейсы командной строки, это уже должно быть очевидно. Но если нет, то вот что я имею в виду. Рабочий каталог — это просто «любая папка, которую я сейчас просматриваю». Предположим, что я сейчас ищу файлы в Проводнике (если вы используете Windows) или в Finder (на Mac). Папка, которую я сейчас открыл, — это мой пользовательский каталог (т. е. C:\Users\dan или /Users/dan ). Это мой текущий рабочий каталог.

Тот факт, что мы можем представить себе, что программа находится «в» определенном каталоге, означает, что мы можем говорить о перемещении из нашего текущего местоположения на новый. Это означает, что мы можем захотеть указать новое местоположение по отношению к нашему текущему местоположению. Для этого нам нужно ввести два новых соглашения. Независимо от того, какую операционную систему вы используете, мы используем . для ссылки на текущий рабочий каталог и .. для ссылки на каталог над ним. Это позволяет нам указать путь к новому местоположению по отношению к нашему текущему местоположению, как показано в следующих примерах. Предположим, что я использую свой компьютер с Windows, а мой рабочий каталог — C:\Users\danRbook). В таблице ниже показано несколько адресов по отношению к моему текущему:

Таблица 4.1. Основные арифметические операции в R. Эти пять операторов очень часто используются в тексте, поэтому важно ознакомиться с ними с самого начала.

< td>C:\Users\dan
абсолютный путь (т.е. от корня) относительный путь (т.е. от C:)
..
C:\Users ..\.. \
C:\Users\danRbook\source .\source
C:\Users\dan \nerdstuff ..\nerdstuff

Есть еще одна вещь, на которую я хочу обратить внимание: каталог ~. Обычно я бы не беспокоился, но R иногда ссылается на эту концепцию. Довольно часто на компьютерах с несколькими пользователями ~ определяется как домашний каталог пользователя. Например, на моем Mac домашний каталог ~ для пользователя «dan» — это \Users\dan\ . Поэтому неудивительно, что можно определить другие каталоги с точки зрения их отношения к домашнему каталогу. Например, альтернативным способом описания расположения файла LSR.pdf на моем Mac будет

Это все, что вам действительно нужно знать о путях к файлам. И поскольку этот раздел уже кажется слишком длинным, пришло время посмотреть, как перемещаться по файловой системе в R.

4.4.2 Навигация по файловой системе с помощью консоли R

В этом разделе я расскажу о том, как перемещаться по этой файловой системе из самого R.Это не особенно удобно для пользователя, поэтому вы, вероятно, будете рады узнать, что Rstudio предоставляет вам более простой метод, и я опишу его в Разделе 4.4.4. Так что на практике вам не на самом деле нужно использовать команды, о которых я болтаю в этом разделе, но я думаю, что полезно увидеть их в действии, по крайней мере один раз, прежде чем забыть о них навсегда.

Хорошо, приступим. Когда вы хотите загрузить или сохранить файл в R, важно знать, какой у него рабочий каталог. Вы можете узнать это с помощью команды getwd(). На данный момент давайте предположим, что я использую Mac OS или Linux, так как в Windows есть некоторые тонкости. Вот что происходит:

Мы можем легко изменить рабочий каталог, используя setwd() . Функция setwd() имеет только один аргумент, dir — это строка символов, указывающая путь к каталогу или путь относительно рабочего каталога. Поскольку в настоящее время я нахожусь в /Users/dan , следующие два эквивалентны:

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

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

4.4.3 Почему в путях Windows используется неправильная косая черта?

Предположим, у меня Windows. Как и раньше, я могу узнать, какой у меня текущий рабочий каталог, следующим образом:

Это кажется правильным, но вам может быть интересно, почему R отображает путь Windows, используя неправильный тип косой черты. Ответ немного сложен и связан с тем фактом, что R рассматривает символ \ как «особый» (см. Раздел 7.8.7). Если вы глубоко привержены идее указания пути с помощью косых черт в стиле Windows, то вам нужно набирать / всякий раз, когда вы имеете в виду \ . Другими словами, если вы хотите указать рабочий каталог на компьютере с Windows, вам нужно использовать одну из следующих команд:

Немного раздражает делать это таким образом, но, как вы увидите позже в Разделе 7.8.7, это неизбежное зло. К счастью, как мы увидим в следующем разделе, Rstudio предоставляет гораздо более простой способ смены каталогов…

4.4.4 Навигация по файловой системе с помощью файловой панели Rstudio

Хотя я думаю, что важно понимать, как работает вся эта командная строка, во многих (возможно, даже в большинстве) ситуациях есть более простой способ. Для наших целей самый простой способ навигации по файловой системе — использовать встроенные инструменты Rstudio. Панель «Файл» — нижняя правая часть на рис. 4.7 — на самом деле является довольно приличным файловым браузером. Вы можете не только просто указать и щелкнуть имя для перемещения по файловой системе, но и использовать его для установки рабочего каталога и даже для загрузки файлов.

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

Вот что вам нужно сделать, чтобы изменить рабочий каталог с помощью файловой панели. Допустим, я смотрю на настоящий экран, показанный на рис. 4.7. В верхней части файловой панели вы видите текст «Главная > Rbook > данные». Это означает, что он отображает файлы, хранящиеся в папке

.

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

Другими словами, Rstudio отправляет команду на консоль R точно так же, как если бы вы набрали ее самостоятельно. Файловую панель можно использовать и для других целей. Если вы хотите переместиться «вверх» в родительскую папку (например, из /Users/dan/Rbook/data в /Users/dan/Rbook, щелкните ссылку «..» на файловой панели. Чтобы перейти в подпапку, нажмите на имя папки, которую вы хотите открыть.Вы можете открыть некоторые типы файлов, нажав на них.Вы можете удалить файлы с вашего компьютера с помощью кнопки «удалить», переименовать их с помощью кнопки «переименовать» и т. д. вкл.

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

Вклады и атрибуции

Эта страница находится под лицензией CC BY-SA, ее автором, ремиксом и/или куратором является Даниэль Наварро. Подробная история версий изменений исходного контента доступна по запросу.

Мы узнали, как использовать pwd для определения нашего текущего местоположения в нашей файловой системе. Мы также узнали, как использовать cd для изменения местоположения и ls для просмотра содержимого каталога. Теперь мы изучим некоторые дополнительные команды для перемещения по нашей файловой системе.

Используйте команды, которые мы уже изучили, чтобы перейти в каталог shell_data/untrimmed_fastq, если вы еще этого не сделали.

Что, если мы хотим вернуться назад и выйти из этого каталога в наш каталог верхнего уровня? Можем ли мы ввести cd shell_data ? Попробуйте и посмотрите, что получится.

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

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

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

Из этого вывода видно, что .. действительно возвращает нас на один уровень назад в нашей файловой системе.

Вы можете связать их вместе следующим образом:

распечатывает содержимое /home .

Поиск скрытых каталогов

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

Подсказка: скрытые файлы и папки в Unix начинаются с . , например .my_hidden_directory

Решение

Сначала используйте команду man, чтобы просмотреть параметры ls .

Опция -a является сокращением от all и говорит, что она заставляет ls «не игнорировать записи, начинающиеся с ». Это тот вариант, который нам нужен.

Имя скрытого каталога — .hidden . Мы можем перейти в этот каталог, используя cd .

А затем выведите список содержимого каталога с помощью ls .

Имя текстового файла — youfoundit.txt .

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

Просмотр содержимого других каталогов

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

Затем введите команду:

Это отобразит содержимое каталога shell_data, и вам не нужно будет туда переходить.

Команда cd работает аналогичным образом.

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

Практика навигации

Перейдите в свой домашний каталог. Оттуда перечислите содержимое каталога untrimmed_fastq.

Решение

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

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

Это полное имя вашего домашнего каталога. Это говорит вам, что вы находитесь в каталоге с именем dcuser, который находится внутри каталога с именем home, который находится внутри самого верхнего каталога в иерархии. На самом верху иерархии находится каталог с именем /, который обычно называют корневым каталогом. Итак, подведем итог: dcuser — это каталог в доме, который является каталогом в / . Подробнее о root и home в следующем разделе.

Теперь введите следующую команду:

Это позволяет перейти на несколько уровней вперед к каталогу .hidden. Теперь вернитесь в домашний каталог.

Вы также можете перейти в каталог .hidden, используя:

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

Относительный путь подобен получению указаний от кого-то на улице.Они говорят вам «идти направо на знаке остановки, а затем повернуть налево на главную улицу». Это отлично работает, если вы стоите там вместе, но не так хорошо, если вы пытаетесь рассказать кому-то, как туда добраться из другой страны. Полный путь подобен GPS-координатам. Он точно сообщает вам, где что находится, независимо от того, где вы сейчас находитесь.

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

Со временем вам станет легче запоминать структуру используемых вами каталогов и способы быстрой навигации по ним.

Относительное разрешение пути

  1. ../backup: Нет такого файла или каталога
  2. 01.12.2012 08.01.2013 27.01.2013
  3. 01.12.2012/08.01.2013/27.01.2013/
  4. исходный pnas_final pnas_sub

Решение

  1. Нет: есть резервная копия каталога в /Users .
  2. Нет: это содержимое Users/thing/backup , но с .. мы запросили один уровень выше.
  3. Нет: см. предыдущее объяснение. Кроме того, мы не указали -F для отображения / в конце имен каталогов.
  4. Да: ../backup относится к /Users/backup .

Быстрые клавиши навигации

Корневой каталог — это каталог самого высокого уровня в вашей файловой системе, содержащий файлы, важные для ежедневной работы вашего компьютера. Хотя вы будете использовать корень ( / ) в начале ваших абсолютных путей, важно избегать работы с данными в этих каталогах более высокого уровня, поскольку ваши команды могут навсегда изменить файлы, необходимые для работы операционной системы. Во многих случаях для запуска команд в корневых каталогах потребуются специальные разрешения, которые здесь не обсуждаются, поэтому лучше избегать их и работать в своем домашнем каталоге. Работа с домашним каталогом очень распространена. Символ тильды ~ — это ярлык для вашего домашнего каталога. В нашем случае корневой каталог находится на два уровня выше нашего домашнего каталога, поэтому cd или cd ~ приведет вас к /home/dcuser, а cd / приведет вас к / . Перейдите в каталог shell_data:

Затем введите команду:

Это распечатает содержимое вашего домашнего каталога, и вам не нужно вводить полный путь.

Команды cd и cd ~ очень полезны для быстрого возврата в домашний каталог. В последующих уроках мы будем использовать символ ~ для указания нашего домашнего каталога.

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

Ключевые понятия

Рассмотрите основные понятия, которые вам необходимо усвоить, чтобы освоить этот предмет

pwd Печать рабочего каталога

mkdir Создать каталог

cd Изменить каталог

нажмите Создать новый файл

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

pwd Печать рабочего каталога

Команда оболочки pwd отображает путь к файлу из корневого каталога в текущий рабочий каталог.

Командная строка — это текстовый интерфейс для вашего компьютера. Это программа, которая принимает команды и передает их операционной системе компьютера для запуска. Из командной строки вы можете перемещаться…

Первая команда, которую мы рассмотрим, это ls. команда — это указание компьютеру выполнить определенную задачу. Когда вы вводите ls, командная строка просматривает каталог, в котором вы находитесь, а затем…

Следующая команда, которую мы собираемся рассмотреть, — это pwd, что означает «распечатать рабочий каталог». Он выводит имя каталога, в котором вы сейчас находитесь, который называется рабочий каталог. Здесь работа…

Наша следующая команда — cd, что означает «изменить каталог». Точно так же, как вы щелкаете по папке в Windows Explorer или Finder, cd переключает вас в указанный вами каталог. Другими словами, cd ch…

Вместо того, чтобы дважды использовать cd для перехода от 2015 к памяти, мы можем использовать его один раз и дать ему более длинный аргумент: $ cd jan/memory Чтобы перейти непосредственно к каталогу, используйте cd с каталогом…

Теперь, когда мы можем перемещаться по существующей файловой системе, давайте попробуем отредактировать ее, создав каталоги (папки) через командную строку. Команда для этого mkdir: $ mkdir media Команда mkdir st…

Теперь мы знаем, как создавать каталоги через командную строку, но как создавать новые файлы? Мы можем сделать это с помощью команды touch: $ touch keyboard.txt Команда touch создает новый файл…

Теперь, когда мы рассмотрели основы навигации по вашей файловой системе из командной строки, давайте рассмотрим несколько полезных команд, которые упростят ее использование! clear используется для очистки вашего терминала, что…

Поздравляем! Вы изучили пять команд, обычно используемых для навигации по файловой системе из командной строки. Что мы можем обобщить на данный момент? * командная строка — это текстовый интерфейс для вычислений…

Что вы создадите

Проекты портфолио, демонстрирующие ваши новые навыки

Велосипедный мир

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

Как вы это освоите

Проверьте свои знания с помощью тестов, которые помогут запомнить синтаксис

Заголовок реализует техническую спецификацию файловой системы C++ ISO/IEC TS 18822:2015 (окончательный вариант: ISO/IEC JTC 1/SC 22/WG 21 N4100) и имеет типы и функции, позволяющие писать независимый от платформы код. для навигации по файловой системе. Поскольку он кроссплатформенный, он содержит API-интерфейсы, которые не подходят для систем Windows. Например, is_fifo(const path&) всегда возвращает false в Windows.

Обзор

Используйте API для следующих задач:

перебирать файлы и каталоги по указанному пути

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

составлять, разбирать и сравнивать пути

создавать, копировать и удалять каталоги

копировать и удалять файлы

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

Пути

Построение и составление путей

Пути в Windows (начиная с XP) изначально хранятся в Юникоде. Класс пути автоматически выполняет все необходимые преобразования строк. Он принимает аргументы как широких, так и узких массивов символов, а также типов std::string и std::wstring, отформатированных как UTF8 или UTF16. Класс пути также автоматически нормализует разделители путей. Вы можете использовать одну косую черту в качестве разделителя каталогов в аргументах конструктора. Этот разделитель позволяет использовать одни и те же строки для хранения путей как в среде Windows, так и в среде UNIX:

Чтобы объединить два пути, вы можете использовать перегруженные операторы / и /=, которые аналогичны операторам + и += в std::string и std::wstring . Объект пути удобно предоставит разделители, если вы этого не сделаете.

Изучение путей

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

Код выводит следующий результат:

Сравнение путей

Чтобы запустить этот код, вставьте его в полный пример выше перед main и раскомментируйте строку, которая вызывает его в main.

Преобразование между типами пути и строки

Объект пути неявно преобразуется в std::wstring или std::string . Это означает, что вы можете передать путь таким функциям, как wofstream::open , как показано в этом примере:

Итерация каталогов и файлов

Заголовок предоставляет тип directory_iterator для перебора отдельных каталогов и класс recursive_directory_iterator для рекурсивного перебора каталога и его подкаталогов. После того, как вы создадите итератор, передав ему объект пути, итератор указывает на первую запись directory_entry в пути. Создайте конечный итератор, вызвав конструктор по умолчанию.

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

Одна из наиболее распространенных операций, которые вам нужно будет выполнять в командной строке, — это перемещение по файловой системе. Для этого мы будем использовать ключевые слова cd и dir. Начните с открытия командной строки, используя один из методов, упомянутых здесь. Скорее всего, вы увидите что-то похожее на то, что показано ниже, где UserName — это ваш пользователь.

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

Это изменит ваш текущий каталог на диск C:\. Обратите внимание, как теперь выглядит экран

Затем запустите каталог, чтобы увидеть что-нибудь на диске C:\

Появится список файлов и папок с некоторой информацией о них, например:

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

Теперь, если вы снова запустите dir, вы увидите все файлы и папки в вашем каталоге C:\Users.Итак, мы не нашли здесь то, что хотели, поэтому вернемся к родительской папке. Вместо того, чтобы вводить путь к нему, мы можем использовать .. для перехода на одну папку вверх, вот так

Теперь мы снова в C:\ . Если вы хотите перейти сразу к нескольким папкам, вы можете поставить обратную косую черту и другой набор точек, например: cd ..\.. , но нам нужна была только одна папка.

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

Теперь вы находитесь в C:\Program Files>, и команда dir сообщит вам все, что здесь находится.

Итак, допустим, мы устали блуждать в поисках папки и искали именно то, что нам нужно было найти. Оказывается, это C:\Windows\Logs Вместо того, чтобы делать .. to Windows to Logs , мы можем просто указать полный путь следующим образом:

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

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