Выбрать главу

♦ :w! <имя> сохранить пол новым именем, переписав существующий файл;

♦ :q выйти;

♦ :q! принудительно выйти без сохранения;

♦ :wq сохранить и выйти.

Разное полезное:

♦ N u отменить последние N изменений;

♦ N Ctrl+r вернуть последние N отмененных изменений;

♦ U отменить изменения в последней строке;

♦ N r <символ> заменить N следующих символов на <символ>;

♦ N >> добавить отступ (Tab) в N следующих строк;

♦ N << удалить один отступ (Tab) из N следующих строк;

♦ :sh временно выйти в оболочку (вернуться — exit);

♦ :!<команда> выполнить команду оболочки.

Поиск файлов

Быстрый поиск имени программы можно выполнить прямо из командной строки: для этого введите первые буквы нужной вам команды и нажмите <Tab>. Если введенные вами буквы однозначно определяют команду или исполняемый файл, то ее имя появится в командной строке. Эта функция называется автозаполнением командной строки. Если не появилось ничего, нажмите <Tab> еще раз для вывода списка всех доступных команд, начинающихся со введенных букв. Если таких команд окажется больше сотни, у вас попросят подтверждения того, что вы действительно хотите увидеть их все.

В разных каталогах может оказаться несколько исполняемых файлов с одинаковыми именами. Какой из них будет исполнен? На этот вопрос отвечает команда which. Она просматривает каталоги, перечисленные в переменной окружения PATH, в поисках исполняемого файла с указанным именем, и выводит абсолютное имя первого встреченного из них.

Команда whereis ищет не только исполняемый файл, но и его справочные страницы и исходный код.

Команда locate ищет файл по образцу имени, опираясь на свою базу данных о файловой системе. Ее вариант с повышенной безопасностью slocate сохраняет данные о правах доступа к файлам, так что пользователь не увидит тех файлов, на которые у него нет прав. В дистрибутиве Fedora Core 3 команда locate представляет собой символическую ссылку на утилиту slocate.

Команда find ищет файл по его атрибутам в указанном каталоге и его подкаталогах на заданную глубину. Например, при установке операционной системы я отказался устанавливать файловый менеджер Midnight Commander, а теперь он мне понадобился. Для каждого из 4 компакт- дисков дистрибутива запускаю команду поиска по шаблону имени «mc*», то есть всех файлов, имена которых начинаются с mc:

$find /media -name mc*

/media/cdrecorder/Fedora/RPMS/mc-4.6.1-0.8.i386.rpm

В итоге на третьем диске найден пакет RPM. Об установке программного обеспечения из пакетов RPM будет сказано в главе 7.

Изменение прав доступа к файлу

Как многопользовательская операционная система, ОС Linux содержит механизм разграничения доступа к данным, позволяющий как защитить данные одного пользователя от нежелательного вмешательства других, так и разрешить другим доступ к этим данным для совместной работы.

Как уже сказано, любой ресурс компьютера под управлением ОС Linux представляется как файл, поэтому мы будем говорить только о правах доступа к файлу.

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

Первым владельцем файла становится его создатель. Дальше файл можно передать другому владельцу или в другую группу командой

chown [ключи] <новый_пользователь>[:новая_группа] <файл>

или

chgrp [ключи] <новая_группа> <файл>

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

Набор прав доступа состоит из прав на чтение, запись и исполнение файла. В символьном представлении он выглядит как строка «rwx», где вместо любого символа может стоять дефис. Буква означает наличие права (r — чтение, w — запись, x — исполнение), дефис — его отсутствие.

Очевидно, что эти три бита могут быть записаны еще и как восьмеричное число. Так, права доступа r-x (чтение и исполнение без записи) понимаются как три двоичные цифры 101 или как восьмеричная цифра 5. Численное представление прав доступа называется абсолютным, или двоичной маской.

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

<права_владельца><права_группы><права_остальных>

В абсолютном представлении права владельца являются старшим разрядом восьмеричного числа, права группы — вторым и права остальных — третьим. Так, права rwxr-x--x выглядят как число 111 101 001, или 751.

Команда изменения прав доступа chmod понимает как абсолютное, так и символьное указание прав.

Назначим файлу /home/den/README права rw-r-----, то есть разрешим себе чтение и запись, группе только чтение, остальным пользователям — ничего:

$cd ~ # переход в свой домашний каталог

$chmod 640 README # 110 100 000 == 640

$ls -l README

-rw-r----- 1 den users 0 Feb 14 19:08 /home/den/README

В символьном представлении можно явно указывать, кому какое право мы хотим добавить, отнять или присвоить. Добавим право на исполнение файла README группе и всем остальным:

$chmod go+x README

$ls -l README

-rw-r-x--x 1 den users 0 Feb 14 19:08 /home/den/README

Формат символьного режима:

chmod <категория><действие><набор_прав> <файл>

Возможные значения аргументов команды представлены в таблице 2.3.

Аргументы команды chmod в символьном режиме Таблица 2.3

Аргумент Значение
Категория u Владелец
g Группа владельца
o Прочие
a Все пользователи, то есть «a» эквивалентно «ugo»
Действие + Добавить набор прав
- Отменить набор прав
= Назначить набор прав
Право r Право на чтение
w Право на запись
x Право на исполнение
s Право смены идентификатора пользователя или группы
t Бит прилипчивости (sticky-бит)
u Такие же права, как у владельца
g Такие же права, как у группы
o Такие же права, как у прочих