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 эта команда меняет права или владельца
u + r
chmod g - w file1 file2
o - x
a - тип права
классы доступа
пользователя
$chmod u+x, go+x repeat.bat
$
chmod
u=rwx, g0=rx repeat.bat
эти права даются, остальные обнуляются
$
chmod
755 repeat.bat
u o g
rwx rwx rwx
1
11
101 101
7 5 5
После редактирования файла следует еще раз проверить права, так как они могут слететь.
Далее
$chmod 755 repeat.bat
$
repeat.bat
Shell.ref 3
три самых встречающихся слова
$1 $2
Результат:
2 Bourne
2 Korn
6 Shell
tr -cs A-Za-z # команда транcлитерации, является фильтром для копирования ввода в вывод с преобразованием символов один в один
$
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
uniq -n
Blue
Red Green
uniq -d Green |
Red Blue Green |
uniq -c
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 |
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

Red