16540

СОЗДАНИЕ УЧЕТНЫХ ЗАПИСЕЙ ПОЛЬЗОВАТЕЛЕЙ И ГРУПП В СРЕДЕ ОС LINUX. ОРГАНИЗАЦИЯ РАБОЧЕЙ СРЕДЫ ПОЛЬЗОВАТЕЛЯ

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторная работа 4. Создание учетных записей пользователей и групп в среде ОС Linux. Организация рабочей среды пользователя Войдите в систему. Используя Центр управления создайте своего пользователя. Перейдите в первую текстовую консоль и зарегистрируйтесь...

Русский

2013-06-22

381.5 KB

8 чел.

Лабораторная работа 4. Создание учетных записей пользователей и групп в среде ОС Linux. Организация рабочей среды пользователя

  1.  Войдите в систему.
  2.  Используя Центр управления, создайте своего пользователя.
  3.  Перейдите в первую текстовую консоль и зарегистрируйтесь пользователем root. Просмотрите файл /etc/passwd. Убедитесь, что созданный вами пользователь появился.

Примечание.

Для того чтобы просмотреть файл /etc/passwd, выполните команду:

cat /etc/passwd |less

cat /etc/passwd   – выводит файл на экран, а команда less осуществляет  поэкранную разбивку вывода.

  1.  Создайте пользователя с помощью команды useradd.
  2.  Задайте созданному пользователю пароль, выполнив команду passwd.
  3.  Просмотрите файл /etc/passwd. Проконтролируйте создание бюджета (учетной записи) пользователя.
  4.  Средствами текстового редактора vi введите в файл /etc/passwd информацию о новом пользователе. Проверьте правильность его создания средствами Центра управления.
  5.  Проверьте наличие файла /etc/shadow  в системе. Какова его структура?
  6.  Временно отключите запись некоторого пользователя, посмотрите, какие изменения произошли в файлах /etc/passwd  и /etc/shadow.
  7.   Посмотрите, каким образом можно настроить среду пользователя, задействовав Центр управления (оформление рабочего стола, заставку, количество рабочих столов в вашем распоряжении). Для того Для того чтобы убедиться в работоспособности рабочих столов, сделайте разные обои на каждом из этих столов.
  8.   Просмотрите содержимое домашних каталогов пользователей. Создайте с помощью редактора vi какой–либо текстовый файл в домашнем каталоге пользователя. Изучите, используя прил. 3, основные принципы работы в текстовом редакторе vi.
  9.   Какие группы появились в системе после создания вами пользователей?
  10.   Создайте новые проектные группы всеми известными вам методами (окно Центр управления, команда groupadd). С помощью редактора vi откорректируйте запись одной из созданных вами групп, включив в нее нового пользователя.
  11.   Просмотрите содержимое файлов /etc/lilo.conf и /etc/inittab. Зачем в системе нужны эти файлы?
  12.   Посмотрите, что содержится в каталоге /etc/rc.d? Как используется этот каталог?
  13.   С помощью Центра управления измените выбор системы, загружаемой по умолчанию. Какие еще возможности изменения параметров загрузки предоставляет окно Загрузка Центра управления?
  14.   Просмотрите все процессы, запущенные в системе. Выведите различную информацию о запущенных процессах. Измените nice–число некоторого несистемного процесса, остановите некоторый пользовательский процесс.


Лабораторная работа  5. Работа с файловыми системами ОС Linux

  1.  Войти в систему под именем пользователя User1.
  2.  Создать в домашнем каталоге пользователя с помощью редактора vi некоторый текстовый файл.
  3.  Посмотрите, какие разрешения получил данный файл после создания. Сделайте это двумя способами (через графический интерфейс и из командной строки). Проверьте действенность установок.
  4.  Просмотрите права доступа на основные системные файлы: /etc/lilo.conf, /etc/inittab, /etc/passwd и т.д. В чем отличие прав доступа файла /usr/bin/passwd от других системных файлов? С какой целью установлены другие права доступа?
  5.  Создайте подкаталог домашнего каталога пользователя user1. Дайте право выполнения и запрет на чтение для владельца. Какой эффект вызвали эти действия? Создайте файл в этом каталоге. Виден ли этот файл?
  6.  Зайдите в каталоги /sbin   и  /bin, определите, какого типа файлы хранятся в этих каталогах.
  7.  Зайдите в каталог /dev. Какого типа файлы располагаются в этом каталоге?
  8.  Создайте в домашнем каталоге жесткую и символическую ссылки.
  9.  Приведите примеры работы с командой смены прав доступа к файлу в обеих формах.
  10.   Изучите работу основных команд работы с каталогами (cd, pwd, ls, mkdir).
  11.   Изучите работу основных команд работы с файлами (описание основных команд приведено в прил. 4):
    •  конкатенацию и вывод файлов на экран;
      •  копирование и перемещение файлов;
      •  удаление файлов;
      •  поиск файлов: по имени, по некоторому шаблону, по типу (например, найти файлы всех символьных устройств), по сложному критерию поиска;
      •  выполнение некоторого действия с найденными файлами;
      •  сортировку информации в файле;
      •  поиск некоторой информации в файле.
  12.   Создайте небольшой командный файл. Докажите его работоспособность.
  13.   Изучите приемы создания архивов и сжатых файлов в ОС Linux (см. прил. 5).


Приложение 3

Текстовый редактор vi

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

Редактор vi имеет более 100 команд. В этом разделе описаны основные команды, которые позволят вам использовать vi просто, но эффективно. Особое внимание будет уделено выполнению задач, позволяющих:

  •  начать работу с редактором vi, создать текст, исправить ошибки, записать текст в файл и завершить работу;
  •  переместить текст внутри файла;
  •  разбить и слить текст;
  •  использовать специальные команды и сокращения;
  •  использовать команды построчного редактора, доступные внутри vi;
  •  временно вернуться в shell, Для того чтобы выполнить команды shell;
  •  редактировать несколько файлов в одной сессии.

 Режимы редактора

Редактор vi функционирует в 3 режимах:

  •  режиме редактирования – этот режим соответствует традиционному режиму работы текстовых редакторов и предназначен для ввода и модификации текста; для перехода в командный режим нужно нажать <Esc>;
  •  командном режиме – в этом режиме можно вводить команды, предназначенные для манипулирования текстом или выполнения других действий. Название большинства команд состоит из одного символа; в командном режиме можно перемещаться по файлу, используя клавиши управления курсором;
  •  расширенном режиме – в этом режиме выполняются расширенные операции, часто связанные с обращением к внешним файлам. Именно здесь проявляется гибкость редактора vi, т.к. в расширенном режиме можно запускать внешние программы для выполнения различных операций над файлами (проверка орфографии, форматирование исходного текста программы и т.д.) В этом режиме осуществляется сохранение файла. Для перехода в расширенный режим нужно в командном режиме ввести двоеточие, а затем – название расширенной команды.

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

Для того чтобы создать файл, введите:

vi filename

Когда вы введете команду vi с именем файла, vi очистит экран и отобразит окно, где вы можете вводить и редактировать текст.

Создание текста в режиме Append (редактирования)

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

  •  ввести a, Для того чтобы перейти к режиму ввода (не нажимая клавишу RETURN). Теперь вы можете добавить текст к файлу (файл не печатается на экране);
  •  ввести нужный текст;
  •  перейти на новую строку и нажать клавишу RETURN.

Выход из режима Append

После того как вы закончили создавать текст, нажмите клавишу <ESC>, Для того чтобы из режима ввода перейти к командному режиму. Теперь вы можете редактировать текст, который создали или записали.

Если вы нажмете клавишу <ESC> и услышите звуковой сигнал, то это значит, что вы уже перешли в командный режим. Нажатие клавиши <ESC> в то время, когда вы находитесь в командном режиме, никак не влияет на текст в файле, даже если вы нажмете ее несколько раз.

Редактирование текста в командном режиме

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

Перемещение курсора

Клавиши перемещения курсора позволяют вам перемещать курсор по файлу. Курсор можно переместить с помощью следующих клавиш:
h – перемещает курсор на один символ влево;
j – перемещает курсор вниз на одну строку;
k – перемещает курсор вверх на одну строку;
l – перемещает курсор на один символ вправо;

Команды j и k сохраняют позицию курсора на строке. Например, если курсор находился на 17-м символе слева, то когда вы введете команду j или k,  он переместится на новую строку, но будет находиться на 17-м символе. Если символов в новой строке меньше, то курсор переместитcя на последний символ строки.

Примечание. Клавиши со стрелками можно использовать вместо клавиш <h>, <j>, <k>, <l> при необходимости перемещения на 1 символ.

Если перед <h>, <j>, <k>, <l> поставить число, то курсор передвинется на количество строк/символов, равных числу. Например, если надо передвинуть курсор на 4 строки вверх, введите <4k>. Если вы не можете продвинуться дальше в этом направлении, то vi подаст звуковой сигнал и курсор останется на прежнем месте.

Для того чтобы переместить курсор на 35 строк вниз, введите:

35j

Дополнительно к клавишам <h> и <l> можно использовать клавиши    <SPACEBAR> и <BACKSPACE> для перемещения курсора вправо или влево.
<SPACEBAR> – переместить курсор на один символ вправо;
<nSPACEBAR> – переместить курсор на n символов вправо;
<BACKSPACE> – переместить курсор на один символ влево;
<nBACKSPACE> – переместить курсор на n символов влево/

Удаление текста

Если вы хотите удалить символ, переместите курсор к этому символу и нажмите x (для удаления одного символа можно использовать del). Перед x может стоять число, которое говорит о том, сколько символов подряд нужно удалить. Редактор vi так корректирует строку, что на месте удаленного символа не остается пустого промежутка или на месте удаленной строки – пустой    строки.

Добавление текста

В редакторе vi существует две команды для добавления текста: insert(i) и append(a). Для того чтобы добавить текст с помощью команды i, переместите курсор в нужное место с помощью клавишей <h>, <j>, <k>, <l>. Затем нажмите i и введите текст. Введенный вами текст появится на экране слева от символа, на который указывает курсор. Этот символ и все остальные справа от курсора будут передвинуты вправо, Для того чтобы освободить место для нового текста. Редактор vi будет хранить символы, вводимые вами, до тех пор, пока вы не нажмете клавишу <ESCAPE>. Если необходимо, передвинутые символы будут перенесены на следующую строку.

Таким же образом вы можете использовать команду a. Отличие состоит в том, что новый текст появится справа от символа, к которому подведен курсор.

Завершение работы c vi

Когда вы закончите работу с текстом, необходимо записать содержимое буфера в файл и возвратить управление shell. Для этого нажмите клавишу <SHIFT> и дважды нажмите <Z(ZZ)>. Редактор сохранил имя того файла, который вы указали в начале сеанса редактирования, и в этот файл перепишет текст из буфера. Обратите внимание, что внизу экрана дается имя файла и количество строк и символов в файле. Затем shell выдает вам подсказку.

Вы также можете использовать команды :w и :q редактора vi для записи файла и окончания работы с редактором. Команды редактора начинаются с двоеточия (:) и появляются в последней строке экрана (расширенный режим работы редактора). Команда :w записывает буфер в файл. Команда :q завершает работу редактора и возвращает управление shell. Вы можете ввести эти команды раздельно или в одной команде :wq. 

В табл. П.3.1 приведены основные команды, которые вам необходимы для вызова и использования редактора vi.

Таблица П.3.1

Основные команды vi

Команды

Выполняемые функции

a

Добавить текст после курсора

h

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

j

Перемещает курсор вниз на одну строку

k

Перемещает курсор вверх на одну строку

l

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

x

Удалить символ

<CR>

Возврат каретки

<ESC>

Перейти из режима ввода в командный режим

:w

Записать в файл

:q

Завершить работу с редактором

:wq

Записать буфер в файл и завершить работу с редактором vi

ZZ

Записать изменения в файл и завершить работу с vi

Перемещение курсора по экрану

Ранее вы познакомились с тем, как перемещать курсор с помощью клавишей <h>, <j>, <k>, <l>, <BACKSPACE> и <SPACEBAR>. В этом подразделе приводятся еще несколько команд, которые помогут вам быстро перемещать курсор по экрану. Эти команды выполняются в командном режиме.

Позиционирование курсора на символ

Существуют три способа позиционирования курсора в строке:

  •  переместить курсор вправо или влево до нужного символа;
  •  переместить курсор в начало или конец строки;
  •  поиск символа на строке.

 Перемещение курсора в начало или конец строки 

Переместить курсор на первый или последний символ в строке можно следующим образом:

  •  $ – переместить курсор на последний символ в строке;
  •  0(ноль) – переместить курсор на первый символ в строке;
  •  ^ – переместить курсор на первый ненулевой символ в строке.

Поиск символа в строке 

Третий способ позиционирования курсора в строке – это поиск указанного символа на текущей строке. Если символ не найден на текущей строке, то появляется звуковой сигнал и курсор остается на прежнем месте. Существуют команды, которые проводят поиск по шаблону. Они будут описаны далее. Здесь приведем 6 команд для поиска внутри строки: f, F, t, T, :(двоеточие) и ,(запятая). После f, F, t и T вы можете указать символ:

fx –  осуществляет поиск указанного символа x справа от текущей позиции курсора;

Fx осуществляет поиск указанного символа x слева от текущей позиции курсора;

tx осуществляет перемещение курсора вправо на символ до указанного символа x;

Tx осуществляет перемещение курсора влево на символ до указанного символа x;

; повторяет предыдущий поиск символа. Команда ; запоминает символ и ищет следующее появление символа в текущей строке;

, –  повторяет предыдущий поиск символа, но в обратном направлении.

Команда ; запоминает символ и ищет следующее появление символа в текущей строке.

Позиционирование слов

Редактор vi предполагает, что слово – это строка символов, которая может включать в себя буквы, цифры и символы подчеркивания. В редакторе vi существует 6 команд позиционирования: w, b, e, W, B и E. Команды w, b, e рассматривают любой символ, отличный от буквы, цифры или подчеркивания, как разделитель, означающий начало или конец слова. Пунктуация до или после пустого пространства является разделителем слов. Символ начала или конца строки также является разделителем.

Команды W, B, E рассматривают пунктуацию как часть слова. Слова разделяются пустым пространством, которое состоит из символов <пробел>, <табуляция> и <новая строка>.

Команды позиционирования:

w перемещает курсор к началу следующего слова;

nw перемещает курсор к началу n–го слова; конец строки не останавливает движение курсора. Он продолжает подсчет слов с начала следующей строки;

Wигнорирует все знаки пунктуации и перемещает курсор на следующее после пробела слово;

e перемещает курсор на последний символ в следующем слове;

E перемещает курсор на последний символ в слове. Игнорирует все символы пунктуации за исключением пробела. Слова разделяются пробелами;

b перемещает курсор к первому символу предыдущего слова;

nb перемещает курсор к первому символу n–го предыдущего слова;

B используется подобно команде b, за исключением того, что слова разделяются только символами <пробел> и <новая строка>. Она рассматривает все другие символы пунктуации как буквы.

Позиционирование курсора на предложение

Редактор vi распознает также предложения. В редакторе vi предложение заканчивается знаками !, . или ?. Если эти разделители появляются в середине строки, то за ними должны стоять два пробела,  чтобы vi их мог распознать.

Вы можете перемещать курсор от предложения к предложению в файле с помощью команд ( – открывающая скобка и ) – закрывающая скобка.

( перемещает курсор в начало текущего предложения;

n( перемещает курсор в начало n–го предложения выше текущего предложения;

) перемещает курсор в начало следующего предложения;

n) перемещает курсор в начало n–го предложения, следующего за текущим предложением.

Позиционирование курсора по параграфам

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

{ – переместить курсор в начало текущего параграфа, который ограничивается пустой строкой;

n{ – переместить курсор в начало n–го параграфа, следующего за текущим параграфом;

} – переместить курсор в начало следующего параграфа;

n} – переместить курсор в начало n–го параграфа ниже текущей строки.

Позиционирование в окне

Редактор vi предоставляет 3 команды, которые позволяют  позиционировать курсор в окне. Эти команды должны быть введены на верхнем регистре:
H – переместить курсор к первой строке экрана;
M – переместить курсор к средней строке экрана;
L – переместить курсор к последней строке экрана.

Прокрутка текста

Четыре команды редактора vi позволяют осуществлять прокрутку текста файла. Команды ^f (<CTRL> + <f>) и ^d (<CTRL> + <d>) проводят прокрутку экрана вперед, а команды ^b (<CTRL>b) и ^u (<CTRL>u) – прокрутку экрана назад.

Переход на указанную строку

Команда G позиционирует курсор на указанную строку в окне. Если эта строка не находится в текущем экране, то G очищает экран и отображает окно, содержащее эту строку. Если не указана строка, то команда G перемещает курсор на последнюю строку файла:

G – переместить курсор на последнюю строку в файле;
nG – переместить курсор на строку n.

Номера строки

Каждая строка файла имеет номер, соответствующий ее положению в буфере. Для того чтобы получить номер конкретной строки, переместите курсор на эту строку и введите команду  ^g.

Поиск символов по шаблону: команды / и ?

Для поиска символов по шаблону вы можете использовать команды /, ?, n и N. Эти команды позволяют осуществлять поиск вперед и назад в буфере следующего появления указанного шаблона символов. Команды n и N позволяют вам повторить последний поиск.

Команда / и следующий за ней шаблон (/pattern) ведет поиск вперед по буферу следующего появления символов, указанных в шаблоне, и помещает курсор на первый символ из шаблона. Например, командная строка

/Hello world<CR>

находит первое появление в буфере слов Hello world и помещает курсор под буквой H.

Команда ? и следующий за ней шаблон (?pattern) ведет поиск в обратном направлении в буфере первого появления символов, указанных в шаблоне, и помещает курсор на первый из этих символов. Например, командная строка

?data set design<CR>

находит предыдущее появление в буфере слов data set design и помещает курсор под буквой d в слове data.

Эти команды поиска не выполняют циклический возврат в случае окончания строки во время поиска двух или более слов. Например, если вам надо найти появление Hello world и окажется, что слово Hello находится в конце одной строки, а слово world – первое слово последующей строки, то эти команды не найдут Hello world.

В то же время эти команды поиска выполняют циклический возврат в конце или начале буфера для продолжения поиска. Например, если вы находитесь почти в конце буфера, а символы, которые соответствуют шаблону, – в начале буфера, то команда поиска / найдет шаблон.

Команды n и N позволяют повторить предыдущий запрос поиска /pattern или ?pattern:
n – повторить последнюю команду поиска;
N – повторить последнюю команду поиска в обратном направлении.

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

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

Три основные команды позволяют в редакторе vi создавать текст:

a – добавить текст;

i – вставить текст;

o – открыть новую строку, на которой может быть введен текст.

После того как вы создали текст с помощью одной из этих команд, можете возвратиться в командный режим редактора vi, нажав клавишу <ESCAPE>.

Добавить текст

Для того чтобы в файл добавить текст, воспользуйтесь следующими командами:
a – добавить текст после курсора;
A – добавить текст в конце текущей строки.

Вставить текст

Для того чтобы в файл вставить текст, воспользуйтесь следующими командами:
i – вставить текст до курсора;
I – вставить текст в начале текущей строки до первого ненулевого символа.

Для возврата в командный режим нажмите клавишу <ESCAPE>.

Открыть строку для текста

Для открытия строки для текста воспользуйтесь следующими командами:
o – создать текст с начала новой строки, расположенной ниже текущей строки. Вы можете ввести эту команду в любом месте текущей строки;
O – создать текст с начала новой строки, расположенной выше текущей строки. Вы можете ввести эту команду в любом месте текущей строки.

Команды открытия создают строку непосредственно выше или ниже текущей строки и переводят вас в режим ввода текста. Курсор располагается в начале новой строки и ожидает от вас ввода текста.

Удаление текста

Вы можете удалить текст с помощью нескольких команд в командном режиме и небольшой объем в режиме ввода.

 Удаление текста в режиме ввода текста

Если вы находитесь в режиме ввода текста редактора vi и хотите удалить символ, воспользуйтесь клавишей <BACKSPACE>: <BACKSPACE> – удалить текущий символ (слева от курсора).

Клавиша <BACKSPACE> перемещает курсор назад в режиме ввода текста и удаляет каждый символ, который курсор переходит. Однако удаленный символ не стирается с экрана, пока вы не нажмете клавишу <ESCAPE> для возврата в командный режим.

Удалить текст вы можете и с помощью следующих ключей:
^w – отменить ввод текущего слова;
@ – удалить на текущей строке весь введенный во время данного режима ввода текст;
^v – удалить специальное значение, если оно есть, следующих вводимых символов.

Когда вы вводите ^w, курсор возвращается на последнее введенное слово и ожидает на первом символе этого слова. Он не стирает слово с экрана до тех пор, пока вы не нажмете клавишу <ESCAPE> или не введете новые символы на месте этого слова.

Отменить последнюю команду

Отменить последнюю введенную команду можно с помощью следующих команд:
u – отменить последнюю команду;
U – восстановить текущую строку в состояние до произведенных изменений.

Если вы случайно удалили строки, то для отмены команды удаления введите команду u. Удаленные строки вновь появятся на экране. Если вы ввели неправильно команду, то введите команду u, и неверная команда будет отменена. Команда U будет аннулировать все изменения в текущей строке до тех пор, пока курсор будет находиться на этой строке.

Если вы введете команду u дважды, то вторая команда отменит первую. Например, если вы удалили по ошибке строку и восстановили ее с помощью команды u, то, нажав второй раз u, вы вновь удалите строку. Знание этих команд может спасти вас от многих неприятностей.

Команды удаления в командном режиме

Все команды удаления, выдаваемые в командном режиме, сразу же удаляют указанный текст с экрана и оставшуюся часть отображают на экране в обновленном виде.

Команда удаления имеет следующий формат:

[число]dтекст

где d – команда удаления;
текст – объект удаления.

Удаление слов

Вы можете удалить слово или часть слова с помощью команды d. Переместите курсор к первому удаляемому символу и введите команду dw. Символ, расположенный над курсором, и последующие за ним будут стерты. Команда dw удаляет одно слово или знак пунктуации и пробелы, которые следуют за ним. Вы можете удалить несколько слов или знаков пунктуации за один раз, если укажете перед командой соответствующее число. Например, для того чтобы удалить 3 слова и две запятые, введите команду 5dw.

Удаление параграфов

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

d{ или d}

Помните, что вы можете восстановить удаленный текст с помощью команды u.

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

Для того чтобы удалить строку, введите

dd

Для удаления нескольких строк укажите перед командой количество удаляемых строк. Например, команда

10dd

сотрет 10 строк.

Если вы удаляете несколько строк, то vi отображает в нижней части экрана сообщение типа

10 lines deleted

Если ниже текущей строки осталось меньше 10 строк, то прозвучит сигнал и строки не удалятся.

Удаление текста после курсора

Для удаления всего текста на строке, расположенного после курсора, поместите курсор на первый удаляемый символ и введите

D или d$

Эта команда удаляет текст только на текущей строке.

Модификация текста

Один из способов модификации текста представляют команды удаления и команды ввода текста. Другой способ, с помощью которого вы можете изменить текст, это задать команду, позволяющую одновременно удалять и создавать текст. В редакторе vi существуют 3 основные команды изменения текста: r, s и c.

Замена текста

rx – заменить текущий символ (символ, на который показывает курсор) на x. Эта команда не устанавливает режим ввода текста и, следовательно, нет необходимости нажимать после нее клавишу <ESCAPE>.

nrx – заменить n символов на <x>. После этой команды также не надо нажимать клавишу <ESCAPE>.

R – заменяет только те символы, которые введены в режиме ESCAPE. Если будет достигнут конец строки, то эта команда добавит ввод как новый текст.

Например, вы хотите заменить слово acts на ants в следующем предложении:

 The circus has many acts.

Поместите курсор под буквой c в слове acts и введите команду

rn

Предложение будет иметь вид

 The circus has many ants.

Для того чтобы заменить слово many на 7777, поместите курсор под буквой m в слове many и введите команду

4r7

Команда r заменит слово many на четыре цифры 7:

 The circus has 7777 ants.

Подстановка текста

Команда подстановки текста заменяет символы, но затем позволяет вам продолжать ввод текста с того места, где вы нажали клавишу <ESCAPE>.

s – удалить символ, на который указывает курсор и добавить текст. После окончания ввода текста нажмите клавишу <ESCAPE>;

ns –удалить n символов и добавить текст. После окончания ввода текста нажмите клавишу <ESCAPE>;

S – заменить все символы в строке.

Когда вы вводите команду s, последний символ в строке символов, который будет заменен, переписывается со знаком $. Символ не стирается с экрана, пока вы не введете на его место новый символ или не нажмете клавишу <ESCAPE>.

Изменение текста

Команда подстановки заменяет символы. Команда изменения заменяет объект текста и затем продолжает добавлять текст с этого места до тех пор, пока вы не нажмете клавишу <ESCAPE>.

Команда изменения может содержать аргумент text_object. Вы можете заменить символ, слово  на новый текст:

ncx – заменить n-ый объект текста типа x (предложение, параграф);

cw – заменить слово или оставшиеся символы в слове на новый текст. Редактор vi печатает знак $, чтобы показать последний символ, который будет заменен;

ncw – заменить n слов;

cc – заменить все символы в строке;

ncc – заменить все символы в текущей строке и n верхних строк;

C – заменить оставшиеся символы в строке от курсора до конца строки; dfn nC – заменить оставшиеся символы, начиная от курсора в текущей строке и во всех n верхних строках.

Команда c использует знак $, чтобы отметить последний символ, который должен быть замещен. После того как выполнилась команда изменения, вы находитесь в режиме ввода текста и можете вводить любой текст. Текст будет храниться в буфере, пока вы не нажмете клавишу <ESCAPE>.

 Извлечение и присоединение текста

Редактор vi предоставляет набор команд, которые разбивают текст в файл и набор команд, которые копируют часть текста и помещают в другое место в файле.

Перемещение текста

Вы можете переместить текст из одного места в буфере редактора vi в другое, удалив строки, а затем поместив их в требуемое место. Удаленный текст сохраняется во временном буфере. Переместите курсор на то место, куда вы хотите поместить текст и нажмите клавишу <p>. Удаленные строки будут добавлены ниже текущей строки.

p – поместить содержимое временного буфера после курсора или ниже текущей строки.

Удаленная с помощью команды удаления строка может быть помещена в середине другой строки. Установите курсор между двумя словами, затем нажмите клавишу <p>. Удаленная строка будет помещена после курсора.

Так как временный буфер сохраняет результат только последней команды, то команда p должна использоваться сразу же после команды удаления. Команда p используется также для копирования текста, помещенного во временный буфер командой y.

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

Вы можете копировать одну или несколько строк текста во временный буфер и затем поместить копию этого текста в определенное место в файле. Для того чтобы поместить текст на новое место, введите команду y. Команда y имеет следующий общий формат:

[число]y[текст]

Копирование строк с помощью команды y не удаляет их с прежнего места в файле, т.е. вы можете поместить один и тот же кусок текста в нескольких местах.

В табл. П.3.2 приведены способы использования команды y.

Таблица П.3.2

Команда y

Команда

Функция

nyx

Копирование n–го объекта текста типа x (предложение или параграф)

yw

Создание копии слова

yy

Создание копии текущей строки

nyy

Копирование n строк

y)

Создание копии всего текста до конца предложения

y}

Создание копии всего текста до конца параграфа

Обратите внимание, что эта команда позволяет указывать номер объекта текста, который будет копироваться.

Копирование и перемещение текста с использованием регистров

Перемещение и копирование нескольких разделов текста в различные части файла является утомительной работой. Редактор vi предлагает вам использовать так называемые регистры, в которых вы можете хранить текст до тех пор, пока он вам не понадобится. Сохранить текст вы можете либо с помощью команды y, либо с помощью команды удаления. Использование регистров особенно полезно, если часть текста должна появиться во многих местах в файле. Извлекаемый текст остается в указанном регистре, пока вы не завершите работу с ним, поэтому либо заканчивайте работу с редактором, либо поместите в этот регистр другой текст.

Общий формат команды:

[число]["X]команда[текст]

Здесь:

X – имя регистра, состоящее из одной буквы верхнего регистра. Имени регистра должны предшествовать двойные кавычки.

В табл. П.3.3 приведены команды извлечения и присоединения текста.

Таблица П.3.3

Команды извлечения и присоединения текста

Команда

Функция

p

Помещает содержимое временного буфера, полученное с помощью команды y и команд удаления, в текст после курсора

yy

Создает копию строки текста и помещает во временный буфер

nyx

Создает копию n–го объекта текста типа x и помещает ее во временный буфер

"xyn

Помещает копию объекта текста типа n  в регистр с именем x

"xp

Помещает содержимое регистра x после курсора

Расширенный режим работы редактора vi

Команды расширенного режима начинаются с символа ":" (двоеточие). После того как вы введете двоеточие, курсор опускается в самый низ экрана и отображает двоеточие. Оставшаяся часть команды тоже появляется внизу       экрана.

Временный возврат к shell

Когда вы входите в vi, то содержимое буфера заполняет ваш экран, делая невозможным выдачу команд для shell. Однако вам может это понадобиться. Например, вам необходимо будет получить информацию из другого файла для присоединения ее к текущему тексту. Вы можете получить эту информацию, запустив одну из команд shell, которая отображает текст файла на экране. Например, cat или ps. Однако процедура завершения работы с редактором и повторный вход в редактор потребуют времени и сил. Редактор vi предлагает вам два способа временного выхода из редактора для того, Для того чтобы вы могли ввести команды shell (и даже редактировать другие файлы), не покидая сам редактор. Это команды :sh и :!.

Команда :! позволяет вам выйти из редактора и запустить команду shell одной командной строкой. Находясь в командном режиме редактора vi, введите :!. Эти символы будут напечатаны внизу экрана. Сразу же после символа ! введите команду shell. Shell запустит вашу команду, даст вам ответ и напечатает сообщение:

Hit return to continue

После того как вы нажмете клавишу <RETURN>, vi обновит экран и курсор примет свое прежнее положение.

Команда редактора :sh позволяет вам делать то же самое, но ведет себя по другому на экране. Из командного режима редактора vi введите :sh и нажмите клавишу <RETURN>. Подсказка команды shell появится на следующей строке. Ведите ваши команды после подсказки так, будто бы вы работаете в нормальном режиме с shell. Когда вы будете готовы вернуться к редактору vi, введите ^d или exit. Экран обновит информация из вашего буфера, и курсор вновь переместится на прежнее место.

При временном переходе к shell даже изменение справочников не мешает возврату к буферу редактора vi при вводе ^d или exit. 

Запись текста в новый файл

Команда w позволяет вам создавать файл, копируя строки текста из файла, который вы в данный момент редактируете, в файл, который вы указали. Для того чтобы создать новый файл, нужно указать строку или строки (номера строк) и имя нового файла в командной строке. Общий формат этой команды:

:line_number[, line_number]w filename

Например, для того чтобы записать третью строку буфера в файл three, введите

:3w three<CR>

При успешном создании нового файла, редактор vi напечатает следующую информацию:

"three" [New file] 1 line, 20 characters

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

:.w junk<CR>

Создастся новый файл с именем junk. Он будет содержать только текущую строку буфера vi.

Вы можете записать часть буфера в новый файл, обозначив границы строк. Например, для того чтобы строки с 23-й по 37-ю записать в файл, введите следующую команду:

:23,37w newfile<CR>

 Добавить файл в буфер

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

 :r data<CR>

Вместо перемещения курсора вы можете указать номер строки. Например, Для того чтобы вставить файл data после 56–й строки в буфере, введите:

:56r data<CR>

 Провести глобальные изменения

:g/образец/command<CR> – для каждой строки, содержащей pattern, выполнить команду command редактора. Построчный редактор напечатает все строки, сождержащие образец;

:s/образец /новый_текст<CR> –  это команда замены. Построчный редактор отыскивает первое появление символов «образец» в текущей строке и заменяет его на «новый_текст»;

:s/образец /новый_текст/g<CR> – редактор заменяет каждое появление символов «образец» в текущей строке.


ПРИЛОЖЕНИЕ 4

 Команды shell работы с файлами

Команда cat

Команда cat часто используется для создания файлов (хотя можно воспользоваться и командой touch). По команде cat на стандартный вывод (т. е. на экран) выводится содержимое указанного файла (или нескольких файлов, если их имена последовательно задать в качестве аргументов команды). Если вывод команды cat перенаправить в файл, то можно получить копию какого–то файла:

[user]$ cat file1 > file2

Собственно, первоначальное предназначение команды cat как раз и предполагало перенаправление вывода, так как эта команда создана для конкатенации, т.е. объединения нескольких файлов в один:

[user]$ cat file1 file2 ... fileN > new–file

Именно возможности перенаправления ввода и вывода этой команды и используются для создания новых файлов. Для этого на вход команды cat направляют данные со стандартного ввода (т. е. с клавиатуры), а вывод команды – направляется в новый файл:

[user]$ cat > newfile

После того как вы напечатаете все, что хотите, нажмите комбинацию клавиш <Ctrl>+<D> или <Ctrl>+<C>, и все, что вы ввели, будет записано в newfile. Конечно, таким образом создаются в основном короткие текстовые файлы.

Команда cp

Хотя для копирования файлов иногда пользуются командой cat, но в Linux существует для этого специальная команда cp. Ее можно применять в одной из двух форм:

[user]$ cp [options] source destination

[user]$ cp [options] source_directory new_directory

В первом случае файл или каталог source копируется соответственно в файл или каталог destination, а во втором случае файлы, содержащиеся в каталоге source_directory, копируются в каталог new_directory. Для копирования надо иметь права на чтение файлов, которые копируются, и права на запись в каталог, в который производится копирование.

Если в качестве целевого указывается существующий файл, то его содержимое будет затерто, поэтому при копировании надо соблюдать осторожность. Впрочем, можно использовать команду cp с опцией –i, тогда перед перезаписью существующего файла будет запрашиваться подтверждение.

У команды cp имеется еще несколько полезных опций (табл. П.4.1).

Таблица П.4.1

Основные опции команды cp

Опция

Значение

-p

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

-R или  -r

Если source — каталог, то копируется как он, так и все входящие в него подкаталоги, т. е. сохраняется исходная форма дерева каталогов

Окончание табл. П.4.1

Опция

Значение

-d

Если задать эту опцию, то символические ссылки будут оставаться ссылками (иначе вместо ссылки копируется файл, на который дается ссылка)

-f

Перезаписать файлы при копировании (если такие уже есть) без дополнительных предупреждений

Команда mv

Если вам необходимо не скопировать, а переместить файл из одного каталога в другой, вы можете воспользоваться командой mv. Синтаксис этой команды аналогичен синтаксису команды cp. Более того, она сначала копирует файл (или каталог), а только потом удаляет исходный файл (каталог). И опции у нее такие же, как у cp.

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

[user]$ mv oldname newname

Но учтите, что команда mv не позволяет переименовать сразу несколько файлов (используя шаблон имени), так что команда mv *.xxx *.yyy не будет работать.

При использовании команды mv, также как и при использовании cp, не забывайте применять опцию –i для того, чтобы получить предупреждение, когда файл будет перезаписываться.

Команды rm и rmdir

Для удаления ненужных файлов и каталогов в Linux служат команды rm (удаляет файлы) и rmdir (удаляет пустой каталог). Для того чтобы воспользоваться этими командами, вы должны иметь право записи в каталоге, в котором расположены удаляемые файлы или каталоги. При этом полномочия на изменение самих файлов не обязательны. Если хотите перед удалением файла получить дополнительный запрос на подтверждение операции, используйте     опцию – i.

Если вы попытаетесь использовать команду rm (безо всяких опций) для удаления каталога, то будет выдано сообщение, что это каталог, и удаления не произойдет. Для удаления каталога надо удалить в нем все файлы, после чего удалить сам каталог с помощью команды rmdir. Однако можно удалить и не пустой каталог со всеми входящими в него подкаталогами и файлами, если использовать команду rm с опцией -r.

Если вы дадите команду rm *, то удалите все файлы в текущем каталоге. Подкаталоги при этом не удалятся. Для удаления как файлов, так и подкаталогов текущего каталога надо также воспользоваться опцией -r. Однако всегда помните, что в Linux нет команды восстановления файлов после их удаления (даже если вы спохватились сразу же после ошибочного удаления файла или каталога)!

Так что дважды подумайте перед тем, как удалить что-либо, и не пренебрегайте опцией -i.

Команды more и less

Команда cat позволяет вывести на стандартный вывод (на экран) содержимое любого файла, однако она используется для этих целей очень редко, разве что для вывода очень небольших по объему файлов. Дело в том, что содержимое большого файла мгновенно «проскакивает» на экране, и пользователь видит только последние строки файла. Поэтому cat используется в основном по ее прямому назначению для конкатенации файлов, а для просмотра содержимого файлов (конечно, текстовых) используются команды more и less (или текстовые редакторы).

Команда–фильтр more выводит содержимое файла на экран отдельными страницами, размером как раз в целый экран. Для того чтобы увидеть следующую страницу, надо нажать на клавишу пробела. Нажатие на клавишу <Enter> приводит к смещению на одну строку. Кроме клавиш пробела и <Enter>, в режиме паузы еще некоторые клавиши действуют как управляющие (например, клавиша <B> возвращает вас на один экран назад), но мы здесь не будем приводить полного их перечня, как и перечня опций команды. Вам для начала надо  только запомнить, что выйти из режима просмотра можно с помощью клавиши <Q>, т.к. если вы этого не знаете, то вам придется долго нажимать клавишу пробел, пока не доберетесь до конца длинного файла. Обо всех опциях команды more вы можете прочитать в интерактивном руководстве man или info.

Утилита less, разработанная в рамках проекта GNU, содержит все функции и команды управления выводом, имеющиеся в программе more, и некоторые дополнительные, например, позволяет использовать клавиши управления курсором (<Стрелка вверх>, <Стрелка вниз>, <PgUp>, <PgDown>) для перемещения по тексту. Вспомните, мы уже говорили об этом, когда рассматривали интерактивную подсказку man.

Команды more и less позволяют производить поиск подстроки в просматриваемом файле, причем команда less позволяет производить поиск, как в прямом, так и в обратном направлении. Для организации поиска строки символов string надо набрать в командной строке программы в нижней части экрана (там, где двоеточие) /string. Если искомая строка будет найдена, будет отображен соответствующий кусок текста, причем найденная строка будет находиться в самом верху экрана.

Команда find и символы шаблонов для имен файлов

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

Общий синтаксис команды find имеет следующий вид:

find [список_каталогов] критерий_поиска

Параметр «список_каталогов» определяет, где искать нужный файл. Проще всего задать в качестве начального каталога поиска корневой каталог /, однако в таком случае поиск может затянуться очень надолго, так как будет просматриваться вся структура каталогов, включая смонтированные файловые системы (в том числе сетевые, если таковые есть). Можно сократить объем поиска, если задать вместо одного корневого каталога список из нескольких каталогов (естественно, тех, в которых может находиться искомый файл):

[user]$ find /usr/share/doc /usr/doc /usr/locale/doc –name instr.txt

Началом «критерия_поиска», определяющего, что именно должна искать программа find, считается первый аргумент, начинающийся на «-», «(», «)», «,» или «!». Все аргументы, предшествующие «критерию_поиска», трактуются как имена каталогов, в которых надо производить поиск. Если не указано ни одного пути, поиск производится только в текущем каталоге и его подкаталогах.

Шаблоны имен файлов строятся с помощью специальных символов «*» и «?». Значок «*» используется для замены произвольной строки символов. В Linux:

  •  * — соответствует всем файлам, за исключением скрытых;
  •  .* — соответствует всем скрытым файлам (но также текущему каталогу « и каталогу уровнем выше «..»);
  •  *.* — соответствует только тем файлам и каталогам, которые имеют « в середине имени или оканчиваются на точку;
  •  p*r — соответствует и «peter», и «piper»;
  •  *c* — соответствует и «picked», и «peck».

Значок « заменяет один произвольный символ, поэтому index?.htm будет соответствовать именам index0.htm, index5.htm и indexa.htm.

Кроме «*» и «?» в Linux при задании шаблонов имен можно использовать квадратные скобки [], в которых дается либо список возможных символов, либо интервал, в который должны попадать возможные символы. Например, [abc]* соответствует всем именам файлов, начинающимся с a, b, c; *[I–N1–3] соответствует файлам, имена которых оканчиваются на I, J, K, L, M, N, 1, 2, 3.

Вернемся к команде find и рассмотрим подробнее, какие критерии поиска возможны. Несколько примеров простых критериев поиска приведено в табл. П.4.2.

Таблица П.4.2

Критерии поиска для команды find

Опция

Значение

-name шаблон

Ищет файлы, имена которых соответствуют шаблону

-group имя

Ищет файлы, принадлежащие указанной группе

-size число[c]

Ищет файлы, размером в число 512–байтных блоков. Если после числа стоит символ c, значит размер указан в байтах (символах)

Окончание табл. П.4.2

Опция

Значение

-mtime число

Ищет файлы, которые в последний раз изменялись указанное число дней назад

-newer образец

Ищет файлы, которые изменялись после изменения файла, указанного в образце

-type тип_файла

Ищет файлы указанного типа. Тип задается одним из символов b (блок–ориентированные устройства), c (байт–ориентированные устройства), d (файл каталога), f (обычный файл), p (именованный канал) либо l (символическая ссылка)

Другие простые критерии вы можете узнать, если просмотрите man–страницу о команде find. Здесь же надо только сказать, что из простых критериев можно строить более сложные с помощью логических операций and, or или операции отрицания, знаком которой служит восклицательный знак. Например, если вы хотите найти все файлы, имена которых оканчиваются на .txt и .doc, то критерий можно записать как (-name *.txt -or -name *.doc). Можно комбинировать таким образом любое число критериев (и не только простых!). Если операция не указана явно, то подразумевается – and, т. е. вместо (-name *.txt -and -name *.doc) можно записать просто (-name *.txt -name *.doc). Если применяется только одна операция – and или !, то скобки обычно можно опустить, а с операцией – or и в сложных выражениях скобки необходимы. Перед скобкой нужно поставить обратную косую черту, а после скобки — пробел. Например, если вы хотите найти каталог по его имени, то можно сделать это командой

[user]$ find /usr -name doc -type d

или (с соблюдением правил построения сложных критериев)

[user]$ find /usr \( -name doc -and -type d \)

В следующем примере мы ищем файлы по такому критерию: либо имя файла оканчивается на *.tmp, либо размер файла больше 100 Кбайт:

[user]$ find /home/kos \( \( -name *.tmp \) -or \( -size +200 \) \)

В последнем примере стоит обратить внимание на то, что перед значением размера стоит знак «+». Такой знак можно использовать с любым числовым параметром в критериях поиска команды find. Он означает, что нужно искать файлы, у которых значение параметра больше заданного. Соответственно, знак «-» показывает, что надо искать файлы, у которых значение параметра меньше заданного. Если знаки «+» или «-» отсутствуют, ищутся файлы, у которых значение параметра равно заданному.

В заключение надо сказать еще о том, что после критерия поиска в  команде find можно сразу же задать операцию, которая будет применяться ко всем файлам, найденным по указанному критерию. Простейшим примером использования такой возможности является указание команды – print:

[user]$ find /home/kos -name *.tmp -print

по которой выдается на экран список имен всех найденных файлов с указанием полного пути к файлу. Эта операция применяется по умолчанию, т. е. когда никаких операций вообще не указано (как это было во всех приведенных выше примерах). Другим примером операции, применяемой ко всем найденным файлам, может служить операция –exec cmd {} \;, где cmd — произвольная команда оболочки shell. То есть в этом случае ко всем найденным файлам (их именами заменяются поочередно фигурные скобки) применяется команда cmd. За cmd {}  должна следовать точка с запятой, экранированная обратной косой чертой.

Например, если вы хотите удалить в текущем каталоге все файлы, к которым пользователи не обращались в течение 30 дней, дайте команду

[root]# find . -type f -atime +30 -exec rm {} \;

Вместо -exec можно поставить -ok, тогда перед выполнением указанной команды cmd применительно к каждому файлу будет запрашиваться подтверждение.

В общем, команда find является мощным, полезным и чрезвычайно адаптируемым инструментом поиска в файловой системе. Все ее возможности здесь не перечислены, для их изучения обращайтесь к соответствующей man-странице. Будьте очень осторожны с применением таких возможностей команды, как вызов других команд, применяемых ко всем найденным файлам. Помните, что изменения часто необратимы!

Команда split — разбиение файла на несколько частей

Иногда бывает необходимо разбить один большой файл на несколько файлов меньшего объема. Для примера рассмотрим ситуацию, когда вы хотите перенести на свой домашний компьютер файл song.mp3 формата MP3, размером в 4,894,425 байт. Возможности перекачать этот файл по сети у вас нет, и единственно возможный способ переноса — воспользоваться дискетами. Но поскольку на одну дискету файл не помещается, требуется разбить его на несколько маленьких файлов, а потом собрать снова. Для решения этой задачи можно воспользоваться командой split.

Команда split копирует файл, разбивая его на отдельные файлы заданной длины. В качестве аргументов ей надо указать имя исходного файла и префикс имен выходных файлов. Имена выходных файлов будут составляться из этого префикса и двух дополнительных букв «aa», «ab», «ac» и т. д. (без пробелов и точек между префиксом и буквами). Если префикс имен файлов не задан, то по умолчанию используется «x», так что выходные файлы будут называться «xaa», «xab» и т. д.

Кроме аргументов можно задать опцию -b, определяющую размер выходных файлов в байтах. Вслед за -b должно стоять число, а за ним – буква k (показывающая, что размер выходного файла указан в килобайтах) или m (значит размер задан в мегабайтах). Если опция не задана, то по умолчанию размер выходных файлов принимается равным 1 Мбайту. Таким образом, для того чтобы перенести на дискетах файл song.mp3, надо вначале дать команду

[user]$ split –b1400k song.mp3 song

скопировать полученные файлы song.aa, song.ab, song.ac, song.ad, song.ae на отдельные дискеты, перенести их на домашний компьютер, скопировать в какой–нибудь каталог и восстановить исходный файл с помощью команды

[user]$ cat song.* > song.mp3

после чего можно удалить временные файлы song.xx.

Сравнение файлов и команда patch

Вы не замечали, что задача сравнения содержимого двух различных файлов возникает при работе с компьютером на удивление часто? Конечно, ведь так легко скопировать файл, а потом забываешь, какая же из версий новее или качественнее (по одному автору ведомым критериям). Так что инструменты для сравнения файлов просто необходимы, и Linux такие инструменты предоставляет.

Простейший из них — команда cmp. Эта команда просто сравнивает содержимое двух файлов побайтно:

[user]$ cmp file1 file2

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

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

[user]$ diff paper.old paper.new

Отчет о выявленных различиях будет выдан на стандартный выход. Естественно, его лучше перенаправить в файл:

[user]$ diff paper.old paper.new >paper.diff

Для оценки версий одного и того же файла более удобной может оказаться команда sdiff, которая выдает результат сравнения в виде двух столбцов, разделенных пробелами. Если строки с одинаковыми номерами в файлах различаются, то в выводе команды sdiff они разделены вертикальной чертой |. Если строка имеется только в первом файле, она отмечена знаком <. Соответственно строка, встречающаяся только во втором файле, помечена знаком >.

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

Но все же наиболее часто используется традиционная для UNIX–систем команда diff. Эта ее востребованность объясняется тем, что создаваемый ею отчет о различиях двух файлов может быть использован командой patch. Чаще всего эти возможности используются при распространении обновлений программного обеспечения. Предположим, что некоторое программное приложение было разослано пользователям в виде файла program.c, содержащего исходный код программы на языке Си. После этого разработчик внес в программу некоторые исправления и сохранил текст в виде файла program.c.new. Требуется довести исправленный текст программы до пользователей. Очевидно, что пользователям достаточно сообщить только исправления, т. е. отчет об изменениях, создаваемый по команде

[user]$ diff program.c program.c.new > program.c.diff

Естественно, объем файла program.c.diff существенно меньше объема файла program.c.new, так что можно было бы получить существенную экономию на передаче файлов, если отправлять пользователям только файл program.c.diff (ведь объемы современных программных приложений составляют десятки мегабайт). Однако пользователи должны иметь возможность внести эти исправления в имеющуюся у них версию программы. Эту задачу позволяет решить команда patch. Имея файлы program.c и program.c.diff, пользователь может дать команду

[user]$ patch program.c program.c.diff > program.c.new

в результате выполнения которой он получит файл program.c.new.

Сортировка текстовых файлов

Утилита sort упорядочивает записи файла в алфавитно–цифровом порядке.
Пример
:
$ sort
имяфайла
Bill Williams 100
Henry Morgan 112
Mary Clark 101
$

Записи отсортированы по первой букве имени. Однако можно выполнить сортировку и по фамилиям:
$ sort +1 имя–фай
ла
Mary Clark 102
Henry Morgan 112
Bill Williams 100
$

Ключ +1 означает, что одно поле с начала записи было игнорировано при сортировке.

Сортировка по третьему полю с игнорированием лидирующих пробелов выполняется с использованием ключа -b (blank): $ sort -b +2 people

Пример результата выполнения:
Bill Williams 100
Mary Clark 101
Henry Morgan 112
$

Для сохранения результата сортировки в файле используется ключ -o (output):
sort -o sortpeople +1 people
Для слияния уже отсортированных файлов используется ключ -m.
Пример:

$ sort +1  имяфайла1> sort1
$ sort +1
имяфайла2> sort2
$ sort +1
имяфайла3> sort3
$ sort –m +1 sort1, sort2, sort3 > sortall
$

Имеется возможность удаления дублированных записей  при использовании ключа -u (uniq), а также сортировки по нескольким несмежным полям.
Подсчет строк, слов, знаков в файле

Подсчет числа строк, слов и знаков в заданном файле выполняется командой wc.
Например:
$ wc people
3 9 51 people
$

Ключи -l (lines),  -w (words), -c (character) могут указать явно объекты  счета.

Например:
$ wc –l people
3 people
$ wc –lc people
10 51 people
$

Поиск строк в файле по образцу (grep

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

В простейшем случае образец задается постоянной строкой знаков. В общем же случае он задается регулярным выражением (grep – акроним от global regular expression printer).
Пример:
$ grep Henry имя–фай
ла1 имя–файла2 имя–файла3
Softpeople: Henry Morgan 112
$

Ключ -v (invert) предписывает печать всех строк, кроме найденных, например:

$ grep –v "Henry Morgan" имяфайла
Bill Williams 100
Mary Clark 101
$

Двойные кавычки требуются для размещения в образце пробелов.
Регулярные выражения позволяют вести поиск типа: найти все слова из четырех букв, начинающиеся на d, или все слова, кончающиеся на able, и тому подобное. Рассмотрим примеры задания образцов посредством регулярных выражений.

Знаки ^ и $ помечают начало и конец строки соответственно:

«^Genesis» – найти все строки, начинающиеся словом Genesis;
«eschatus$» – найти все строки, кончающиеся словом eschatus;
«^Out in cold$» – найти все строки, равные образцу.

Точка помечает любую букву:
«d...» – найти все слова из четырех букв, начинающиеся с d;

«d...$» – то же в конце строки;
«d..\ .» – найти все слова из четырех букв, начинающиеся с d и оканчивающиеся точкой (знак \ – обратный слэш – отменяет специальное значение следующего символа).

Квадратные скобы задают возможные значения знака:

«^ [abcxyz]» – найти все строки, начинающиеся с букв a, b, c, x, y или z;  «[^Dd][a–z][a–z][a–z]» – найти все слова из четырех букв, не начинающиеся с D или d, в которых последние три буквы – малые (от a до z).

Фигурные скобки задают количество повторений (замыкание) предыдущего знака:

«[^Dd][a–z]{3}» – то же самое, что и предыдущий пример;

«[a–z]{3,5}» – найти все слова, содержащие от 3 до 5 малых букв.

Частные случаи замыкания обозначаются специальным образом:

  •  для {0} – ноль и более раз;
  •  + для {1} – один и более раз;
  •  ? для {0,1} – ноль или один раз.

Например:

$ grep ".*" имя–файла – просто напечатает все строки файла.

Примеры использования регулярных выражений:

  •  уничтожить все пустые строки в файле: $ grep –v "^ $" file > newfile;
  •  уничтожить все строки, состоящие только из пробелов: $ grep –v "^ *$" file > newfile.

Создание командного файла

Командный файл (сценарий shell) состоит из отдельных команд; как правило, каждая команда начинается с новой строки. Создавать командный файл можно в тестовом редакторе, например vi.

Существует два способа  вызова командного файла на выполнение:
1. $ имя_интерпретатора_команд имя_сценария;

Например:

 bash comfile
2. $
chmod 755 имя_сценария  (сделать файл имя_сценария выполнимым, т.е. –rwxrxrx)

$имя_сценария
Примечание. Если вы не указываете полный путь к файлу, то поиск исполняемого файла осуществляется в каталогах, список которых содержится в переменной PATH.

Значение переменной PATH можно получить с помощью команды

$ echo $PATH

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

~/command


ПРИЛОЖЕНИЕ 5

Команды архивирования файлов в ОС Linux

При работе с Linux вы, может быть, еще не скоро столкнетесь с необходимостью работать с большинством консольных команд, поскольку имеются такие оболочки, как Midnight Commander, или графические оболочки типа KDE. Но с командами архивирования (точнее, разархивирования) вам работать придется обязательно, хотя бы потому, что вы будете часто встречать архивированные файлы в Интернете.

Основным средством архивирования в UNIX (а следовательно, и в Linux) является комплекс из двух программ – tar и gzip. Существует возможность использования arj, pkzip, lha, rar и т.д. – версии этих программ для Linux общедоступны. Исторически сложилось так, что пользователи Unix чаще применяют именно tar и gzip, и именно в таком формате распространяется большая часть программного обеспечения для Unix.

Программа tar

У тех, кто привык к архиваторам типа arj, которые собирают файлы в единый архив и сразу «сжимают» их, может возникнуть вопрос: «Зачем использовать две программы?» Дело в том, что tar расшифровывается как Tape ARchiver, он не сжимает данные, а лишь объединяет их в единый файл с последовательным доступом для последующей записи на ленту. По умолчанию этот архивный файл создается на ленточном накопителе, точнее, на устройстве /dev/rmt0. Если вы хотите создать архивный файл на диске, то необходимо использовать команду tar с опцией f, после которой указывается имя архивного файла.

У программы tar имеется 8 опций, отличающихся от остальных тем, что при вызове программы должна обязательно задаваться одна из этих опций. Эти опции определяют основные функции программы  (табл. П.5.1).

Таблица П.5.1

Основные опции программы tar

Опция

Значение

-A, --catenate,  --concatenate

Добавляет файлы в существующий архив

-c, --create

Создает новый архив

-d, -diff,           --compare

Найти различия между архивом и файловой системой

--delete

Удалить из архива (не может использоваться с магнитной лентой!)

-r, --append

Дописывает файлы в конец архива

-t, --list

Выводит список файлов архива

-u, --update

Добавляет только файлы, которые новее, чем имеющаяся в архиве копия

-x, --extract,     --get

Извлечь файлы из архива

Если вы работаете с файлами архивов на дисках, а не с ленточным устройством, то, очевидно, обязательной будет и опция f. Другие опции не являются обязательными, они служат только для конкретизации задания программе. Например, опция v заставляет программу выводить список обрабатываемых файлов.

Однобуквенные опции программы tar могут перечисляться друг за другом (вы увидите это в приводимых ниже примерах).

Не будем давать здесь описание всех опций команды tar, просто приведем несколько командных строк для выполнения самых необходимых действий с архивами.

Для того чтобы создать один tar–архив из нескольких файлов, используется команда:

[user]$ tar -cf имя_архива файл1 файл2 ...,

где опция -c сообщает программе, что необходимо создать (create) архив, а опция f говорит о том, что архив должен создаваться в виде файла (имя которого должно следовать сразу за этой опцией).

В именах файлов, которые сохраняются в архиве, можно использовать шаблоны имен файлов, в том числе просто символы–заместители * и ?. Благодаря этому можно очень короткой командой отправить в архив сразу много файлов. Например, для того чтобы создать архив, содержащий все файлы одного из подкаталогов (пусть это будет sub_dir) текущего каталога, достаточно дать команду

[user]$ tar -cvf имя_архива ./sub_dir/*

или даже просто

[user]$ tar -cvf имя_архива sub_dir

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

Заметим, что если в только что приведенном примере вместо * поставить *.*, то будут сохранены только те файлы, которые расположены непосредственно в подкаталоге sub_dir, а подкаталоги каталога sub_dir архивированы не будут. Если в том же примере не указать имя подкаталога, то будут архивироваться все файлы (и подкаталоги) текущего каталога. Но если вы дадите команду следующего вида:

[user]$ tar -cvf имя_архива ./.*

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

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

[user]$ tar -xvf имя_архива файлы

Получить список файлов архива можно командой

[user]$ tar -tf имя_архива | less

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

[user]$ tar -Mcvf /dev/fd0H1440 /каталог

Такая команда создаст на дискетах архив с содержимым каталога, разбивая его на тома. Монтировать дискеты перед запуском команды не нужно, программа просто пишет на устройство потоком (в данном случае на дискету по секторам). При этом никакой файловой системы на дискете не создается. После заполнения дискеты вам будет выдан запрос на смену дискеты. Прежде чем запускать такую команду на выполнение, приготовьте достаточное количество свободных дискет (помните, что tar не сжимает файлы), которые лучше всего соответствующим образом пометить и обязательно пронумеровать. Кроме того, имейте в виду, что вся информация на дискетах будет без предупреждения уничтожена.

Для того чтобы восстановить сохраненные данные, воспользуйтесь командой

[user]$ tar -Mxpvf /dev/fd0H1440

Если вы ошибетесь в порядке вставляемых дискет, программы сообщит вам об этом и попросит заменить том.

В заключение заметим, что всегда можно получить подсказку по использованию программы tar, дав команду

[user]$ tar -help

При этом если вы используете русифицированный дистрибутив Linux, то подсказка будет выдаваться по-русски.

Программа gzip

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

[user]$ gzip файл

В командной строке можно указать сразу несколько имен файлов или шаблон имени файла. Но в этом случае каждый из указанных файлов будет заархивирован отдельно (общий архив не создается).

Для того чтобы распаковать архив, используйте команду

[user]$ gzip -d файл_архива

или

[user]$ gunzip файл_архива

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

Перечислим кратко другие полезные опции программы gzip (табл. П.5.2).

Таблица П.5.2

Основные опции программы gzip

Опция

Значение

-h, --help

Вызов краткой помощи по использованию программы

-l, --list

Выдает имя файла, содержащегося в архиве, его объем и степень сжатия

-L, --license

Отображает номер версии и лицензию на программу

-N, --name

Сохранять (или восстанавливать) исходное имя и время создания файла

-n, --no–name

Не сохранять (не восстанавливать) исходное имя и время создания файла

-q, --quiet

Подавляет выдачу на экран предупреждающих сообщений

-r,

--recursive

Рекурсивно обрабатывать подкаталоги (используется в случае. когда задан шаблон имен обрабатываемых файлов)

Окончание табл. П.5.2

Опция

Значение

-S .suf,

--suffix .suf

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

-t, --test

Протестировать архивный файл

-v, --verbose

Выдача дополнительных сообщений в процессе работы программы

-V, --version

Отобразить версию программы

-f, --fast

Быстрое сжатие

-9, --best

Более высокая степень сжатия

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

[user]$ tar -czf имя_архива шаблон_имен_файлов (или имя_каталога)

Только имейте в виду, что в этом случае суффикс .gz не добавляется автоматически к имени создаваемого архива, поэтому лучше сразу задать имя архива с указанием обеих суффиксов: имя.tar.gz.

Программа bzip2

В последнее время все чаще вместо программы gzip используется архиватор bzip2, который обеспечивает более высокую степень сжатия и работает несколько быстрее.

Работает bzip2 примерно так же, как команда gzip, т. е. замещает каждый файл, имя которого задано в командной строке, сжатой версией, добавляя к имени файла суффикс .bz2.

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

В некоторых случаях сжатый файл может оказаться даже больше по размеру, чем исходный. Это происходит, например, для файлов длиной менее    100 байт, потому что механизм сжатия использует заголовок длиной около      50 байт. Для файлов, представляющих собой случайную последовательность символов (в том числе для выходных файлов большинства файловых архиваторов) длина файла увеличивается примерно на 0,5 %.

Команда bunzip2 (или bzip2 -d) разархивирует указанные в командной строке файлы. Если эти файлы не были созданы программой bzip2, они не будут разархивироваться, будет выдано соответствующее предупреждение. При разархивации bzip2 пытается угадать имя разархивируемого файла по следующим правилам:

  •  filename.bz2 заменяется на filename;
  •  filename.bz заменяется на filename;
  •  filename.tbz2 заменяется на filename.tar;
  •  filename.tbz заменяется на filename.tar;
  •  любое другое "имя" заменяется на "имя.out".

Опции командной строки для bzip2 очень похожи на опции команды gzip, но все же они не идентичны. Приведем краткую сводку наиболее необходимых в работе опций (табл. П.5.3).

Таблица П.5.3

Основные опции программы bzip2

Опция

Значение

-d,

--decompress

Принудительная разархивация. Эта опция необходима в силу того, что bzip2, bunzip2 и bzcat— это на самом деле одна и та же программа, которая сама по расширению имени файла принимает решение о том, какое действие надо выполнить над указанным файлом. Опция -d отключает этот механизм и заставляет программу разархивировать указанные файлы

-z, --compress

Принудительная архивация

-t, --test

Проверка целостности указанного файла(ов) без разархивации

-f, --force

Перезапись существующего файла. По умолчанию bzip2 не перезаписывает существующие файлы. Если вы хотите перезаписать существующий файл, надо задать опцию –f

-k, --keep

Сохранять (не удалять) исходные файлы при архивации или разархивации

-s, --small

Снизить требования к объему используемой оперативной памяти за счет снижения скорости архивации. Эту опцию рекомендуется применять на компьютерах с малым объемом ОЗУ (8 Мбайт и меньше)

-q, --quiet

Не выводить малосущественные сообщения

-v, --verbose

Выводить дополнительную информацию в процессе работе (представляет интерес в диагностических целях)

Окончание табл. П.5.3

Опция

Значение

-L, --license,

-V, --version

Отобразить версию программы и лицензионное соглашение

Аргументы командной строки, которым предшествует двойное тире и пробел, трактуются как имена файлов, даже если они начинаются с тире. Например:

[user]$ bzip2 -- -myfilename

Приведенных данных достаточно для квалифицированного применения архиваторов tar, gzip и bzip2. За дополнительными сведениями обращайтесь к интерактивной подсказке man. По утилите bzip2 имеется «Bzip2–HOWTO», переведенный на русский язык.


ОГЛАВЛЕНИЕ

[1] Лабораторная работа 4. Создание учетных записей пользователей и групп в среде ОС Linux. Организация рабочей среды пользователя

[2]
Лабораторная работа  5. Работа с файловыми системами ОС Linux

[3]
Приложение 3

[4] Текстовый редактор vi

[4.1] Режимы редактора

[4.2] Создание файла

[4.2.1] Создание текста в режиме Append (редактирования)

[4.2.2] Выход из режима Append

[4.3] Редактирование текста в командном режиме

[4.3.1] Перемещение курсора

[4.3.2] Удаление текста

[4.3.3] Добавление текста

[4.4] Завершение работы c vi

[4.5] Перемещение курсора по экрану

[4.5.1] Позиционирование курсора на символ

[4.5.2] Перемещение курсора в начало или конец строки

[4.5.3] Поиск символа в строке

[4.5.4] Позиционирование слов

[4.5.5] Позиционирование курсора на предложение

[4.5.6] Позиционирование курсора по параграфам

[4.5.7] Позиционирование в окне

[4.5.8] Прокрутка текста

[4.5.9] Переход на указанную строку

[4.5.10] Номера строки

[4.5.11] Поиск символов по шаблону: команды / и ?

[4.6] Создание текста

[4.6.1] Добавить текст

[4.6.2] Вставить текст

[4.6.3] Открыть строку для текста

[4.7] Удаление текста

[4.7.1] Удаление текста в режиме ввода текста

[4.7.2] Отменить последнюю команду

[4.7.3] Команды удаления в командном режиме

[4.7.4] Удаление слов

[4.7.5] Удаление параграфов

[4.7.6] Удаление строк

[4.7.7] Удаление текста после курсора

[4.8] Модификация текста

[4.8.1] Замена текста

[4.8.2] Подстановка текста

[4.8.3] Изменение текста

[4.9] Извлечение и присоединение текста

[4.9.1] Перемещение текста

[4.9.2] Копирование текста

[4.10] Копирование и перемещение текста с использованием регистров

[4.11] Расширенный режим работы редактора vi

[4.11.1] Временный возврат к shell

[4.11.2] Запись текста в новый файл

[4.11.3] Добавить файл в буфер

[4.11.4] Провести глобальные изменения

[5] Команды shell работы с файлами

[5.1] Команда cat

[5.2] Команда cp

[5.3] Команда mv

[5.4] Команды rm и rmdir

[5.5] Команды more и less

[5.6] Команда find и символы шаблонов для имен файлов

[5.7] Команда split — разбиение файла на несколько частей

[5.8] Сравнение файлов и команда patch

[5.9] Поиск строк в файле по образцу (grep

[5.10] Создание командного файла

[6] Команды архивирования файлов в ОС Linux

[6.1] Программа tar

[6.2] Программа gzip

[6.3] Программа bzip2

[7]
ОГЛАВЛЕНИЕ


 

А также другие работы, которые могут Вас заинтересовать

28307. Субъекты и объекты гражданских правоотношений 14.49 KB
  Субъекты и объекты гражданских правоотношений Элементами гр. Субъекты гражданских правоотношений это те лица которые несут права и обязанности в правоотношении. В качестве субъектов гражданских правоотношений выступают граждане РФ иностранные граждане лица без гражданства юридические лица как российские так и иностранные. Особый субъект гражданских правоотношений государство и муниципальные образования.
28308. Основания возникновения, изменения и прекращения гражданских правоотношений 13.73 KB
  возникают из: сделок административных актов в резте создания произведений науки литературы и искусства и иных резтов интеллект деятети. вследствии причинения вреда другому лицу а также в следствии приобретения или сбережения имущества за счет средств другого лица без достаточных оснований в следствии иных действий граждан и организаций.
28309. Правосубъектность: понятие, состав, сравнительная характеристика по видам субъектов гражданских правоотношений 15.56 KB
  Так ребенок умершего зачатый при его жизни но родившийся после его смерти по закону приобретает право на наследство умершего. Факты рождения и смерти устанавливаются по медицинским показаниям. С определением момента смерти также связано много различных медицинских и правовых вопросов. Так в медицине различают состояние клинической смерти когда происходит остановка работы отдельных органов – сердца почек головного мозга – однако существует возможность восстановления жизнеспособности организма и биологической смерти когда начинаются...
28311. Понятие и виды права общей собственности 13.49 KB
  Понятие и виды права общей собственности. В силу различных причин имущество может принадлежать на праве собственности не одному лицу а 2 и более лицам. В таких ситуациях на это имущество возникает право общей собственности. Выделяют два вида общей собственности.
28312. Право общей долевой собственности: понятие, режим, особенности 14.05 KB
  Право общей долевой собственности: понятие режим особенности. Содержание права общей долевой собственности составляет собственникам правомочия по владению пользованию и распоряжению общим имуществом и каждый собственник независимо от размера своей доли имеет 1 голос при решении правовых вопросов касающихся этой собственности. Осуществление права общей долевой собственности должно происходить по взаимному согласию всех собственников. Поэтому при осуществлении права общей долевой собственности в принципе не имеет значения какой...
28313. Право общей совместной собственности 14.78 KB
  Право общей совместной собственности: понятие режим особенности В ГК РФ закреплены 2 вида совместной собственности:1 Собственность супругов; 2 Членов крестьянского фермерского хозяйства. Участники совместной собственности так же как и участника долевой собственности владеют пользуются и распоряжаются общ. Сделки по распоряжению общим имуществом может совершать каждый из участников совместной собственности если иное не вытекает из соглашения между ними. Необходимым условием возникновения совместной собственности супругов является...
28314. Общество с ограниченной и дополнительной ответственностью как участники гражданских правоотношений 18.21 KB
  Участники общества с ограниченной ответственностью не отвечают по его обязательствам и несут риск убытков связанных с деятельностью общества в пределах стоимости своих вкладов. Главная гарантия обеспечения интересов кредиторов общества – его уставный капитал. Величина уставного капитала общества должна быть не меньше 100кратного размера минимальной оплаты труда установленного законодательством РФ на дату представления учредительных документов. Уставный капитал составляется из стоимости вкладов участников общества.
28315. Акционерное общество. Виды 15.58 KB
  Акционерным обществом признается общество уставный капитал которого разделен на определенное число долей выраженных ценными бумагами акциями; участники акционерного общества акционеры не отвечают по его обязательствам и несут риск убытков связанных с деятельностью общества в пределах стоимости принадлежащих им акций п. Характерным признаком отличающим акционерное общество от общества с ограниченной ответственностью является удостоверение прав акционера ценной бумагой акцией. Мелкие акционеры в большинстве своем преследуют цель...