Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Семинары по информатике.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
228.35 Кб
Скачать

5. Разгрузка

Все завершающие действия выполняет команда shotdown. Её неявный вызов осуществляет кнопка в верхнем левом углу The System Shotdown. Жмем Halt.

Для смены раскладки жмем CTRL и колесико внутри текстового поля xedit. В окне выбираем Edit Mode Plain/None.

Семинар №2

Подготовка к лабораторной работе №1.

Задание:

Разработать командную процедуру для поиска в любом текстовом файле заданного числа наиболее часто повторяющихся слов из латинских букв, которые начинаются с заглавной буквы. Имя файла и число слов должны передаваться ей через аргументы командной строки. Результат поиска должен отображать стандартный вывод списка слов, где они упорядочены по частоте повторений, а для каждого слова указано число его повторений. В командной процедуре должен быть реализован конвейер команд: cat, tr, grep, sort, uniq, tail, который обеспечивает последовательную обработку текста и отображение требуемого результата.

Командная процедура-repeat.bat

#!/bin/bash – для командного процессора

сat $1 | # запись заданного файла в канал

tr -cs A-Za-z ‘\012’ | # сжатие не букв в перевод строки

grep ‘^[A-Z]’ | # поиск слов с заглавной первой буквой

sort | # сортировка в алфавитном порядке

uniq -c | # подсчет и исключение повтора слов

sort -n | # сортировка по числу повтора слов

tail -n | # вывод заданного числа слов

Открываем новый редактор, называем Shell.ref

Текст:

sh – Bourne Shell

csh – C language Syntax Shell

ksh – Korn Shell

pdksh – Public Domain Korn Shell

bash – Bourne Again Shell

wish – Window Shell

Это будет файл, с которым мы будем работать. Теперь нужно дать командной процедуре право на выполнение.

3 класса прав доступа

User access (u) – для владельца-пользователя файлом

Group access (g) – для членов группы владельцев

Other access (o) – для остальных пользователей

Командной процедуре можно дать 3 права:

read (r) – на чтение

write (w) – на запись

execute (x) – на выполнение

После команды ls -l увидим следующее:

rw- r-- r-- 1 os users 104 sep 10 10,10 repeat.bat

u g o

rw- r-- r-- права доступа

os пользователь

users группа пользователей

104 размер

sep 10 10,10 дата и время создания

chmod эта команда меняет права или владельца

Двойные круглые скобки 21 Двойные круглые скобки 19 u + r

chmod g - w file1 file2

o - x

a - тип права

классы доступа

пользователя

$chmod u+x, go+x repeat.bat

$Прямая со стрелкой 22 chmod u=rwx, g0=rx repeat.bat

эти права даются, остальные обнуляются

$Прямая со стрелкой 25 Прямая со стрелкой 24 Прямая со стрелкой 23 chmod 755 repeat.bat

u o g

rwx rwx rwx

1Прямая со стрелкой 28 11 101 101

7 5 5

После редактирования файла следует еще раз проверить права, так как они могут слететь.

Далее

$chmod 755 repeat.bat

$Прямая со стрелкой 31 Прямая со стрелкой 30 Прямая со стрелкой 29 repeat.bat Shell.ref 3 три самых встречающихся слова

$1 $2

Результат:

2 Bourne

2 Korn

6 Shell

tr -cs A-Za-z # команда транcлитерации, является фильтром для копирования ввода в вывод с преобразованием символов один в один

$Прямая соединительная линия 289 Прямая соединительная линия 288 tr –csq str1 str2

Задают соответствия между входными и выходными файлами

$tr a-z A-Z # замена всех маленьких букв на большие

Если str1 короче str2, то недостающий символ будет заменяться последним.

Пример: $echo XYZZD | tr XYZ xy

Результат: xyyyD

Ключи:

-с (complement) означает, что символы str2 ставятся в соответствии str1 до диапазона кодов восьмеричной системы счисления

$tr -c ’[!-~]’ ‘\040’ все не отображаемые символы будут замены на пробел (кроме этого множества)

$man ascii - таблица кодов

Oct Dec Hex Char

041 33 21 !

……………………..

……………………..

0177 ……………. ~

-s (squeeze –report) обеспечивает сжатие повторений любого символа str2 при выводе до одного экземпляра

Пример: $echo ssstrings | tr -s a-z A-Z

Результат: STRINGS

Пример: $tr -s “” ‘\012’

Результат: Все пустые строки, идущие в ряд, оставят только одну строку

-d (delete) все символы стандартного ввода, которые входят в str1 не будут передаваться в стандартный вывод

Пример: $tr -d 0-9 удаление всех цифр

grep, egrep (extended), fgrep(fixed).

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

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

Команда grep использует базовый набор метасимволов ‘.[]\^$*’ \{\}

Команда egrep использует расширенный набор ‘+?!(){}’

$fgrep ‘#include’*.c

$grep ‘^#include’*.c

$grep -x ‘ ‘ file.txt выдает строки только с тремя пробелами

$grep -x ‘[ ]\{3,3\}’ file.txt

$egrep -x ‘[ ]{3}’ file.txt

$fgrep -x ‘ ‘ file.txt

Команда Sort используется для записи строк стандартного ввода и текстовых файлов в лексиграфическом порядке на основе кодов их символов. Без аргументов Sort возвращает строки стандартного ввода и выводит их в лексиграфическом порядке.

$ sort in.txt -0 out.txt – сортировка в файле in.txt и запись результата в файл out.txt

-f(fold) – позволяет не учитывать регистр букв

-i(ignore) – исключает сравнение отображаемых символов, которые имеют коды меньше (040)8 пробела и больше (0176)8 тильды(~)

-n(numeric) – используется для сортировки по арифметической величине, а не по лексиграфической

-r(reserve) – реверсирует порядок сортировки строк

-u(unique) – сжимает все одинаковые строки, которые будут расположены рядом после сортировки, в одну строку

-b(blank) – позволяет не учитывать при сравнении лидирующие символы пробела и табуляции

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

$ uniq in.txt out.txt

Stdin

uniq

Прямая со стрелкой 312 Red

uniq -n

Red

Blue

Blue

Red

Green

uniq -d

Green

Green

Red

Blue

Green

uniq -c

Прямая со стрелкой 303

2 Red

1 Blue

2 Green

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

-d(duplicate) обеспечивает вывод только повторяющихся строк

-с дополняет режим умолчания числом повторений перед каждой строкой вывода

2 Red

1 Blue

2 green

Команда tail считает строки из стандартного ввода и в стандартный вывод отправляет число последних строк с заданным параметром –n, а число необходимых строк определяется позиционной переменной $2.

tee – позволяет сохранить промежуточный результат работы

tee file.txt читает строки стандартного ввода, передает в стандартный вывод и подготавливает его в отдельном файле.

$ls -l tee file.txt |

Прямая соединительная линия 316 Прямая соединительная линия 315 stdin stdout Результат идет в файл до необходимого места

а также в стандартный вывод.

file.txt

Файл регистрации passwd.

username:*: useid:groupid:comment:Homedir:shell

Найдем пользователей, использующих /bin/bash или /bin/sh

$egrep -i ‘^[A-Z]{3}’ игнорирует различие заглавных и строчных символов.

$egrep -v отображает строки, которые не соответствуют образцу.

$egrep -w позволяет искать только целые слова из букв и цифр, соответствующих образцу.

$egrep -o позволяет показывать только часть строки, соответсвующих образцу

$grep -ow ‘^[a-z0-9]*’ /etc/passwd