Практикум по дисциплине «Операционные системы и среды» Методичес. Практикум по дисциплине Операционные системы и среды
Скачать 3.29 Mb.
|
3 Перенаправление потоковВ ОС LINUXсуществует три стандартных потока: поток ввода, поток вывода и поток стандартного протокола (поток ошибок). Стандартный ввод (STDIN) — это просто то место, откуда система ожидает получение данных. Обычно — это клавиатура, хотя это может быть командный сценарий или программа. Когда вы изменяете стандартное значение, вы вызываете перенаправление ввода. Аналогично, стандартный вывод (STDOUT) — то место, которое подразумевается операционной системой для вывода информации, обычно — экран монитора. Можно так же перенаправить вывод, STDOUT, по усмотрению любой команды или командного сценария. Цепочка событий от STDIN до STDOUT выглядит примерно так: стандартный ввод STDIN команда Linux стандартный вывод STDOUT STDIN часто упоминается как fd0, или дескриптор 0, STDOUT упоминается как fdl. Есть также стандартное устройство вывода ошибок (STDERR), которому система сообщает о любых ошибках в выполнении программ или командного сценария. Стандартно — это также терминал. Существуют всего четыре символа перенаправления стандартного ввода/вывода: • Символ > используется для перенаправления стандартного вывода команды в файл. Например, cat > file запишет выводимую командой cat информацию в файл file. • Символ < используется для переназначения стандартного ввода команды. Например, при выполнении команды cat < file в качестве стандартного ввода cat используется не клавиатура, а файл file. • Символ >> используется для дописывания стандартного вывода команды в конец существующего файла. Например, cat >> file допишет выводимую командой cat информацию в конец файла file. • Символ | является символом потока. Он используется, когда вы хотите передать стандартный вывод одной команды на стандартный ввод другой. Примеры: cat > filename – перенаправление вывода в файл filename (если этот файл существует, то его прежнее содержимое будет утеряно); cat >> filename – добавить содержимое вывода к содержимому файла filename; cat < filename – сформировать стандартный ввод из содержимого файла filename. cat /home/qqq/Desktop/file_1 | wc –w > /home/qqq/Desktop/num_names – содержимое файла file_1 передается в распоряжение команды wc –w (счетчик слов), которая выводит количество слов в файл num_names, находящийся на рабочем столе (/home/qqq/Desktop/). ls | wc -l Те же действия можно организовать так: ls > buffer wc -l < buffer rm –f buffer Команда ls выводит в файл buffer список файлов текущего каталога, а команда wc -l считает количество строк в этом файле, команда rm –f buffer удаляет файл с именем buffer. Таким образом, первые две команды позволяют посчитать количество файлов в текущем каталоге. 4 Основы работы с командным интерпретатором слово — последовательность символов, воспринимаемая интерпретатором как одна единица. имя — слово состоящее только из алфавитно-цифровых символов и знаков подчеркивания, начинающееся с буквы или знака подчеркивания. Также называется идентификатором. Метасимвол — символ, который, не будучи заключен в кавычки, разделяет слова. Один из следующих: | & ; ( ) < > space tab управляющий оператор — слово выполняющее функции управления. Один из следующих: || & && ; ;; ( ) | Зарезервированные слова — это слова имеющие специальное значение для интерпретатора. Следующие слова являются зарезервированными: ! case do done elif else esac fi for function if in select then until while { } time [[ ]] Простая команда это последовательность из необязательного присвоения значения переменной с последующими словами и перенаправлениями, прерываемая управляющим оператором. Первое слово определяет выполняемую команду. Последующие слова передаются команде в качестве аргументов. [VAR=val] command argument ... Возвращаемое значение простой команды — код завершения или 128+n если команда была прервана по сигналу n. Конвейер — последовательность из одной или более команд, разделенных символом |. Формат конвейера следующий: [time [-p]] [!] command [ | command2 ... ] Стандартный вывод command подключается к стандартному вводу команды command2. Это подключение производится до выполнения любых перенаправлений. Если конвейеру предшествует зарезервированное слово !, то код завершения конвейера равен логическому отрицанию кода завершения последней команды. Иначе код завершения конвейера равен коду завершения последней команды. Интерпретатор ожидает завершения всех команд до того как вернет значение. Если конвейеру предшествует зарезервированное слово time, то после завершения выполнения конвейера будет выведена информация о времени выполнения конвейера и о затраченном времени процессора в режимах пользователя и системы. Каждая команда в конвейере выполняется как отдельный процесс (т.е. в подоболочке). 5 Переменные окружения У каждого процесса имеется область памяти называемая программным окружением (program environment) — это набор строк, заканчивающихся нулевым символом. Эти строки называются переменными окружения. Каждая строка имеет вид: имя переменной = значение. Имя переменной может состоять из алфавитно-цифровых символов и знака подчеркивания. Цифра не может быть первым символом имени. Присвоение значения переменной в оболочке производится следующим образом: Имя = Значение Для того, чтобы значение переменной передавалось процессам порождаемым оболочкой, следует использовать встроенную команду export. Следующие две команды помечают переменные VAR и TST как экспортируемые и присваивают переменной TST значение /usr/doc: export VAR export TST=/usr/doc Для того, чтобы просмотреть значения переменных окружения можно использовать команду set, которая выводит значения всех переменных окружения. Для того, чтобы получить значение переменной, перед ее именем указывается знак доллара. Такое выражение будет заменяться интерпретатором на значение переменной. Например, команда echo выводит в стандартный вывод свои аргументы, следующее выражение: echo TST=$TST выведет на экран TST=/usr/doc (при условии, что значение переменной TST – /usr/doc). 6 Основные команды для работы с файлами cd [каталог ] Меняет текущий каталог на указанный. Если параметр опущен, то текущим становится домашний каталог. ls [-alFR] [файл ...] Выводит список файлов в указанном (или текущем) каталоге. Ключ -a заставляет выводить все файлы, ключ -l служит для вывода подробной информации о файлах, ключ -F приводит к тому, что к именам каталогов добавляется символ ’/’, к именам ссылок ’@’, к именам выполняемых файлов ’*’. При использовании ключа -R выводится список файлов не только указанного каталога, но и его подкаталогов. touch файл ... Меняет время доступа и изменения файла. Если файл не существовал, то он будет создан. mkdir каталог Создает каталог. rmdir каталог Удаляет каталог. cp [-rp] файл1 файл2 cp [-rp] файл ... каталог Копирует один файл в другой или копирует файлы в указанный каталог. Ключ -R предназначен для копирования каталогов, ключ -p позволяет сохранять владельцев файлов, режим доступа и время доступа и изменения. rm [-r] файл ... Удаляет файлы. Ключ -r позволяет удалять каталоги. mv файл1 файл2 mv file ... directory Перемещает один файл в другой или перемещает файлы в заданный каталог. cat [ файл ...] Объединяет содержимое указанных файлов и выводит на стандартный вывод. find путь выражение Команда предназначена для поиска файлов. Находит файлы для которых значение выражения "истина". Для определения выражений могут использоваться следующие примитивы: -name шаблон -возвращает значение истина если файл соответствует шаблону. -nouser- возвращает значение истина, если идентификатор пользователя не определен. -nogroup -возвращает значение истина, если идентификатор группы не определен. -perm режим возвращает значение истина, если файл имеет заданный режим доступа. Режим может задаваться как в символьной форме (-,+,=), так и в числовой. -type тип значение истина, если файл имеет указанный тип. (b – блок-ориентированное устройство, c – байт-ориентированное устройство, d – каталог, f – регулярный файл, p –канал). -links n значение истина, если файл имеет указанное число ссылок. -user пользователь значение истина если файл принадлежит указанному пользователю. -group группа значение истина если файл принадлежит указанной группе. -size [+|- ]размер[c] истина, если размер файла в блоках (байтах, если используется размерc) равен (больше, если используется +; меньше, если используется -) заданному. -atime [+|-]d истина, если доступ к файлу производился между (d-1)*24 и d*24 часов назад (+ более d*24 часов назад, - менее (d-1)*24 часов назад). Аналогично -mtime для времени изменения содержимого файлов и -ctime для времени изменения статуса файлов. -exec программа [аргументы]; исполнение программы для каждого найденного файла. Имя программы и аргументы состоящие только из двух символов {} будут заменены именем найденого файла. Заключительному знаку ; должен предшествовать \. -ok программа [аргументы]; аналогична предыдущей команде, но выводит запрос на подтверждение. -print выводит имя найденного файла. Параметры могут объединяться следующим образом: (выражение), группировка выражений !выражение, отрицание выражений выражение1 [-a] выражение2, логическое И выражение1 -o выражение2, логическое ИЛИ. Самостоятельная работа 1. Войдите в систему под выданной пользовательской учетной записью. 2. Создайте в домашнем каталоге при помощи команды touch файл отчета с именем lab1.txt. 3. При помощи команды set просмотрите значения переменных окружения. 4. Выведите в файл lab1.txt значения переменных окружения PATH, LANG, HOME. 5. Просмотрите полученный файл при помощи команды less. 6. Последовательно перейдите в каталоги /bin, /usr, /etc, /usr/bin. Выполните в каждом каталоге команду ls с различными ключами (-a, -l, -F, -R). Если вывод команды ls не умещается на экране, то можно воспользоваться командой less (напр. ls -l | less). 7. Перейдите обратно в домашний каталог (команда cd). 8. Изучите команды uname и date. Просмотрите справку об этих командах (man uname,man date). 9. Сравните вывод команд date и LANG=C date. 10. Добавьте в конец файла отчета, используя перенаправление вида >>, информацию выводимую командами uname -a и date. 11. Создайте в домашнем каталоге подкаталоги test1 и test2. 12. Скопируйте файл /home/labs/text.txt в каталог test2. Добавьте в файл отчета вывод команды ls -R. 13. Переместите файл text.txt из каталога test2 в каталог test1. Снова добавьте в файл отчета вывод команды ls -R. 14. Изучите команду find. Добавьте в файл отчета все подкаталоги каталога /usr/share содержащие в своем имени сочетание букв ”ru” (используйте параметры -type и -name). 15. Воспользуйтесь командой rmdir для удаления каталогов созданных при выполнении пункта 12. 16. Добавьте в конец файла отчета две строки. Первая должна содержать текст: "Лабораторная работа No ". Вторая должна содержать Ваши имя и фамилию. Лабораторная работа № 13 (2 часа) Работа с файлами и каталогами в Linux Используя сведения, полученные на лекциях и на предыдущей лабораторной работе выполните следующие действия: В Linux перейдите в текстовую консоль и зарегистрируйтесь там Создайте каталог, озаглавив его вашей фамилией. Внутри этого каталога создайте два подкаталога KAT1 и KAT2 Откройте каталог KAT1 и создайте в нем файл f1 со следующим текстом: В половине двенадцатого с северо-запада, со стороны деревни Чмаровки, в Старгород вошел молодой человек лет двадцати восьми. За ним бежал беспризорный. - Дядя! - весело кричал он. - Дай десять копеек! 4. Создайте файл f2 с текстом: Молодой человек вынул из кармана налитое яблоко и подал его беспризорному, но тот не отставал. Тогда пешеход остановился, иронически посмотрел на мальчика и воскликнул: Может быть, тебе дать еще ключ от квартиры, где деньги лежат? Присоедините файл f2 к файлу f1. Покажите полученную работу преподавателю. Создайте новый файл f3, скопировав в него файл f2 Скопируйте файлы f1 и f2 в каталог KAT2 Проверьте правильность выполнения операции Удалите все файлы из каталога KAT1 Удалите каталог KAT1 Допишите в файл f1 следующий текст: Зарвавшийся беспризорный понял всю беспочвенность своих претензий и немедленно отстал. Молодой человек солгал: у него не было ни денег, ни квартиры, где они могли бы лежать, ни ключа, которым можно было бы эту квартиру отпереть. У него не было даже пальто Переименуйте файл f1 в файл f1.txt Продемонстрируйте полученный файл преподавателю Лабораторная работа № 14 (2 часа)Работа с файлами и каталогами в LinuxВойдите в графическую консоль linux. Создание, редактирование и сохранение файлов и папок Создадим новый текстовый файл. Зайдите в папку Documents В правой части файл менеджера щелкните на любом свободном месте правой клавишей мыши и вызовите контекстное меню. Выберите пункт Создать. В появившемся окне выберите пункт Текстовый файл... В появившемся окне введите любое имя (например, Текст пример) и нажмите кнопку ОК. В папке Documents (Документы) появился новый файл. Давайте попробуем отредактировать его. Щелкните по названию файла. Файл менеджер сам выберет программу, которая может редактировать текстовые файлы и откроет ее. В данном случае это программа Kwrite. Она предназначена для простейшего редактирования текстовых файлов. В текстовом редакторе наберите: Я очень долго добирался от Тифлиса до Киева. В Киев поезд пришел к вечеру. Был широкий разгар весны, цвели каштаны, на Куполах Владимирского собора горел горячий блеск заката, нарядно шумел Крещатик. И тем беднее и опустошеннее показалась мне комнатка, где жили мама и сестра Галя. Прошло больше двух лет с тех пор, как я уехал из Киева в Одессу, а потом в Тифлис. За это время мама и Галя постарели, но стали спокойнее. Cохраним результаты нашей работы. Выберите в меню команду Файл и в ней — команду Сохранить. Закройте текстовый редактор. Вы также можете создать текстовый файл непосредственно из текстового редактора. Копирование и перемещение файлов и папок Рассмотрим несколько примеров работы с файлами и папками. Допустим, вы закончили работу над очередным проектом и теперь несколько рабочих файлов, которые вы создали в процессе подготовки проекта необходимо разместить в таком месте, чтобы вы впоследствии могли легко их найти. Для этого такие материалы лучше располагать в отдельной папке с названием, хорошо отражающим ее содержимое. Совершенно очевидно, что отчетные материалы лучше всего хранить в папке Проекты. Сздайте папку Проекты. Щелкните правой кнопкой мыши в правой части окна файл менеджера и в контекстном меню выберите команду Создать и потом Папку.. Введите имя новой папки Проекты А в ней создайте две папки с файлами проектов – Проект 1 и Проект 2. В папке Проект 1 создайте три файла а1, а2, а3 со следующими текстами: А1 Несколько дней лил, не переставая, холодный дождь. В саду шумел мокрый ветер. В четыре часа дня мы уже зажигали керосиновые лампы, и невольно казалось, что лето окончилось навсегда и земля уходит все дальше и дальше в глухие туманы, в неуютную темень и стужу. А2 При каждой возможности я посылал маме деньги и все время мучился, что денег мало и доходят они с перерывами. Но мама не жаловалась. Я убедился, что характер у нее действительно был стоический А3 По ночам часто плакал во сне Фунтик – маленькая рыжая такса. Приходилось вставать и закутывать его теплой шерстяной тряпкой. Фунтик благодарил сквозь сон, осторожно лизал руку и, вздохнув, засыпал. Темнота шумела за стенами плеском дождя и ударами ветра, и страшно было подумать о тех, кого, может быть, застигла эта ненастная ночь в непроглядных лесах. Переместим эти файлы в папку Проект 2 Прежде всего, эти три файла надо выделить. Для этого нажмите клавишу Ctrl и, не опуская ее, щелкните левой клавишей мышки по каждому из этих файлов. Теперь в меню Правка выберите команду Вырезать. Вы увидите, что изображения двух выделенных файлов потускнели. В левой панели экрана раскройте папку Отчеты (щелкните по стрелке рядом с ее названием - все входящие в нее папки появятся в виде списка ниже). Откройте папку Проект 2, щелкнув по ней мышкой. Опять выберите меню Правка и команду Вставить 3 файла. Три файла переместятся на новое место. Обратите внимание, что три файла пропали из папки Проект 1 и появились в папке Проект 2. Команда Вырезать всегда переносит файлы, т.е. удаляет их из старого места и размещает в новом. Если вы хотите скопировать файлы, т.е. сохранить их на старом месте после переноса на новое, воспользуйтесь в меню Правка командой Копировать. Команда Копировать чаще всего используется, когда вы переносите файлы на внешние носители, чтобы перенести их на другой компьютер. Скопируем три выделенных файла в папку Проект 1., используя совершенно другую технику. Она называется «перетяни и брось». Зайдите в папку Проект 2., выделите все файлы, щелкните по выделенным файлам левой кнопкой мыши и не отпускайте ее, перетащите файлы на название папки Проект 1. в левой части окна. И опустите кнопку мыши. Появится диалоговое окно, в котором вам будет предложено скопировать или переместить файлы. Выберите команду Копировать сюда и все три файла благополучно будут скопированы в эту папку. Навигация в файловой системе. Поиск файлов и папок Давайте попробуем найти папку Описание проекта. Допустим, мы забыли полное название файла, но помним, что в его названии было слово «проект». Запустим Поиск файлов и папок. Сформируем в строке Название следующий запрос: «*проект*». Это значит, что в названии файла и слева и справа от слова проект может быть любое количество символов. Результат поиска отображен ниже. Попробуем теперь найти файл по содержащейся в нем информации. Прежде всего необходимо очистить предыдущий запрос. Далее перейдите на вкладку Содержимое. Наберите в строке Содержит текст поисковый запрос – слово каштаны. Нажмите на кнопку Поиск. В окне с результатами поиска появится список найденных файлов, среди них и созданный нами раньше файл Текст пример, который содержит фразу: «цвели каштаны». Лабораторные работа №15 (2 часа) Работа с файлами в Windows 1. Создать на Рабочем столе каталог МОЙ КАТАЛОГ, а в нем подкаталоги ДОКУМЕНТЫ И ПРОГРАММЫ. 2. Перейти на устройство С: в подкаталог МОИ ДОКУМЕНТЫ. 3. Сделать копию любого файла в МОЙ КАТАЛОГ при помощи контекстного меню. 4. Сделать копию любого файла из папки С:\МОИ ДОКУМЕНТЫ в МОЙ КАТАЛОГ в подкаталог ДОКУМЕНТЫ при помощи команд Копировать и Вставить. 5. Сделать копию любого файла из папки С:\МОИ ДОКУМЕНТЫ в МОЙ КАТАЛОГ, подкаталог ПРОГРАММЫ при помощи буксировки мыши. 6. Назвать скопированные файлы другими русскими именами. 7. Задать второму файлу атрибут только для чтения, а третьему - скрытый. 8. Показать скрытые файлы. 9. Скрытый файл удалить. 10. Весь каталог ПРОГРАММЫ скопировать на Рабочий стол, а из папки МОЙ КАТАЛОГ удалить. 11. Найти файлы (через поиск файлов) с именами READ или README. 12. Скопировать один файл через контекстное меню в папку ДОКУМЕНТЫ. 13. Показать для него атрибуты, а затем изменить по своему желанию. 14. Не показывать скрытые файлы. 15.Созать копию МОЙ КАТАЛОГ. 16. Показать работу преподавателю. |