Глава 3. Введение в Командную Строку

В главе Глава 1. Базовые Концепции Системы UNIX вы увидели как запускать shell. В данной главе мы покажем вам как работать с ней.

Главная ценность shell это множество существующих утилит: их тысячи и каждая выполняет свою отдельную задачу. Мы рассмотрим только их небольшое число. Одно из величайших преимуществ UNIX это умение комбинировать эти утилиты, что мы увидим позже.

Утилиты Обработки Файлов

В данном контексте обработка файлов обозначает их копирование, перемещение и удаление. Позже мы рассмотрим способы изменения их атрибутов (владелец, права).

mkdir, touch: Создание Пустых Каталогов и Файлов

mkdir (MaKe DIRectory (создать каталог)) используется для создания каталогов. Ее синтаксис простой:

mkdir [options] <directory> [directory ...]

Только один параметр ничего не обозначает: -p . Он делает две вещи:

  1. с ним команда будет создавать родительские каталоги, если они не существовали ранее. Без этого параметра mkdir просто может упасть, пожаловавшись, что упомянутые родительские каталоги не существуют;

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

Вот несколько примеров:

  • mkdir foo: создает каталог foo в текущем каталоге;

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

Изначально, команда touch не предназначалась для создания файлов, а только для обновления доступа к файлу и изменения времени создания файла [3]. Однако, touch будет создавать пустые файлы, если их не существовало ранее. Синтаксис такой:

touch [options] file [file...]

Итак, запуск команды:

touch file1 images/file2

создаст пустой файл с именем file1 в текущем каталоге и пустой файл file2 в каталоге images, если файлы еще не существовали до этого.

rm: Удаление Файлов и Каталогов

Команда rm (ReMove) заменяет команды DOS del и deltree, и имеет много дополнительных параметров . Ее синтаксис следующий:

rm [options] <file|directory> [file|directory...]

Опции включают:

  • -r, или -R: удаляет рекурсивно. Этот параметр обязательный для удаления каталогов, пустых или нет. Однако вы можете также использовать rmdir для удаления пустых каталогов.

  • -i: запросить подтверждение перед каждым удалением. Обратите внимание, что по умолчанию в Mandrake Linux, rm является alias (алиасом) команды rm -i, в целях безопасности (подобные алиасы есть для команд cp и mv). Вы можете изменить свое мнение относительно полезности этих алиасов. Если вы захотите удалить их, отредактируйте ваш файл ~/.bashrc и добавьте строку: unalias rm cp mv.

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

Несколько примеров:

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

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

Внимание

rm удаляет файлы безвозвратно. Не существует способа их восстановить! Не пренебрегайте использовать параметр -i, чтобы не удалить что-либо по ошибке.

mv: Перемещение или Переименование Файлов

Синтаксис команды mv (MoVe) следующий:

mv [options] <file|directory> [file|directory ...] <destination>

Некоторые параметры:

  • -f: форсировать операцию –, никаких предупреждений, если существующие файлы перезаписываются.

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

  • -v: verbose (подробный) режим, сообщает о всех изменениях или активности.

Несколько примеров:

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

  • mv foo bar: переименовывает файл foo в bar. Если уже существует каталог bar, эффектом этой команды будет перенос всего каталога foo (самого каталога и всех его файлов и каталогов в нем рекурсивно) в каталог bar .

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

cp: Копирование файлов и каталогов

cp (CoPy) замещает команды DOS copy и xcopy и имеет множество дополнительных параметров. Ее синтаксис:

cp [options] <file|directory> [file|directory ...] <destination>

cp имеет много параметров. Вот основные из них:

  • -R: рекурсивное копирование; обязательно для копирования каталогов, даже пустых.

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

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

  • -v: подробный (verbose) режим, отображает все действия, производимые cp.

Несколько примеров:

  • cp -i /tmp/images/* images/: копирует все файлы в каталоге /tmp/images/ в каталог images/, расположенный в текущем каталоге. Запрашивает подтверждение, если файл должен быть перезаписан.

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

  • cp foo bar: делает копию файла foo с именем bar в текущем каталоге.



[3] В UNIX есть три различных временных метки для каждого файла: время последнего обращения к файлу (atime), то есть последний раз когда файл открывался на чтение или запись; последняя дата изменения атрибутов inode (mtime); и время, когда изменялось последний раз содержимое файла. (ctime).

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



Наш баннер
Вы можете установить наш баннер на своем сайте или блоге, скопировав этот код:
RSS новости