Работа с файлами в командной строке Mac OS X

Mac OS X, Tips & Tricks

Работа с файлами в командной строке Mac OS XДля того чтобы полноценно работать с файлами и директориями в командной строке, нам необходимо уметь их создавать, перемещать, копировать и удалять. Для каждого из этих действий есть соответствующая команда.

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

Для лучшего понимания этой статьи желательно ознакомиться со следующими материалами:

Работа с файлами в командной строке

Создание файла

Для того чтобы создать файл, можно использовать команду touch. На самом деле, предназначение данной команды — изменение даты последнего доступа к файлу и даты последнего изменения файла.

Выполнение команды без параметров touch путь_до_файла/file обновит у файла дату последнего доступа (last access time) и дату последнего редактирования (last modification time). Если же такого файла не существует, то будет создан пустой файл с указанным в команде именем.

Чтобы обновить только дату доступа, надо использовать параметр ‑a, чтобы только дату изменения — параметр ‑m. Также можно установить не текущую, а произвольную дату, используя параметр ‑t, и указав после него дату в формате [[CC]YY]MMDDhhmm[.SS], например, 201203201359.11, что соответствует 2012 году 03 месяцу 20 числу 13 часам 59 минутам 11 секундам.

Создание директории

Для создания директорий существует команда mkdir (от англ. make directory).

Синтаксис: mkdir имя_директории ..., где имя директории — это путь и имя создаваемой директории. Можно указать несколько директорий через пробел.

Если в пути до создаваемой директории присутствуют несуществующие директории, то директория создана не будет, а будет выведено сообщение об ошибке. Для того чтобы создать несколько вложенных друг в друга директорий, используется параметр ‑p. Например, команда:

mkdir -p folder1/folder2/folder3

создаст все три директории folder1, folder2, folder3 в случае, если они не существуют.

По умолчанию директории создаются с набором прав доступа 755; чтобы создать директорию с иным набором прав, используется параметр ‑m права_доступа, например так: mkdir ‑m 750 folder.

Перемещение и изменение имени файла или директории

Имена файлов или директорий хранятся не в самих этих файлах, а являются записями в таблице, которая содержит список с именами файлов и директорий, находящихся внутри этой директории. Таким образом, при переименовании файла или его перемещении в другую директорию выполняется одна и та же операция — редактирование таблицы директории со списком файлов. Поэтому для перемещения и изменения имени файла используется одна и та же команда mv (от англ. move).

Синтаксис команды: mv исходный_файл новый_файл, где исходный файл — это путь до файла или директории и имя файла или директории, которые вы хотите переместить, а новый файл — это путь до места назначения, куда необходимо переместить файл или директорию, и новое имя для перемещаемого файла или директории.

mv /Users/ixrevo/Downloads/hello.txt /Users/ixrevo/Desktop/hi.txt в этом примере мы перемещаем файл hello.txt из директории /Users/ixrevo/Downloads/ на рабочий стол /Users/ixrevo/Desktop/, а имя перемещённого файла будет hi.txt (содержимое файла останется без изменений).

Скриншот с примером перемещения файла в командной строке

Учитывая что нашей текущей директорией была /Users/ixrevo/, можно было бы указать относительный путь к файлу:
cp Downloads/hello.txt Desktop/hi.txt

Подробнее о текущей директории вы можете прочитать в статье «Навигация по файловой системе в командной строке», а про относительные и абсолютные пути — в статье «Как устроена структура файловой системы Mac OS X».

Также можно переименовать файл или директорию, не перемещая:

mv hello.txt hi.txt

Или переместить, не переименовывая:

mv /Users/ixrevo/Downloads/hello.txt /Users/ixrevo/Desktop/

Для чего необходимо указать только директорию, куда перемещать файл или директорию, без указания нового имени (ну или указать старое имя).

Ещё один способ использования команды mv удобен для перемещения нескольких файлов или директорий: mv исходный_файл_1 исходный_файл_2 ... директория, где исходный файл_1, исходный файл_2 и т.д. — пути и имена файлов или директорий, которые необходимо переместить, а директория — это путь до директории, куда необходимо переместить файлы, указанные ранее.

Копирование файла

Для копирования файлов и директорий существует команда cp, что является сокращением от copy.

Синтаксис команды: cp исходный_файл новый_файл, где исходный файл — это путь и имя файла, который необходимо скопировать, а новый файл — это путь до создаваемой копии файла и имя этой копии.

Например, выполнив команду:

cp /Users/ixrevo/Downloads/hello.txt /Users/ixrevo/Desktop/hi.txt

Мы скопируем файл hello.txt из директории /Users/ixrevo/Downloads/ на рабочий стол /Users/ixrevo/Desktop/, а имя у копии файла будет hi.txt.

Команда cp также позволяет копировать несколько файлов:

cp исходный_файл_1 исходный_файл_2 ... директория

Исходный файл_1, исходный файл_2 и т.д. — пути до файлов и имена файлов, которые необходимо скопировать, а директория — это путь до директории, куда вы хотите скопировать файлы, указанные ранее.

Пример копирования файлов в командной строке

Копирование директории

Для копирования директорий команда cp используется с параметром ‑R или ‑r (от англ. recursive). Команда cp, выполненная с этим параметром, если в качестве первого аргумента была указана директория, скопирует директорию и всё её содержимое, то есть все вложенные директории и файлы.

Синтаксис команды в данном случае выглядит следующим образом:

cp -r копируемая_директория место_назначения

При попытке скопировать директорию без параметра ‑r, директория скопирована не будет, а будет выведено сообщение об ошибке.

Удаление файла

Для того чтобы удалять файлы, используется команда rm (от англ. remove). Синтаксис: rm файл ..., где файл — это путь и имя файла, который необходимо удалить. Также можно указать несколько файлов для удаления.

Удаление директории

Существует несколько способов удаления директорий. Например, можно использовать команду

rmdir директория ...

директория — это путь и имя директории, которую необходимо удалить. Также можно указать несколько директорий для удаления.

Если директория не пустая, то есть содержит вложенные файлы и/или папки, то команда rmdir не сможет удалить эту директорию и выдаст сообщение об ошибке.

Аналогично команде rmdir действует команда rm с параметром ‑d.

Конечно, удалять каждый раз сначала содержимое директории, а потом её саму не очень интересно, но, к счастью, есть способ удалить директорию вместе со всем её содержимым. Для этого выполните команду rm с параметром ‑R или ‑r, и тогда все файлы и директории, указанные в команде rm ‑r директория ..., будут удалены вместе со всеми вложенными директориями. Но будьте осторожны, не удалите этой командой что-нибудь нужное, особенно учитывая, что в командной строке нет корзины и файлы с директориями удаляются необратимо.

Пример удаления директории в командной строке

Полезные ссылки

Ссылки на руководства на русском языке для рассмотренных в статье команд:

Также вы всегда можете открыть руководство к любой команде прямо у вас в командной строке, выполнив: man имя_команды. Для выхода из руководства нажмите q.

3 комментария к записи “Работа с файлами в командной строке Mac OS X”

  1. Хорошая статья, автору спасибо! Легко, просто и понятно. До сего момента с командной строкой не работал. Но тем ене менее разобрался со всем что написано.

  2. Спасибо. Освежил память. Очень приятный стиль изложения материала.
    Статья оч. полезная как памятка. Еще раз спасибо.

Добавить комментарий