Лаб_раб-2_ver1.2 (538461)
Текст из файла
ЛАБОРАТОРНАЯ РАБОТА №2
РАСШИРЕННЫЕ ВОЗМОЖНОСТИ КОМАНДНЫХ ИНТЕРПРЕТАТОРОВ
3.1. Цель работы
Целью данной работы является изучение расширенных возможностей командных интерпретаторов, получение навыков отладки сценариев.
3.2. Задание на выполнение работы
-
Используя утилиту at передать в назначенное время сообщение произвольного содержания.
-
Вывести информацию об остановленных и фоновых заданиях:
• полный список,
• с указанными номерами заданий,
• идентификатор группы процессов и рабочий каталог;
• только идентификатор группы процессов.
3) Выполнить поиск файлов по следующим критериям:
• по размеру,
• с именем core (образ процесса, создаваемый при неудачном его завершении и используемый в целях отладки).
4) Изучить интерфейс и выполнить основные файловые операции в встроенном редакторе программ Midnight Commander (mc).
-
Написать и отладить программу на языке интерпретатора Borne:
• используя команду echo;
• используя команду управления форматированием вывода (print!);
-
обрабатывающую ввод из потока STD[N;
• использующую несколько переменных в аргументе команды read, рассмотреть случаи:
• число переменных в списке равно числу аргументов, считанных из потока;
• число переменных в списке меньше числа аргументов, считанных из потока;
• вычисления длины окружности и площади круга (используя команду be);
-
Написать и отладить программу, демонстрирующую использование функции setuid (процесс может изменять значение кода идентификации пользователя, под которым он исполняется).
-
Запустить программу ведения журнала logger, вывод программы записать в файл file.log, сохраняя все предыдущие записи.
3.3 Краткие теоретические сведения
3.3.1 Менеджер файлов Midnight Commander (mc)
Программа Midnight Commander поли функциональный менеджер файлов, работающий в текстовом режиме (т.е. в текстовой консоли или терминале). Интерфейс программы похож на двухпанельные менеджеры файлов Norton Commander для MS-DOS, FAR и Windows Commander для Windows, а по набору функций не уступает лучшим из них. Файловые операции тс выполняются аналогично.
3.3.2 Работа со ссылками
Символическая ссылка создается в каталоге, открытом на пассивной панели, и указывает на текущий файл на активной панели.
Для того, чтобы создать символическую ссылку, необходимо выполнить следующие действия.
-
Перейдите в каталог, в котором будет размещаться ссылка.
-
Нажмите на клавишу Tab, чтобы сделать эту панель пассивной.
-
На активной панели перейдите в каталог, где находится файл, на который будет указывать ссылка, и выберите его (текстовым курсором или щелкните мышью).
-
Выберите меню Файл (клавиша F9).
-
В этом меню выберите пункт Символическая ссылка.
6) В открывшемся окне Символическая ссылка введите в поле ввода Имя символической ссылки имя файла ссылки и нажмите на клавишу Enter.
3.3.3 Простейшие текстовые редакторы
Для работы в текстовой консоли ASPLinux можно воспользоваться несколькими простейшими текстовыми редакторами, которые позволяют изменить конфигурационный файл системы или набрать текст сценария. В текстовом режиме, как и в оболочке GNOME, можно использовать профессиональную систему подготовки текста emacs (включающую в качестве макроязыка язык программирования высокого уровня), однако ее рассмотрение выходит за пределы данного пособия.
В простых случаях можно воспользоваться встроенным редактором программы Midnight Commander (тс). Для того, чтобы отредактировать текстовый файл во встроенном редакторе тс, выберите нужный файл в активной панели и нажмите клавишу F4. В открывшемся окне редактора можно вводить или редактировать текст. При необходимости следует использовать кнопки операций с блоками текста или поиска по образцу или, нажав клавишу F9, открыть меню, позволяющее устанавливать пользовательские настройки редактора, или осуществлять такие операции, как форматирование текста и обработка при помощи макросов.
Существующий несколько десятков лет тестовый редактор vi имеет
очень специфическую систему команд и сохраняется в современных
системах UNIX (Linux) во многом лишь по традиции. Однако некоторые
старые командные файла (скрипты) могут по умолчанию вызывать данный
редактор для редактирования файлов пользователя, В этом случае
понадобиться выйти из текстового редактора vi без сохранения
изменений: поместить курсор с помощью клавиши Backspace в ту часть окна, где расположен текст; далее набрать символ ; (нажав клавиши Shift -.), курсор вместе с набранным символом переместится в нижнюю строку экрана (поле команд); ввести в этом поле последовательность символов ql и нажать клавишу Enter.
3.3.4 Программирование яа языке командного интерпретатора
Интерпретатор (shell) UNIX представляет собой интерфейс
командной строки. По своей функциональности он похож на
интерпретатор COMMAND.COM системы MS DOS. Одной из задач
интерпретатора является обеспечение безопасного и структурированного
доступа к ядру UNIX, т.е. фактически это программный уровень, который
предоставляет среду для ввода команд, обеспечивая тем самым
взаимодействие между пользователем и ядром операционной системы.
Кроме того, встроенный в интерпретатор мощный язык
программирования используется для решения различных задач: от автоматизации повторяющихся команд до написания сложных интерактивных программ обработки данных, получения информации из небольших баз данных.
В среде UNIX существует много командных интерпретаторов, среди которых можно выделить такие, как sh, tcsh, ksh, csh, bash, в Linux no умолчанию используется bash.
3.3.5 Программа setuid
Ядро связывает с процессом два кода идентификации пользователя, не зависящих от кода идентификации процесса: реальный (действительный) код идентификации пользователя и исполнительный код или setuid (от "set user ID" - установить код идентификации пользователя, под которым процесс будет исполняться).
Реальный код идентифицирует пользователя, несущего ответственность за выполняющийся процесс.
Исполнительный код используется для установки прав собственности на вновь создаваемые файлы, для проверки прав доступа к файлу и разрешения на посылку сигналов процессам через функцию kill
Процессы могут изменять исполнительный код, запуская с помощью функции exec программу setuid или запуская функцию setuid в явном виде.
Программа setuid представляет собой исполняемый файл, имеющий в поле режима доступа установленный бит setuid. Когда процесс запускает программу setuid на выполнение, ядро записывает в поля, содержащие реальные коды идентификации, в таблице процессов и в пространстве процесса код идентификации владельца файла. Чтобы как-то различать эти поля, назовем одно из них, которое хранится в таблице процессов, сохраненным кодом идентификации пользователя. Рассмотрим пример, иллюстрирующий разницу в содержимом этих полей.
Синтаксис вызова системной функции setuid: setuid (uid), где uid -новый код идентификации пользователя.
Системные функции getuid и geteuid возвращают значения реального и исполнительного кодов идентификации пользователей процесса, для пользователя "mjb" это, соответственно, 5088 и 8319. Поэтому процесс не может открыть файл "mjb" (ибо он имеет исполнительный код идентификации пользователя (8319), не разрешающий производить чтение файла), но может открыть файл "тайгу". После вызова функции setuid, в результате выполнения которой в поле исполнительного кода идентификации пользователя ("mjb") заносится значение реального кода идентификации, на печать выводятся значения и того, и другого кода идентификации пользователя "mjb": оба равны 5088. Теперь процесс может
открыть файл "mfb", поскольку он исполняется под кодом идентификации пользователя, имеющего право на чтение из файла, но не может открыть файл "тайгу". Наконец, после занесения в поле исполнительного кода идентификации значения, сохраненного функцией setuid (8319), на печать снова выводятся значения 5088 и 8319.
33.6 Управление заданиями
Для просмотра списка текущих заданий используется команда jobs. В этом списке приводится порядковый номер задания, который можно использовать в любой команде, связанной с управлением заданиями. Использование ключей: -р позволяет выводить только идентификаторы групп процессов, Л - только идентификаторы заданий и групп заданий, к - информацию о заданиях, состояние которых изменилось со времени последнего запроса.
Для запуска команды в фоновом режиме необходимо добавить к ее имени символ амперсанда, например, top & .
Команда lugger » file, log позволит запустить программу ведения журнала logger , вывод программы запишется в файл file.log, сохраняя все предыдущие записи. Если файл не существует, то он будет создан.
Midnight Commander — один из файловых менеджеров с текстовым интерфейсом типа Norton Commander для UNIX-подобных операционных систем, а также Microsoft Windows и Windows NT, OS/2, Apple Mac OS X (но не Mac OS 9).
Emacs — семейство многофункциональных расширяемых текстовых редакторов.
Для запуска файлов необходимо:
1) открыть права chmod 777 имя_файла.sh
2) открыть файл ./имя_файла.sh
Скрипт 1
#!/bin/sh
echo "Hello World!"
echo
exit 0
Скрипт 2
#!/bin/sh
printf "Hello World!"
echo
exit 0
Скрипт 3
#!/bin/sh
echo "Please enter your name: "
read name
echo "Hello ${name}!"
exit 0
Скрипт 4
#!/bin/sh
echo
echo "Please enter 3 numbers: "
read var1 var2 var3
echo
echo "var1 is ${var1}"
echo "var2 is ${var2}"
echo "var3 is ${var3}"
exit 0
# Данная программа вычисляет длину окружности
# и площади круга
pi="3.14159265"
echo "Please enter radius: "
read radius
okruzhnost=$(echo $radius*$pi|bc -l)
area=$(echo $radius^2*$pi|bc -l)
echo "Okruzhnost is ${okruzhnost}"
echo "Area is ${area}"
exit 0
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.