Chown – владелец передает права владения данным файлом другому пользователю или группе.




$chown нов_владелец имя_файла

 

Пример:

$cp f1 /home/ira/f1

$ls -l /home/ira/f1

-rw- r-- --- 1.......lev.....user...<> f1 - владелец копии- lev

$chown ira /home/ira/f1 - смена владельца

$ls -l

-rw- r-- --- 1.......ira......user...<> f1 - владельцем копии файла стала ira, но читать (r) копию может и lev как член общей группы.

Также можно сменить и группу.

 

Chgrp - передача прав другой группе (сменить группу).

$chgrp нов_группа имя_файла

Пример:

$ls -l f2

-rw- r-- ---...................lev user <> f2

$chgrp class f2

$ls -l f2

-rw- r-- ---...................lev class <> f2 - сменили группу, но владелец как член новой группы также имеет права доступа к файлу

$chown serg f2

-rw- r-- ---..................serg class <> f2 - сменили владельца в новой группе. Старая группа переходит в разряд (о). Предыдущий владелец переходит в разряд (g).

 

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

 

Тема 18. КОНВЕЕРЫи ФИЛЬТРЫ

 

Операционная система UNIX обеспечивает обмен информацией (управляющей и прикладной) между процессами. Обмен данными между процессами осуществляется через программный канал. По сути, это некоторый системный файл, в который одна команда пишет информацию, а другая - читает. Если команды считывают информацию со стандартного буферного системного файла ввода (stdin) и направляют в стандартный буферный файл вывода (stdout), то такие команды могут быть объединены в единую командную строку – конвеер. Конвеер позволяет использовать вывод одной команды в качестве ввода другой. Конвеер по сути это программный канал для создания потока данных от команды к команде.

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

shell при обнаружении в командной строке команды, связываемые специальным символом “|” (вертикальная черта):

 

команда_1 | команда_2 | команда_3 |... | команда_n

 

Конвейер представляет собой технологическую цепочку обработки исходной информации.

 

Пример.

$ ls > buffile

$ wc -l < buffile

$ rm buffile <NewLine>

$

Эта же задача может быть решена проще и более компактно с использованием конвейера:

 

$ ls | wc -l <NewLine>

$

 

Если команда в конвеере не меняет или сокращает передаваемую информацию, то такие команды называются командами – фильтрами.

 

Пример.

$ ls -l| grep ‘mar’|wc -l <NewLine>

- вывод на экран числа строк текущего каталога, содержащих подстроку "mar" (подсчитывается число файлов, модифицированных в марте).

 

Пример.

$who>fil

$sort<fil или:

 

$who|sort

$

Конвеер удобно использовать для просмотра вывода команды когда информация занимает больше одного экран:

$cat filmax|more

 

Если при решении задач возникае потребность отображения результатов одновременно на нескольких внешних устройствах, то это обеспечивает следующая команда- тройник:

 

tee [-ключи] файл -дублирование стандартного вывода(экран)

в указанный файл

Ключи:

-i - игнорирование прерываний, что обеспечивает непрерывность

вывода;

-a - содержимое ввода добавляется к существующему файлу в его

конец (накопление данных).

Пример.

$ ls -l | tee -a fil.res

 

Конвейер обеспечивает вывод содержимого каталога на экран

и добавляет эти данные к содержимому fil.res

Пример.

$ ls -l | tee fil | wc -l

$сat fil - содержимое файла можно просмотреть на экране.

Полный листинг каталога выводится в файл fil, а число

строк в каталоге - на экран (на стандартный вывод). Однако вывода

каталога на экран в данном случае не будет, т.к. выходной поток

команды ls после команды tee перенаправляется опять в конвеер

(для команды wc).

Пример.

$find. -type d|tee fil|wc -l - подсчет числа подкаталогов в текущем каталоге и вывод их полных маршрутных имен в файл fil.

 

Рассмотренные возможности использования программных кана-

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

 

Еще одна команда – фильтр разделяет и объединяет по составляющим элементам строки символов во входном потоке данных с выводом результата на экран:

 

$cut -k [имя_входного_файла]

- если имя входного файла не указано,то входной поток поступает со стандартного устройства ввода (клавиатура) или из программного канала.

Некоторые ключи:

-f<список_номеров_полей_в_строке_файла> - в выходной поток передаются только указанные поля, разделенные символьными разделителями;

-d<вид_разделителя_полей_в_строке_файла> примеры разделителей: ‘;’ или ‘:’ или ‘ ’, по умолчанию – табуляция.

 

Эти два ключа применяются совместно.

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

 

-b<число_байтов_или_выражение_для_подсчета числа> побайтовое вырезание полей из строк входного потока и направление их в выходной поток;

-c<число_символов_или_выражение> - посимвольное вырезание полей из строк входного потока и направление их в выходной поток.

 

Несколько не связанных между собой примеров использования команды:

$сut -f1 -d’:’ /etc/passwd -формируется и выводится на экран список зарегистрированных пользователей

 

$who|cut -f1 -d’ ’|tee filuser -то же и дополнительный вывод в файл

 

$cat /etc/passwd|cut -d’:’ -f1

 

$ls -l|cut -b-15 -вырезаются байты с первого по 15

 

$ls -l|cut -с11-25 - диапазон номеров символов в строке

 

$ls -l|cut -с25- |cat >>fil - вырезаются байты от 25 до конца строки

 

Значение числа элементов может быть вычислено, например:

-c$a - значение задается переменной или

-с`expr ………..` -может быть использовано арифметическое или логическое выражение (см. ниже) и т.п..

 

Тема 19. СОЗДАНИЕ И РЕДАКТИРОВАНИЕ ТЕКСТОВЫХ ФАЙЛОВ

 

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

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

 

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

 

Начало работы с редактором:

$vi имя_файла [*] вызов редактора и файла

Если файл не существует, то создается новый пустой

Редактируемый файл переписывается в буфер. Далее все изменения в редактируемом файле соответственно осуществляются в буфере в КОМАНДНОМ РЕЖИМЕ - нажатые клавиши интерпретируются как команды редактирования текста. В командный режим редактор переводится автоматически сразу же после входа в программу vi.

 

По завершении редактирования надо выйти из редактора с сохранением файла:

<Esc>:wq! - отредактированная копия замещает исходный файл. Если же требуется отменить все редактирование, то:

<Esc>:q!

В режиме редактирования, например, для ввода новых фрагментов текста файла; используются следующие клавиши

команды режима ввода текста (значения клавиш на экране не отображается):

 

a (append) - набор последующего текста в текущую строку после курсора

i (insert) - вставка текста в текущую строку после курсора

o (open) - вставить пустую строку после текущей

 

Замечание: если в качестве управляющей используется клавиша нижнего регистра – операция редактирования реализуется после курсора, если верхнего - перед курсором.

Операции ввода текста необходимо завершить командой

<Esc> - переводит редактор в режим редактирования последнего варианта текста. В командном режиме могут исполняться и другие группы команд.

 

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

 

Команды удаления текста

х - удаление текущего символа

[#]dw - удаление # текущих слов

[#]dd -удаление текущих строк

dG - удаление всех строк от текущей до последней

d$ - удаление конца строки от текущей позиции

d^ - удаление начала строки до текущей позиции.

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

 

Команды отмены произведенных изменений в текущей строке:

u - отмена (undo) последнего изменения

U - отмена всех изменений.

 

Команды копирования указанного в команде объекта в буфер:

[#]yw - копирование (yank) текущего слова

[#]yy - копирование текущей строки

уG - копирование строк от текущей до конца файла

yS - копирование части строки от курсора до конца строки

y^ - копирование части строки от курсора до начала строки

 

Команды вставки буфера в текст:

P - перед курсором

p - после курсора

 

Команды изменения текста:

r<символ> - заменяет (change) текущий символ на указанный

с<объек> - заменяет указанный объект на текст, который вводится с клавиатуры - <Esc>

- #cw -изменение текущего слова

- #cc - всей текущей строки

- cG - всех строк файла от текущей до последней

- cS -части строки от курсора до конца строки

- с^ - части строки от курсора до начала строки.

 

Команды поиска строки файла по фрагменту текста:

/<текст> - начиная от текущей строки до конца файла с переходом

на его начало

?<текст> - начиная от текущей строки до начала файла и по всему

n - поиск следующей строки в файле, аналогичной найденной

N - поиск предыдущего вхождения в файл заданной строки.

Редактор имеет возможности поиска строк по шаблонам (например по диапазону символов) и пр..

На экране содержимое редактируемого файла представляется как бы через некоторое окно со следующими полями (сверху - вниз):

- область текста файла;

- область пустых строк, которые надо ввести, если они понадобятся;

- тильда (~) - область для ввода дополнительного текста файла, но пустых строк этой области в файле нет;

- область сообщений редактора или область префиксных ex-команд - операций редактора над группой строк файла или над целым файлом (команды вводятся на приглашение ":", отображаются на экране и исполняются по команде управляющей клавиши перевода строки).

 

Команды используются для многострочных операций с редактируемым файлом и настройки сеанса редактирования:

:w файл - запись текущего буфера в файл;

:m,nw файл - запись строк с m-ой по n-ую в файл;

:e! - отмена всех изменений в буфере с перезагрузкой в него файла с диска;

:e файл - загрузка файла в буфер редактирования, файл замещает старое содержимое самого буфера;

:r файл - добавление содержимого файла после текущегоположения курсора;

:set опция - значение опций определяет настройку редактора и пр..

 

Vi – КРАТКИЙ СПРАВОЧНИК

$vi имя_файла [*] вызов редактора и файла (создание файла)

~ - тильда - для внесения нового текста

<Esc>:wq! - выход с сохранением файла

<Esc>:q! - выход без сохранения файла

Ввод текста:

i/I (insert) - вставка текста в начало текущей строки

a/A (append) - набор текста в конец текущей строки

o/O (open) - вставить пустую строку после/перед текущей

<Esc> - переход из режима ввода в режим редактирования текста.

Команды удаления текста (в буфер):

х - удаление текущего символа

[#]dw - удаление # текущих слов

[#]dd -удаление # текущих строк

dG - удаление всех строк от текущей до последней

d$ - удаление конца строки от текущей позиции

d^ - удаление начала строки до текущей позиции.

Команды отмены произведенных изменений в текущей строке:

u - отмена (undo) последнего изменения

U - отмена всех изменений.

Команды копирования указанного в команде объекта в буфер:

[#]yw - копирование (yank) текущего слова

[#]yy - копирование текущей строки

уG - копирование строк от текущей до конца файла

y$ - копирование части строки от курсора до конца строки

y^ - копирование части строки от курсора до начала строки

Команды вставки буфера в текст:

p/P - после/перед курсором

Команды изменения текста:

r<символ> - заменяет (change) текущий символ на указанный

с<объек> - заменяет указанный объект на текст, с клавиатуры - <Esc>:

#cw -изменение текущего слова

#cc - всей текущей строки

cG - всех строк файла от текущей до последней

cS -части строки от курсора до конца строки

с^ - части строки от курсора до начала строки.

Команды поиска строки файла по фрагменту её текста:

/<текст> - от текущей строки до конца файла с переходом на начало

?<текст> - от текущей строки до начала файла и по всему файлу

n - поиск следующей строки в файле, аналогичной найденной

N - поиск предыдущего вхождения в файл заданной строки.

Префиксные команды:

:w файл - запись текущего буфера в файл

:m,nw файл - запись строк с m-ой по n-ую в файл

:e! - отмена всех изменений в буфере с перезагрузкой в него файла с диска

:e файл - загрузка файла в буфер с замещением старого содержимого

:r файл - добавление содержимого файла после текущего положения курсора

:set опция - настройка редактора (см. полное описание vi).

 

 

ВВЕДЕНИЕ В shell- ПРОГРАММИРОВАНИЕ

Тема 20. ОПЕРАТОРЫ– КОМАНДЫ

 

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

Такие программы, а также командные файлы, содержащие их, назы-

вают shell-процедурами или shell-файлами. От обычных программ

они отличаются способом их обработки. Процедура не требует ком-

пиляции, построения объектного файла и последующей компоновки, так как shell, обрабатывающий их, является транслятором интерпретирующего, а не компилирующего типа. Процедура - аналог командного файла в MS-DOS, но с более широкими возможностями. Здесь же отметим, что рассмотренные ниже операторы могут быть использованы как в теле процедуры, так и выполнены независимо как обычные команды в диалоговом режиме.

 

Текст процедуры набирается как обычный текстовый файл. Для этих целей при создании большой процедуры целесообразно использовать редактор vi. Для изучения принципов на примере простейших процедур можно использовать один из способов создания пустых файлов с последующим заполнением командами (рассматривали выше) или rоманду cat.

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

 

$ chmod u+x shfil

$ shfil

$

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

 

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

$ sh -c "shfil" или

$ sh shfil

 

В этих случаях по команде sh вызывается вторичный интерпретатор shell, и в качестве аргумента ему передается командная строка, содержащая имя файла процедуры shfil, находящегося в текущем каталоге. Однако, этот способ накладывает ограничения на исполнение некоторых команд ОС управления процессами (например nice – см. ниже).

 

Процедуре при ее запуске могут быть переданы аргументы. В общем случае командная строка вызова процедуры имеет следующий вид:

$ имя_процедуры $1 $2...$9

$

Каждому из девяти первых аргументов командной строки в

тексте процедуры соответствует один из позиционных параметров:

$1, $2,..., $9 соответственно. Параметр $0 соответствует имени

самой процедуры, т.е. первому полю командной строки. К каждому

из 10 первых аргументов можно обратиться из процедуры, указав номер его позиции.

 

Некоторые вспомогательные операторы:

 

echo - вывод сообщений из текста процедуры на экран.

 

$ echo "начало строки

> продолжение строки" или единой строкой

$

 

# - для обозначения строки комментария в процедуре. (Строка не будет обрабатываться shell-ом).



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: