
- •Министерство образования и науки Украины
- •Практическое занятие №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.2. Перенаправление ввода и вывода
Теперь, предположим, что мы хотим послать результат сортировки в файл, чтобы где-то сохранить список планируемых покупок. Shell дает нам возможность перенаправлять стандартный вывод в файл, используя символ ``>''.
$ sort > shopping-list
bananas
carrots
apples
[ctrl-D]
$
Как вы можете видеть, результат работы команды sort не отображается на экране, вместо этого он сохраняется в файле shopping-list (список покупок). Давайте посмотрим на этот файл.
$ cat shopping-list
apples
bananas
carrots
$
Теперь мы можем не только сортировать (упорядочивать) список планируемых покупок, но и сохранять его! Но предположим, что мы хранили наш не отсортированный исходный закупочный список в файле под именем items. Один из способов сортировки и сохранения его, это отсортировать файл с данным именем, вместо получения файла со стандартного ввода, и перенаправить стандартный вывод в файл. Например так
$ sort items > shopping-list
$ cat shopping-list
apples
bananas
carrots
$
Но это можно сделать и по-другому. Перенаправлен может быть не только стандартный вывод, но также и стандартный ввод, используя символ ``<''.
$ sort < items
apples
bananas
carrots
$
Технически, sort < items эквивалентно sort items, но последний вариант позволяет нам продемонстрировать сказанное: sort < items ведет себя так, словно данные файла items были введены с клавиатуры. Shell обслуживает перенаправление. В команде sort не было определено имя файла (items) и команда читала со стандартного ввода, как будто шел ввод с клавиатуры.
Это иллюстрирует концепцию фильтра. Фильтр, это программа, которая получает данные со стандартного ввода, обрабатывает их каким-то образом и посылает результат обработки на стандартный вывод. С помощью перенаправления стандартные ввод и вывод могут быть переведены на файлы. sort - простейший фильтр: она сортирует вводные данные и посылает результат на стандартный вывод. cat - даже еще проще: она ничего не делает со входными данными, а только выдает все, что не поступит, на вывод.
1.3. Перенаправление с добавлением
Использование ``>'' для перенаправления вывода смертельно для файла, в который происходит перенаправление (если было, что уничтожать), другими словами
$ ls > file-list
уничтожает прежнее содержимое файла file-list. Если вместо этого использовать символ перенаправления ``>>'', вывод будет добавлен к содержимому названного файла (вместо того, чтобы быть записанным на место старого).
$ ls >> file-list
добавит выходную информацию команды ls в файл file-list.
1.4. Использование конвейера
Мы уже показали, как использовать команду sort в качестве фильтра. Но эти примеры предполагали, что вы откуда-то получили данные в файл, или ввели данные с клавиатуры своими собственными руками. А что, если данные, которые вы хотите отсортировать, являются выходными данными другой программы, например, такой как ls? Если вы используете при сортировке опцию -r, данные будут расположены в порядке, обратном лексикографическому. Если вы хотите получить перечень файлов вашего каталога в обратном порядке, один из способов сделать это будет:
$ ls
english-list
history-final
masters-thesis
notes
$ ls > file-list
$ sort -r file-list
notes
masters-thesis
history-final
english-list
$
Здесь мы сохранили результат работы команды ls в файле, а затем выполнили sort -r над этим файлом. Но это очень коряво выглядит и требует создания временного файла для хранения результата работы ls.
Выход из положения дает "конвейер" (pipeline) . Конвейер - это еще одно замечательное свойство shell, которое позволяет связывать последовательность команд в конвейер, где stdout первой команды посылается прямо на stdin второй команды и так далее. Здесь мы хотим послать stdout команды ls на stdin команды sort. Символ ``|'' олицетворяет конвейер:
$ ls | sort -r
notes
masters-thesis
history-final
english-list
$
Эта команда намного короче и, очевидно, проще набирается. Другой полезный пример. Команда
$ ls /usr/bin
выдает на дисплей длинный список имен файлов, большинство из которых слишком быстро промелькнет на экране, чтобы вы успели прочитать их. Давайте подключим к просмотру перечня имен файлов каталога /usr/bin команду more.
$ ls /usr/bin | more
Теперь вы можете постранично листать файл в свое удовольствие.
Но чудеса на этом не кончаются! Мы можем связать в конвейер более, чем две команды. Команда head представляет из себя фильтр, который отображает первые строки входного потока (здесь, пришедшего по конвейеру). Если мы хотим отобразить последнее имя текущего каталога, упорядоченного по алфавиту, мы можем написать:
$ ls | sort -r | head -1
notes
$
где head -1 просто выдает первую строку получаемого входного потока (в данном случае это отсортированный в обратном порядке перечень имен файлов текущего каталога, выданных командой ls).