- •Министерство образования и науки Украины
- •Практическое занятие №1
- •1.1. Сокращенная запись двоичных чисел в восьмеричной и шестнадцатеричной системах счисления
- •1.2. Преобразование восьмеричных и шестнадцатеричных чисел в двоичные
- •1.3. Преобразование двоичных, восьмеричных и шестнадцатеричных чисел в десятичные
- •1.4. Преобразование десятичных чисел в двоичные, восьмеричные и шестнадцатеричные
- •2. Упражнения
- •3. Содержание отчёта
- •Практическое занятие №2
- •1.1. Вход в систему
- •1.2. Редактирование командной строки
- •1.3. Память командных строк
- •1.4. Переключение виртуальных консолей
- •1.5. Изменение консольных шрифтов
- •1.6. Основные команды
- •Выполнение некоторых команд
- •2. Команда просмотра содержимого каталогов -ls (LiSt) – выдает на экран перечень файлов и каталогов (по умолчанию из текущего каталога).
- •Жесткая ссылка обозначает ся так же, как файл, на который она ссылается, счетчик ссылок при этом будет иметь значение больше 1.
- •3. Команда создание новых каталогов - mkdir.
- •5. Команда копирование файлов -cp (CoPy).
- •6. Команда перемещение файлов - mv (MoVe).
- •7. Команда удаление файлов - rm (ReMove).
- •8. Команды просмотра содержимого файлов more и cat.
- •Подстановочные символы
- •1.7. Выход из системы
- •2. Упражнения
- •Используя справочную информацию из п.1.6 Основные команды, изучите работу рассмотренных команд с различными параметрами и опциями:
- •1.2. Перенаправление ввода и вывода
- •1.3. Перенаправление с добавлением
- •1.4. Использование конвейера
- •2. Упражнения
- •3. Содержание отчёта
- •Справочная информация
- •Практическое занятие №4 Псевдонимы команд в ос qnx Цель – создание псевдонимов команд для облегчения работы в среде ос qnx
- •1. Краткие теоретические сведения
- •1.1. Управление связями файлов
- •1.2. Жесткие связи
- •1.3. Символические связи
- •1.4. Права доступа к файлам
- •1.5. Зависимости
- •1.6. Изменение прав доступа
- •2. Упражнения
- •3. Содержание отчёта
- •1.2. Сравнение файлов (команда diff)
- •1.3. Подсчет числа слов, строк и байт в файле (команда wc)
- •1.4. Потоковый редактор sed
- •2. Упражнения
- •/Usr/bin/grep
- •/Usr/xpg4/bin/grep
- •/Usr/xpg4/bin/grep
- •Операнды
- •/Usr/bin/grep
- •/Usr/xpg4/bin/grep
- •Использование
- •Работа с большими файлами
- •/Usr/bin/who
- •/Usr/xpg4/bin/who
- •Операнды
- •1.1. Ввод текста
- •1.2. Редактирование текста
- •1.3. Сохранение файлов и выход из VI
- •1.4. Редактирование еще одного файла
- •1.5. Включение других файлов
- •1.6. Выполнение команд Shell
- •2. Упражнения
- •3. Содержание отчёта
- •Практическое занятие №7 Работа с текстовыми файлами Цель – знакомство с командами, работающими с текстовыми файлами (awk-интерпретатор скриптовый)
- •1. Краткие теоретические сведения
- •1.1. Язык awk
- •1.2. Регулярные выражения
- •Метасимволы, используемые в регулярных выражениях
- •1.3. Действия
- •1.4. Awk-переменные и выражения
- •1.5. Использование операций
- •1.6. Использование массивов
- •1.7. Селекторы
- •1.8. Использование операторов
- •1.9. Ввод и вывод данных
- •1.10. Встроенные функции
- •2. Упражнения
- •Структура файла query1
- •Структура файла query2
- •3. Содержание отчёта
- •1.2. Граматика языка shell
- •2. Упражнения
- •3. Содержание отчёта
- •Выполнить:
- •2. Упражнения
- •Примечание:
- •3. Содержание отчёта
- •1.1. Компоновка объектных модулей
- •1.2. Отладка
- •2. Упражнения
- •Задание №1
- •Задание №2
- •Задание №3
- •Задание №4
- •Задание №5
- •Задание №6
- •Задание №13
- •Задание №14
- •Задание №15
- •Задание №16
- •Задание №17
- •Практическое занятие №11
- •2. Упражнения
- •3. Содержание отчёта
- •1.2. Создание каталога
- •1.3. Биты режима для прав доступа
- •1.4. Удаление каталога
- •1.5. Создание жесткой связи
- •1.6. Создание символической связи
- •1.7. Чтение символической связи
- •1.8. Переименование файла
- •1.9. Удаление файла
- •1.10. Обработка ошибок
- •2. Упражнения
- •3. Содержание отчёта
- •1.2. Проверка возможностей управления работой и процессами в shell
- •2. Упражнения
- •3. Содержание отчёта
- •1.3. Ошибки, связанные с именами файлов
- •1.4. Доступ к файлу
- •2. Упражнения
- •3. Содержание отчёта
- •Практическое занятие №15 Организация процессов вQnx
- •1. Методические указания по выполнению практической работы
- •1.1. Файл main.O
- •1.2. Файл input.C
- •1.3. Файл output.C
- •1.4. Файл process.C
- •1.5. Используемые функции
- •1.6. Получение информации о процессах
- •2. Упражнения
- •1.2. Клиент
- •1.3. Определение идентификаторов узла, процесса и канала (nd/pid/chid) нужного сервера
- •1.4. Применение обмена сообщениями
- •2. Упражнения
- •3. Содержание отчёта
- •Практическое занятие №17 Организация потоков в qnx
- •1. Краткие теоретические сведения
- •1.1. Запуск потока
- •1.2. Администрирование атрибутов потока
- •Текст программы
- •Результаты
- •1.2. Текст программы
- •1.3. Последовательность действий
- •1.4. Результаты
- •2. Упражнения
- •3. Содержание отчёта
1.10. Встроенные функции
Встроенные функции:
sin (expr) |
синус expr |
cos (expr) |
косинус expr |
exp (expr) |
возведение в степень expr |
log (expr) |
натуральный логорифм expr |
sqrt (expr) |
извлечение корня expr |
int (expr) |
целая часть числа |
length (s) |
длина строки s |
printf (fmt, ...) |
форматирование (аналогично Си) по спецификации fmt. |
substr (s, m, n) |
подстрока в n символов строки s, начинающаяся с m. |
getline () |
чтение следующей строки. |
0 |
конец файла, иначе 1. |
index (s1, s2) |
номер позиции, с которой s1 совпадает с s2, иначе 0. |
split (s, M, c) |
строка s разбивается элементы массива M по разделителю c (по умолчанию FS=" "); функция возвращает число полей. |
Примеры.
1) awk ' BEGIN {FS = "."; a=0}
length ($1) > 8 {print (length ($1), $0);
a++
}
END {print ("Найдено строк: " a) }' f-awk
Результат:
9 Сидоров С.К. 1979 40
10 Хведоров И.Х. 1970 60
Найдено строк: 2
Здесь поля разделяются по ".", выбираются строки у которых длина первого поля больше 8-ми, и их длина "length ($1)" печатается перед строкой "$0".
2) awk '{i=split($0, Name, ".");
for (j=1; j<=i; j++)
print ("Name[" j "]=" Name[j])
}' f-awk
Результат:
Name[1]=Иванов И
Name[2]=И
Name[3]= 1980 50
Name[1]=Петров А
Name[2]=В
Name[3]= 1979 40
Name[1]=Сидоров С
Name[2]=К
Name[3]= 1979 40
Name[1]=Хведоров И
Name[2]=Х
Name[3]= 1970 60
3) awk '{print (length)}' f-awk
Результат:
22
22
22
22
Поскольку все строки были выровнены пробелами, а в длине строки учитываются все символы до конца строки.
4) awk '{printf "%7.2f %s\n", NR, $0}' f-awk
echo
awk '{printf "\t%s %s \n", NR, $0}' f-awk
Результат:
1.00 Иванов И.И. 1980 50
2.00 Петров А.В. 1979 40
3.00 Сидоров С.К. 1979 40
4.00 Хведоров И.Х. 1970 60
1 Иванов И.И. 1980 50
2 Петров А.В. 1979 40
3 Сидоров С.К. 1979 40
4 Хведоров И.Х. 1970 60
2. Упражнения
УПРАЖНЕНИЕ 2.1.
Выполнить и отобразить в отчете следующие действия:
Создайте произвольный текстовый файл и два файла следующей структуры:
Структура файла query1
Структура файла query2
УПРАЖНЕНИЕ 2.2.
В текстовом файле перенесите третью от конца строчку в начало файла.
В текстовом файле первый символ каждой строки заменить на первый символ предыдущей строки. Первая строка остается без изменений.
В файле query1 определить общее число отделов в фирме.
В файле query1 определить количество сотрудников на каждой должности.
В файле query1 определить отделы, в которых нет менеджеров ("MANAGER").
В файле query1 определить среднюю зарплату продавцов ("SALESPERSON").
В файле query2 определить трех покупателей, которым предоставлены наибольшие кредиты.
В файле query2 определить средний кредит для каждого штата.
Для протоколирования работы используйте команду script.
3. Содержание отчёта
Номер практической работы.
Название и цель работы.
Краткое описание команд.
Результаты выполнения упражнений 2.1-2.2.
Справочная информация.
Script протоколирование сеанса
СИНТАКСИС script [-a] файл
ОПИСАНИЕ
Команда script начинает "вложенный" сеанс и протоколирует весь терминальный ввод и вывод в заданном файле. Завершение вложенного сеанса и выполнения команды skript происходит по нажатию комбинации клавиш Ctrl+D.
ОПЦИИ
-a
добавление протокола нового сеанса к содержимому файла, если эта опция не задана, то файл создается заново.
ПРАКТИЧЕСКОЕ ЗАНЯТИЕ №8
Программирование сценариев для интерпретатора shell
Цель – получить начальные навыки
1. Краткие теоретические сведения
1.1. ЭЛЕМЕНТЫ ЯЗЫКА SHELL
1)Переменная
Переменная вводится операцией присваивания, которая имеет вид
name=value
Операция присваивает переменной name последовательность символовопределенных значением value. В языке нет понятия типа, переменные могут иметь только символьные значения. Значение value может быть пустым. Подстановка значения (расширение переменной ) происходит только тогдакогда переменная используется с префиксом $ или в форме ${name}. Если для переменной задается значение, содержащее пробелы, то его нужно заключить в кавычки (одинарные или двойные)
2)Параметры
Параметры это некоторые объекты имеющие значение. QNX shell поддерживает три вида параметров:
- позиционные параметры;
- специальные параметры;
- именованные переменные (переменные, рассмотренные в п.п.1))
Позиционные параметры - это все параметры, специфицированные в командной строке shell и получающие значения при запуске shell. Позиционные параметры обозначаются комбинацией символа $ и числа 0-9 т.е. $1- означает первый параметр; $2 - означает второй параметр,и.т.д.\
Позиционные параметры могут быть также назначены командой set(встроенная команда shell).
Специальные параметры обеспечивают общедоступный сервис при программировании shell сценариев. Используются следующие виды специальных параметров:
$@ - последовательность значений всех позиционных параметров, начиная с первого, если расширение параметров происходит внутри строки в кавычках эта последовательность рассматривается как множество операндов;
$* - последовательность значений всех позиционных параметров, начиная с первого, если расширение параметров происходит внутри строки в кавычках эта последовательность рассматривается как один операнд;
$# - число позиционных параметров;
$? - выходной статус последней исполненной команды (0 –нормальное завершение);
$$ - идентификатор процесса введенного shell;
$! - идентификатор процесса выполняющего последнею асинхронную команду;
$0 - имя shell сценария (или интерпретатора shell).
set команда
set [option] [-o option name] ... [argument ...]
set [option] [+o option name] ... [argument ...]
set --
set команда устанавливает и сбрасывает значения позиционных параметров определенных полями argument. Вариант set-- сбрасывает значения всех позиционных параметров.