Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Программирование на shell. Использование командных файловСодержание книги
Поиск на нашем сайте
Процедура языка shell. Shell – одна из многих команд Unix. Процедура языка Shell – это командный файл. Для выполнения команд необходимо текстовый файл сделать исполнимым (с помощью команды chmod). Запуск осуществляется следующим образом: sh имя_исполняемого_файла Структура команд. Команды в Shell имеют следующий формат: <имя команды><флаги><аргументы> В таблице 3 представлены некоторые средства группировки команд, которые могут быть использованы при создании командных файлов на shell. Таблица 3. Средства группировки команд
Например, k1&&k2; k3 · k2 будет выполнена при успешном выполнении k1; k3 будет выполнена после любого из исходов обработки k2; · k1&&{k2;k3} - k2, k3 будут выполнены при успешном выполнении k1; · {k1;k2}& - в фоновом режиме будет выполняться последовательность команд k1, k2. Перенаправление данных. Символы >, >> обозначают перенаправление ввода/вывода. Например: · ls>file1 - команда ls сформирует список файлов текущего каталога и поместит его в файл file1; · wc –l < file1 - команда wc подсчитает число строк файла file1 и выдаст эту информацию на экран; · wc –l < file1>file2 - команда wc подсчитает число строк файла file1 и выдаст эту информацию в файл file2 Shell-переменные. Определение переменной содержит имя и значение var = value Доступ к переменной осуществляется по имени (со знаком $ перед именем): · fruit = apple (определение) · echo $ fruit (доступ) · apple (результат) Возможна конкатенация строк: · fruit = apple · fruit = pine$ fruit · echo $ fruit · pineapple Переменная может быть: · частью полного имени файла, например d = /usrу/bin; · частью команды, например, s = “sort +b filename” - наличие пробелов требует кавычек. Предопределенные переменные языка Shell. В таблице 4 представлены наиболее употребительные переменные. Таблица 4. Наиболее употребительные переменные
Изменение значения переменной PS1 осуществляется в login-файле. Изменение значения переменной PATH: · echo path – посмотреть; ·:/bin:/usr/bin – значение path; · cd – домой; · mkdir bin – новый каталог; · echo $home – посмотреть; · /users/maryann – текущий каталог; · $path =:$home/bin:$path – изменение path; · echo path – посмотреть; ·:/users/maryann/bin:/bin:/usr/bin – новое значение path. Установка переменной Shell выводом из команды. Примеры: · now =’data’ echo $now Sun Mart 21 12:00:01 PM 2001; · menu =’cat file’ echo $menu Text Для обеспечения видимости переменной используется команда export. · a = b; export a echo $a · d = /home/sv; export d echo $d · c = ‘pwd’; export c echo $c Структурные операторы shell. Оператор цикла FOR. Синтаксис: for <переменная> in <список значений> do <список команд> done Например, пусть имеется командный файл makelist: Cat makelist sort +1 people | pr –h Distribution | lpr - Сортировка по второму полю, печать заголовка, распечатка файла. Если вместо одного файла people имеется несколько adminpeople, hardpeople, softpeople, то необходимо повторить выполнение процедуры с различными файлами с помощью оператора for: · for file in adminpeople, hardpeople, softpeople do sort +1 $file | pr –h Distribution | lpr Done · for file in *people do sort $file done Условный оператор IF. Синтаксис: if <если эта команда выполняется успешно, то> then <выполнить все последующие команды до else или, если его нет, до fi> [else <иначе выполнить следующие команды до fi>] fi Например: if test $# -eg 0 then echo “You must give a filename” exit 1 else sort +1 $1| …| lpr fi Если значение переменной # равно нулю, выводится сообщение "You must give a filename”, выполнение программы прекращается. Иначе выполняется команда сортировки данных. Команда TEST. Эта команда применяется внутри shell-процедур. Имеется три типа проверок: оценка числовых значений; оценка типа файла; оценка строк. Для чисел синтаксис следующий: N op M, где N, M – числовые переменные, операция «op» принимает следующие значения: · -eg – равно; · -en – не равно; · -gt – больше; · -lt – меньше; · -ge – больше или равно; · -le – меньше или равно. Для файла синтаксис такой: op filename - операция op принимает следующие значения: · -s - файл существует и не пуст; · -f - файл, а не каталог; · -d - файл-директория; · -w - файл для записи; · -r - файл для чтения; Для строк синтаксис такой: S op R - операция op принимает следующие значения: · = - эквивалентность; ·!= - неэквивалентность; · -z – строка нулевой длины; · -n – нулевая длина строки.
Несколько проверок могут быть объединены логическими операциями –a (and) и -o (or): · if test –w $2 -a -r $1 then cat $1>> $2 else echo “can not append” fi; · echo “Vvedite a” read a echo “Vvedite b” read b if test $a –lt $b then echo “Hello” else echo “…” fi. Оператор цикла WHILE. Синтаксис: while <команда> do <команда> Done · n=0 while test $n -lt 5 do cat myfile1|lpr n=`expr$n+1` done; · while test $# -gt 0 do if test –s $1 then echo “no file $1”> $2 else sort +1 $1 … fi do. Оператор цикла UNTIL. Этот оператор инвертирует условие повторения по сравнению с оператором While until <команда> do <команды> Done Пока “команда” не выполнится успешно, выполнять “команды”, завершаемые ключевым словом done: · if test $# -eg 0 then echo “Usage …”>$2 exit fi until test $# -eg 0 do if test –s $1 then echo “no file $1”>$2 else sort … fi shift done. Оператор выбора CASE. Синтаксис: case <string> in string1) <если string = string1, то выполнить все следующие команды до;;>;; string2) <если string = string2, то выполнить все следующие команды до;;>;; string3) и т.д. Esac. … · together = no case $1 in -t) together = yes shift;; -?) echo “$0: no option $1” exit;; esac if test $ together = yes then sort … fi · while true do echo”Check menu your computer” 1) Disk space 2) Mounted file systems 3) System name 4) Who is logged in 5) Exit echo “What do you want?” read number case $number in 1) df ;; 2) mount –t msdos dev/fd0 /mnt/floppy ;; 3) uname ;; 4) who ;; 5)break ;; *) echo “you must enter a number (1 throught 5)” continue ;; esac done exit 0 На экране появляется меню. При выборе определенного пункта меню выполняется соответствующая команда. Отладка процедур языка shell. 1. Имеются три средства, позволяющие вести отладку процедур. 2. Размещение в теле процедуры команды echo для выдачи сообщений, являющихся трасой выполнения процедуры. 3. Опция –v (verbose – многословный) в команде Shell приводит к печати команды на экран перед ее выполнением. 4. Опция –x (execute) в команде Shell приводит к печати команды на экране по мере ее выполнения с заменой всех переменных их значениями. Группирование команд Группы команд или сложные команды могут формироваться с помощью специальных символов (метасимволов): · & - процесс выполняется в фоновом режиме, не дожидаясь окончания предыдущих процессов; ·? - шаблон, распространяется только на один символ; · * - шаблон, распространяется на все оставшиеся символы; · | - программный канал - стандартный вывод одного процесса является стандартным вводом другого; · > - переадресация вывода в файл; · < - переадресация ввода из файла; ·; - если в списке команд команды отделяются друг от друга точкой с запятой, то они выполняются друг за другом; · && - эта конструкция между командами означает, что последующая команда выполняется только при нормальном завершении предыдущей команды (код возврата 0); · || - последующая команда выполняется только, если не выполнилась предыдущая команда (код возврата 1); · () - группирование команд в скобки; · { } - группирование команд с объединенным выводом; · [] - указание диапазона или явное перечисление (без запятых); · >> - добавление содержимого файла в конец другого файла. Примеры · who | wc - подсчет количества работающих пользователей командой wс (word count - счет слов); · cat text.1 > text.2 - содержимое файла text.1 пересылается в файл text.2; · mail student < file.txt - электронная почта передает файл file.txt всем пользователям, перечисленным в командной строке; · cat text.1,text.2 - просматриваются файлы text.1 и text.2; · cat text.1 >> text.2 - добавление файла text.1 в конец файла text.2; · cc primer.c & - трансляция СИ - программы в фоновом режиме. Имя выполняемой программы по умолчанию a.out; · cc -o primer.o primer.c - трансляция СИ-программы с образованием файла выполняемой программы с именем primer.o; · rm text.* - удаление всех файлов с именем text; · {cat text.1; cat text.2} | lpr - пpосмотp файлов text.1 и text.2 и вывод их на печать; · ps [al] [number] - команда для вывода информации о процессах: · -a - вывод информации обо всех активных процессах, запущенных с вашего терминала (рис.5); · -l - полная информация о процессах; · number - номер процесса. Рис.5 Вывод полной информации о процессах Команда ps без параметров выводит информацию только об активных процессах, запущенных с данного терминала, в том числе и фоновых. На экран выводится подробная информация обо всех активных процессах в следующей форме: F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 1 S 200 210 7 0 2 20 80 30 703a 03 0:07 cc 1 R 12 419 7 11 5 20 56 20 03 0:12 ps · F - флаг процесса (1 - в оперативной памяти, 2 - системный процесс, 4 - заблокирован в ОЗУ, 20 - находится под управлением другого процесса, 10 - подвергнут свопингу); · S - состояние процесса (O - выполняется процессором, S - задержан, R - готов к выполнению, I - создается); · UID - идентификатор пользователя; · PID - идентификатор процесса; · PPID - номер родительского процесса; · C - степень загруженности процессора; · PRI - приоритет процесса, вычисляется по значению переменной NICE и чем больше число, тем меньше его приоритет; · NI - значение переменной NICE для вычисления динамического приоритета, принимает величины от 0 до 39; · ADDR - адрес процесса в памяти; · SZ - объем ОЗУ, занимаемый процессом; · WCHAN - имя события, до которого процесс задержан, для активного процесса - пробел; · TTY - номер управляющего терминала для процесса; · TIME - время выполнения процесса; · CMD - команда, которая породила процесс. · nice [-приращение приоритета] команда[аргументы] - команда изменения приоритета. Каждое запущенное задание (процесс) имеет номер приоритета в диапазоне от 0 до 39, на основе которого ядро вычисляет фактический приоритет, используемый для планирования процесса. Значение 0 представляет наивысший приоритет, а 39 - самый низший. Увеличение номера приоритета приводит к понижению приоритета, присвоенного процессу. Команда nice -10 ls -l увеличивает номер приоритета, присвоенный процессу ls -l на 10; · renice 5 1836 - команда устанавливает значение номера приоритета процесса с идентификатором 1836 равным 5. Увеличить приоритет процесса может только администратор системы; · kill [-sig] <идентификатор процесса> - прекращение процесса до его программного завершения. sig - номер сигнала. Sig = -15 означает программное (нормальное) завершение процесса, номер сигнала = -9 - уничтожение процесса. По умолчанию sig= -9. Вывести себя из системы можно командой kill -9 0. Пользователь с низким приоритетом может прервать процессы, связанные только с его терминалом; · mc - вызов файлового менеджера (программы - оболочки) Midnight Commander, аналогичного Norton Commander; · sort [-dr] - сортировка входных файлов и вывод результата на экран.
|
||||||||||||||||||||||
Последнее изменение этой страницы: 2016-08-16; просмотров: 467; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.22.41.80 (0.007 с.) |