Файловую структуру можно не только просматривать, но и всячески модифицировать. В прошлом уроке мы научились создавать файлы через перенаправление потоков, но всё это можно делать и напрямую.
Учтите, что возможность модифицировать файловую структуру завязана на права пользователя. Если у вас нет соответствующих прав, вы получите ошибку доступа. Место, где вы гарантированно можете экспериментировать — ваша домашняя директория. Внутри неё всё доступно на запись.
Для примеров этого урока мы создали каталог test
в домашней директории. То есть все демонстрируемые команды выполняются в директории по адресу: ~/test
.
Для создания файлов принято использовать утилиту touch
.
Основная задача утилиты — поменять время последнего доступа к файлу, но она обладает побочным эффектом. Если файла не существует, то он будет создан — именно поэтому её используют для создания файлов, хотя это не основное предназначение.
# В текущей директории создаётся пустой файл
touch empty-file
Удаляется файл командой rm
(remove files):
rm empty-file
В *nix-системах не существует понятия "переименовать файл". Переименование всегда равносильно перемещению, которое выполняется командой mv
(move)
touch file
mv file renamed-file
Для копирования файлов и директорий используется утилита cp
(copy). Её первый аргумент — имя источника (откуда), второй — имя приёмника (куда).
cp renamed-file renamed-file-copy
Для копирования директории нужно добавить флаг -r
(recursive).
Все эти и последующие утилиты работают с файлами и директориями, расположенными в любом месте файловой системы. Поэтому вы всегда можете передать любой путь: touch /tmp/tempfile
.
Утилиты для работы с директориями частично отличаются. Создание директории выполняется командой mkdir
(make directory).
mkdir my-dir
По умолчанию эта команда не создаёт вложенных директорий:
mkdir one/two/three
mkdir: cannot create directory ‘one/two/three’: No such file or directory
В такой ситуации придётся либо создавать каждую директорию отдельно, либо воспользоваться флагом -p
, который создаёт директории рекурсивно.
mkdir -p one/two/three
Удаление директорий выполняется той же командой, что и удаление файлов, но без флагов оно выдаёт предупреждение:
rm my-dir/
rm: cannot remove 'my-dir/': Is a directory
Чтобы не было ошибки, нужно добавить флаг -r
. Он включает режим рекурсивного (r — recursion) удаления содержимого директорий, то есть идёт просмотр всего, что внутри во всех вложенных директориях и поддиректориях (до самого конца).
rm -r my-dir
Если внутри директории содержатся файлы или директории с ограниченными правами доступа, например, доступные только для чтения, то команда rm
начнёт задавать вопрос по каждому из них, нужно ли его удалять. Если вы точно уверены, что удалить нужно всё, добавьте флаг -f
(или --force
) - этот флаг позволяет игнорировать несуществующие файлы и не запрашивать подтверждение на удаление. В таком случае rm
удалит всю директорию без вопросов.
rm -rf one
Вам ответят команда поддержки Хекслета или другие студенты.
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.
Наши выпускники работают в компаниях:
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.
Зарегистрируйтесь или войдите в свой аккаунт