1. Утиліти обробки файлів

У даному контексті під обробкою файлів припускається копіювання, переміщення і видалення файлів. Пізніше ми розглянемо способи зміни атрибутів файлів (власник, права доступу).

1.1. mkdir, touch: Створення порожніх каталогів і файлів

Команда mkdir (MaKe DIRectory - створити каталог) використовується для створення каталогів. Її синтаксис досить простий:

mkdir [опції] <каталог> [каталог ...]

Тільки на одну опцію є сенс звернути увагу: опція -p. Вона виконує дві дії:

  1. створює батьківські каталоги, якщо вони не існували до цього. Без цієї опції mkdir просто викличе збій через відсутність заявлених каталогів;

  2. мовчки завершить роботу, якщо каталог, який ви хотіли створити, вже існує. Для порівняння, якщо ви не зазначили опцію -p, mkdir поверне повідомлення про помилку через те, що каталог вже існує.

Ось кілька прикладів:

  • mkdir foo: створює каталог foo у поточному каталозі;

  • mkdir -p images/misc docs: створює каталог misc в каталозі images. Спочатку створюється останній каталог, якщо такий не існує (-p); також створюється каталог з ім'ям docs у поточному каталозі.

Спочатку команда touch призначалася не для створення файлів, а для відновлення часу останнього доступу до файлу і його зміни[12]. Проте touch створить перелічені порожні файли, якщо вони не існують. Її синтаксис:

touch [опції] файл [файл...]

Таким чином, виконання команди:

touch file1 images/file2

створить у поточному каталозі порожній файл з ім'ям file1 і порожній файл file2 в каталозі images, якщо раніше ці файли не існували.

1.2. rm: Видалення файлів чи каталогів

Команда rm (ReMove - видалити) є аналогом команд DOS del і deltree, і має додаткові опції. Її синтаксис має вигляд:

rm [опції] <файл|каталог> [файл|каталог...]

Опції включають:

  • -r або -R: рекурсивне видалення. Ця опція є обов'язковою для видалення каталогу, порожнього чи ні. Проте для видалення порожніх каталогів ви також можете скористатися командою rmdir.

  • -i: запит на підтвердження перед кожним видаленням. Зверніть увагу, що по умовчанням в Mandriva Linux, rm з міркувань безпеки - це аліас команди rm -i (схожі аліаси існують для cp і mv). Проте ваша думка щодо корисності цих аліасів може змінитися. Якщо ви хочете видалити їх, ви можете створити порожній файл ~/.alias, який заборонить використання загальносистемних аліасів. Або ж ви можете відредагувати свій файл ~/.bashrc для відключення деяких загальносистемних аліасів шляхом додавання цього рядка: unalias rm cp mv

  • -f, як протилежність -i, примусово видаляє файли або каталоги, навіть якщо користувач немає доступу для запису в файли[13].

Кілька прикладів:

  • rm -i images/*.jpg file1: видаляє всі файли з іменами, які закінчуються на .jpg, в каталозі images і видаляє file1 у поточному каталозі з підтвердженням на видалення кожного з файлів. Відповідайте y для підтвердження видалення і n для скасування.

  • rm -Rf images/misc/ file*: видаляє без підтвердження весь каталог misc/ в каталозі images/ разом зі всіма файлами у поточному каталозі, чиї імена починаються з file.

[Застереження]Застереження

При використанні rm файли віддаляються безповоротно. Способу для їх відновлення не існує! (Ну, взагалі, для цього все-таки є кілька способів, але це нетривіальне завдання і зазвичай використовується попередження видалення файлів.) Використовуйте опцію -i, щоб переконатися тому, що ви не видалите помилково щось важливе.

1.3. mv: Переміщення чи видалення файлів

Синтаксис команди mv (MoVe - перемістити) наступний:

mv [опції] <файл|каталог> [файл|каталог ...] <призначення>

Зверніть увагу, що коли ви переміщаєте кілька файлів, призначенням має бути каталог. Щоб перейменувати файл, просто перемістите його в файл з новим ім'ям.

Деякі опції:

  • -f: примусове виконання операції. Якщо перезаписується існуючий файл, попередження не виводяться.

  • -i: протилежна дія. У користувача питається підтвердження перед перезаписом існуючого файла.

  • -v: докладний режим, повідомляє про всіх зміни і дії.

Кілька прикладів:

  • mv -i /tmp/pics/*.png .: переміщає всі файли з каталогу /tmp/pics/, чиї імена закінчуються на .png, у поточний каталог (.), але запитує підтвердження перед перезаписом в ньому будь-яких файлів.

  • mv foo bar: перейменовує файл foo в bar. Якщо каталог bar вже існував, результатом виконання цієї команди буде переміщення файла foo або каталогу (самого каталогу плюс всіх файлів і каталогів в ньому, рекурсивно) до каталогу bar.

  • mv -vf file* images/ trash/: переміщає без запиту підтвердження всі файли з поточного каталогу з іменами, що починаються з file, разом із каталогом images/ до каталогу trash/, і показує порядок виконання кожної операції.

1.4. cp: Копіювання файлів і каталогів

Команда cp (CoPy - копіювати) є аналогом команд DOS copy і xcopy, і має додаткові опції. Її синтаксис наступний:

cp [опції] <файл|каталог> [файл|каталог ...] <призначення>

Ось найбільш загальні опції cp:

  • -R: рекурсивне копіювання; обов'язкове для копіювання каталогу, навіть якщо він порожній.

  • -i: запит на підтвердження перед перезаписом будь-яких файлів, які можуть бути перезаписані.

  • -f: протилежність -i, заміняє будь-які існуючі файли без запиту підтвердження.

  • -v: докладний режим, повідомляє про всі дії, виконуваних cp.

Кілька прикладів:

  • cp -i /timages/* images/: копіює всі файли з каталогу /timages/ до каталогу images/, який знаходиться к поточному каталозі. Запитується підтвердження, якщо має бути перезаписаний файл.

  • cp -vR docs/ /shared/mp3s/* mystuff/: копіює весь каталог docs, плюс всі файли з каталогу /shared/mp3s до каталогу mystuff.

  • cp foo bar: робить копію файла foo у файл з ім'ям bar у поточному каталозі.



[12] В UNIX® для всіх файлів існують три різних мітки часу: дата останнього доступу до файлу (atime), тобто дата, коли востаннє файл відкривався для читання або запису; дата зміни атрибутів inode (ctime); і, зрештою, дата останньої зміни вмісту файла (mtime).

[13] Для користувача досить мати доступ для запису в каталог, щоб він міг видаляти файли в ньому, навіть якщо він не є власником файлів.