2 added
2 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Файловую структуру можно не только просматривать, но и всячески модифицировать. В прошлом уроке мы научились создавать файлы через перенаправление потоков, а сейчас обсудим, как это делать напрямую.</p>
1
<p>Файловую структуру можно не только просматривать, но и всячески модифицировать. В прошлом уроке мы научились создавать файлы через перенаправление потоков, а сейчас обсудим, как это делать напрямую.</p>
2
<p>Учтите, что возможность модифицировать файловую структуру завязана на<strong>правах пользователя</strong>. Если у вас нет соответствующих прав, вы получите ошибку доступа. Место, где вы гарантированно можете экспериментировать - ваша домашняя директория. Внутри нее все доступно на запись.</p>
2
<p>Учтите, что возможность модифицировать файловую структуру завязана на<strong>правах пользователя</strong>. Если у вас нет соответствующих прав, вы получите ошибку доступа. Место, где вы гарантированно можете экспериментировать - ваша домашняя директория. Внутри нее все доступно на запись.</p>
3
<p>Для примеров этого урока мы создали каталог test в домашней директории. То есть все демонстрируемые команды выполняются в директории по адресу: ~/test.</p>
3
<p>Для примеров этого урока мы создали каталог test в домашней директории. То есть все демонстрируемые команды выполняются в директории по адресу: ~/test.</p>
4
<h2>Основные команды</h2>
4
<h2>Основные команды</h2>
5
<p>Для создания файлов принято использовать утилиту touch. Основная задача этой утилиты - поменять время последнего доступа к файлу, но она обладает побочным эффектом.</p>
5
<p>Для создания файлов принято использовать утилиту touch. Основная задача этой утилиты - поменять время последнего доступа к файлу, но она обладает побочным эффектом.</p>
6
<p>Если файла не существует, то он будет создан - именно поэтому ее используют для создания файлов, хотя это не основное предназначение:</p>
6
<p>Если файла не существует, то он будет создан - именно поэтому ее используют для создания файлов, хотя это не основное предназначение:</p>
7
<p>Удалить файл можно командой rm (сокращение от<em>remove</em>):</p>
7
<p>Удалить файл можно командой rm (сокращение от<em>remove</em>):</p>
8
<p>В *nix-системах не существует понятия "переименовать файл". Переименование всегда равносильно перемещению, которое выполняется командой mv (<em>move</em>):</p>
8
<p>В *nix-системах не существует понятия "переименовать файл". Переименование всегда равносильно перемещению, которое выполняется командой mv (<em>move</em>):</p>
9
<p>Для копирования файлов и директорий используется утилита cp (<em>copy</em>).</p>
9
<p>Для копирования файлов и директорий используется утилита cp (<em>copy</em>).</p>
10
-
<p>У этой утилит�� два аргумента:</p>
10
+
<p>У этой утилиты два аргумента:</p>
11
<ul><li>Имя источника (откуда копируем)</li>
11
<ul><li>Имя источника (откуда копируем)</li>
12
<li>Имя приемника (куда копируем)</li>
12
<li>Имя приемника (куда копируем)</li>
13
</ul><p>Посмотрим, как эта утилита работает на практике:</p>
13
</ul><p>Посмотрим, как эта утилита работает на практике:</p>
14
<p>Для копирования директории нужно добавить флаг -r (<em>recursive</em>).</p>
14
<p>Для копирования директории нужно добавить флаг -r (<em>recursive</em>).</p>
15
<p>Все эти и последующие утилиты работают с файлами и директориями, расположенными в любом месте файловой системы. Поэтому вы всегда можете передать любой путь: touch /tmp/tempfile.</p>
15
<p>Все эти и последующие утилиты работают с файлами и директориями, расположенными в любом месте файловой системы. Поэтому вы всегда можете передать любой путь: touch /tmp/tempfile.</p>
16
<p>Утилиты для работы с директориями частично отличаются. Создание директории выполняется командой mkdir (<em>make directory</em>):</p>
16
<p>Утилиты для работы с директориями частично отличаются. Создание директории выполняется командой mkdir (<em>make directory</em>):</p>
17
<p>По умолчанию эта команда не создает вложенных директорий:</p>
17
<p>По умолчанию эта команда не создает вложенных директорий:</p>
18
<p>В такой ситуации придется создавать каждую директорию отдельно. Но есть и другой способ - воспользоваться флагом -p (--parents), который создает директории рекурсивно:</p>
18
<p>В такой ситуации придется создавать каждую директорию отдельно. Но есть и другой способ - воспользоваться флагом -p (--parents), который создает директории рекурсивно:</p>
19
<p>Удаление директорий выполняется той же командой, что и удаление файлов, но без флагов оно выдает предупреждение:</p>
19
<p>Удаление директорий выполняется той же командой, что и удаление файлов, но без флагов оно выдает предупреждение:</p>
20
<p>Чтобы не было ошибки, нужно добавить флаг -r (<em>recursion</em>). Он включает режим рекурсивного удаления содержимого директорий. Другими словами, идет просмотр содержимого во всех вложенных директориях и поддиректориях до самого конца:</p>
20
<p>Чтобы не было ошибки, нужно добавить флаг -r (<em>recursion</em>). Он включает режим рекурсивного удаления содержимого директорий. Другими словами, идет просмотр содержимого во всех вложенных директориях и поддиректориях до самого конца:</p>
21
<p>Теперь представим такую ситуацию: внутри директории содержатся файлы или директории с ограниченными правами доступа, например, доступные только для чтения. В таком случае команда rm начнет задавать вопрос по каждому из них, нужно ли удалять файл.</p>
21
<p>Теперь представим такую ситуацию: внутри директории содержатся файлы или директории с ограниченными правами доступа, например, доступные только для чтения. В таком случае команда rm начнет задавать вопрос по каждому из них, нужно ли удалять файл.</p>
22
-
<p>Если вы точно уверены, что удалить нужно все, добавьте флаг -f (--force). Этот флаг позволяет игнорировать несуществующие файлы и не запрашивать подтверждение на удаление. В таком случае rm удалит всю директорию без вопросов:</p>
22
+
<p>Если вы точно уверены, что удалить нужно все, добавьте флаг -f (--force). Этот флаг позволяет игнорировать несуществующие файлы и не запрашивать подтверждение на удаление. Без -f утилита будет спрашивать подтверждение, а с -f удалит всю директорию без вопросов:</p>
23
23