Создание файлов и каталогов
Создание файлов и каталогов
В следующих мини-очерках будут рассмотрены основные команды, предназначенные для файловых операций, вместе с их наиболее используемыми опциями. Чтобы не повторяться, напомню, что почти все описанные ниже команды имеют три стандартные опции (т.н. GNU Standard Options): --help для получения помощи, --version для вывода информации о текущей версии, и --[пробел], символизирующая окончание перечня опций (т.е. любой символ или их последовательность после неё интерпретируются как аргумент). Так что далее эти опции в описаниях команд фигурировать не будут.
Для создания обычных (regular) файлов могут использоваться команды touch, cat и tee. Первая из указанных команд в форме
$ touch filename
просто создает файл с именем filename и без всякого содержимого. Кроме того, с помощью специальных опций она позволяет устанавливать временные атрибуты файла, о чем я скажу чуть позже.
Для чего может потребоваться пустой файл? Например, для создания скелета web-сайта с целью проверки целостности ссылок. Поскольку число аргументов команды touch не ограничено ничем (вернее, ограничено только максимальным количеством символов в командной строке), это можно сделать одной командой:
$ touch index.html about.html content.html [...]
Можно, воспользовавшись приемом группировки аргументов, заполнить файлами все подкаталоги текущего каталога:
$ touch dirname1/{filename1,filename2}
dirname2/{filename3,filename4}
и так далее. Правда, сама команда touch создавать подкаталоги не способна — это следует сделать предварительно командой mkdir (о которой — чуть ниже).
Для создания пустого регулярного файла может быть использована также команда cat (хотя основное ее назначение — слияние нескольких файлов, о чем будет говориться со временем). Для этого нужно просто перенаправить ее вывод в файл:
$ cat > filename
затем создать новую строку (нажатием клавиши Enter) и ввести символ конца файла (комбинацией клавиш Control+Z). Разумеется, предварительно в этот файл можно и ввести какой-нибудь текст, однако это уже относится к управлению контентом, о чем речь будет впереди.
Интересно создание файлов с помощью команды tee. Смысл ее — в раздвоении выходного потока, выводимого одновременно и на стандартный вывод, и в файл, указанный в качестве ее аргумента. То есть если использовать ее для создания файла с клавиатуры, это выглядит, будто строки удваиваются на экране. Но это не так: просто весь вводимый текст копируется одновременно и на экран, и в файл. И потому ее удобно применять в командных конструкциях, когда требуется одновременно и просмотреть результаты исполнения какой-либо команды, и запечатлеть их в файле:
$ ls dir | tee filename
По умолчанию команда tee создает новый файл с указанным именем, или перезаписывает одноименный, если он существовал ранее. Однако данная с опцией -a, она добавляет новые данные в конец существующего файла.
Команда mkdir создает файл особого типа — каталог, содержимым которого является список входящих в него файлов. Очевидно, что список этот в момент создания каталога должен быть пуст, однако это не совсем так: любой, даже пустой, каталог содержит две ссылки — на каталог текущий, обозначаемый как ./ (т.е. сам на себя) и на каталог родительский, ../ (т.е тот, в список файлов которого он включается в момент создания).
Команда mkdir требует обязательного аргумента — имени создаваемого каталога. Аргументов может быть больше одного — в этом случае будет создано два или больше поименованных каталогов. По умолчанию они создаются как подкаталоги каталога текущего. Можно создать также подкаталог в существующем подкаталоге:
$ mkdir parentdir/newdir
Если же требуется создать подкаталог в каталоге, отличном от текущего, — путь к нему требуется указать в явном виде, в относительной форме:
$ mkdir ../dirname1/dirname2
или в форме абсолютной:
$ mkdir /home/username/dirname1/dirname2
В произвольном, отличном от текущего, каталоге можно одной командой создать несколько подкаталогов, для чего нужно прибегнуть к группировке аргументов:
$ mkdir ../parentdir/{dirname1,dirname2,...,dirname#}
Такой прием позволяет одной командой создать дерево каталогов проекта. Например, скелет web-сайта, который потом можно наполнить пустыми файлами с помощью команды touch.
А опций у команды mkdir — всего две (за исключением стандартных опций GNU): --mode (или -m) для установки атрибутов доступа и --parents (или -p) для создания как требуемого каталога, так и родительского по отношению к нему (если таковой ранее не существовал). Первая опция используется в форме
$ mkdir --mode=### dirname
или
$ mkdir -m ### dirname
Здесь под ### понимаются атрибуты доступа для владельца файла, группы и прочих, заданные в численной нотации (например, 777 — полный доступ на чтение, изменение и исполнение для всех). Не возбраняется и использование символьной нотации: команда
$ mkdir -m a+rwx dirname
создаст каталог с теми же атрибутами полного доступа для всех.
Опция --parents (она же -p) позволяет создавать иерархическую цепочку подкаталогов любого уровня вложенности. Например,
$ mkdir -p dirlevel1/dirlevel2/dirlevel3
в один заход создаст в текущем каталоге цепочку вложенных друг друга подкаталогов. Разумеется, и здесь с помощью группировки аргументов можно создать несколько одноранговых подкаталогов:
$ mkdir -p dirlevel1/dirlevel2/{dirlevel31,...,dirlevel3#}
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
11.5.1. Группа по умолчанию для новых файлов и каталогов
11.5.1. Группа по умолчанию для новых файлов и каталогов В оригинальной системе Unix, когда open() или creat() создавали новый файл, он получал эффективные UID и GID создавшего их процесса.V7, BSD вплоть до BSD 4.1 и System V вплоть до Release 3 все трактовали каталоги как файлы. Однако, с добавлением
Другие методы определения атрибутов файлов и каталогов
Другие методы определения атрибутов файлов и каталогов Функции FindFirstFile и FindNextFile позволяют получить следующую информацию, связанную с атрибутами файла: флаги атрибутов, метки времени трех типов и размер файла. Существуют также другие аналогичные функции, одна из которых
14.3. Создание и удаление каталогов
14.3. Создание и удаление каталогов 14.3.1. Создание новых каталогов Создание новых каталогов выполняется очень просто.#include <fcntl.h>#include <unistd.h>int mkdir(const char * dirname, mode_t mode);Путь, определенный в dirname, создается как новый каталог с полномочием mode (что модифицируется umask процесса).
14.3.1. Создание новых каталогов
14.3.1. Создание новых каталогов Создание новых каталогов выполняется очень просто.#include <fcntl.h>#include <unistd.h>int mkdir(const char * dirname, mode_t mode);Путь, определенный в dirname, создается как новый каталог с полномочием mode (что модифицируется umask процесса). Если dirname определяет существующий
5.7.7 Раскрытие шаблонов имен файлов и каталогов (Pathname Expansion)
5.7.7 Раскрытие шаблонов имен файлов и каталогов (Pathname Expansion) Подстановки имен путей и файлов (Pathname expansion) используются для того, чтобы с помощью краткого образца или шаблона указать несколько имен файлов (или каталогов), соответствующих данному шаблону. После разделения
7.1.3. Проверка файлов и каталогов
7.1.3. Проверка файлов и каталогов Для проверки файлов и каталогов используется сканер clam-scan. Вот как можно проверить подозрительный файл file.bin:clamscan file.binДля проверки каталогов желательно указывать опцию -r, чтобы заодно были проверены все их подкаталоги:clamscan -r /home/denА вот
10.1.32. Создание цепочки каталогов
10.1.32. Создание цепочки каталогов Иногда необходимо создать глубоко вложенный каталог, причем промежуточные каталоги могут и не существовать. В UNIX мы воспользовались бы для этого командой mkdir -p.В программе на Ruby такую операцию выполняет метод FileUtils.makedirs (из библиотеки
10.1.34. Поиск файлов и каталогов
10.1.34. Поиск файлов и каталогов Ниже мы воспользовались стандартной библиотекой find.rb для написания метода, который находит один или более файлов и возвращает их список в виде массива. Первый параметр — это начальный каталог, второй — либо имя файла (строка), либо
12.3. Создание каталогов на диске
12.3. Создание каталогов на диске Постановка задачи Требуется возможность создавать на диске каталоги и сохранять в них определенные файлы из вашего
12.4. Перечисление файлов и каталогов
12.4. Перечисление файлов и каталогов Постановка задачи Вы хотите построить перечень подкаталогов, содержащихся в каталоге, либо построить список файлов, содержащихся в каталоге. Акт перечисления означает, что вы просто хотите найти все каталоги и/или файлы,
12.5. Удаление файлов и каталогов
12.5. Удаление файлов и каталогов Постановка задачи Вы создали на диске ряд файлов и/или каталогов, и они вам больше не нужны. Вы хотите их
4.7. Шифрование файлов и каталогов
4.7. Шифрование файлов и каталогов Более дорогие выпуски Windows 7 — Профессиональная (Professional), Корпоративная (Enterprise) и Максимальная (Ultimate) поддерживают функцию шифрования файлов и каталогов (система EFS). Зашифрованные файлы нельзя просмотреть на другом компьютере, например,
Создание, копирование и перемещение файлов и каталогов
Создание, копирование и перемещение файлов и каталогов Способы манипуляции с файлами и каталогами, как правило, интуитивно понятны при использовании современных операционных систем с графическим интерфейсом, однако все же требуют некоторого пояснения.Основными