64183 (Администрирование локальных сетей), страница 2
Описание файла
Документ из архива "Администрирование локальных сетей", который расположен в категории "". Всё это находится в предмете "компьютерные науки" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "компьютерные науки" в общих файлах.
Онлайн просмотр документа "64183"
Текст 2 страницы из документа "64183"
2.1.2 Смена шела
2.2.1 Bourne Shell
2.2.1.1 Основные возможности Shell.
-
Shell скрипты
-
Основы программирования на языке shell
-
Некоторые специальные команды
Общее знакомство с шелами
Шелл это интерфейс между операционной системой и пользователем. Шелл интерпретирует пользовательский ввод и дает указания операционной системе выполнить те или иные действия. Шелл можно также рассматривать как язык программирования.
Bourne Shell. Это самый старейший из шелов который был написан Стэфаном Борном в Лаборатории Беэлла. Этот шелл является шелом по умолчанию для HP-UX пользователей и долгое время был стандартом де факто.
Bourne Shell не имеет в своем арсенале ни интерактивных возможностей ни сложных программных конструкций в отличии от С и Korn шеллов.
C Shell. Этот шел был разработан Биллом Джоем в Калифорнийском Университете Беркли. Его синтаксис имеет сходство с языком программирования С. Он также имеет интерактивный интерфейс например историю команд и раскрытие имен файлов.
Korn Shell. Он является относительно новым шелом разработанным Девидом Корном в Лаборатории Бэлла и является вверх совместимым с большинством возможностей Bourne Shell. Так же как и С shell он имеет интерактивные возможности, но выполняется быстрее имеет расширенные возможности редактирования командной строки.
POSIX shell. Этот шелл базируется на стандарте определенном в Portable Operation System Interface (POSIX) – IEEE P1003.2. Этот стандарт был разработан для прикладных и системных программистов. Он фактически определяет стандарт на интерфейс операционной системы. Большинство возможностей POSIX Shell очень сильно схожи с аналогичными возможностями Korn Shell-a. Мы будем рассматривать оба этих шела едино, указывая лишь небольшие различия между ними. POSIX Shell имеет тоже имя что и Bourne Shell поэтому он помещен в /usr/bin/posix директорию в отличии от Bourne Shell, который находится в директории /usr/bin.
Key Shell. Это оболочка для Kourn Shell-a разработанная фирмой Hewlett-Packard. Она позволяет использовать меню и онлайн помощь помогая в построении команд и выполнению ряда часто встречаемых задач, таких как просмотр, редактирование и печать файлов, просмотр содержимого директории и.т.п. Построена она таким образом что пользователь может сам в дальнейшем
расширять ее возможности.
Bash. Название этого шела расшифровывается как Bourne Again Shell. Он бы разработан консорциумом Free Software Foundation и несмотря на то что по умолчанию он отсутствует в стандартной поставке HP-UX 10.20, в следствии своих мощных функциональных возможностей он пользуется огромной популярностью среди пользователей и администраторов HP-UX. Его интерпретатор команд совместим с Bourne Shell. Также он вместил в себе полезные возможности Korn C шеллов. Он разрабатывался в сооответствии со спецификациями IEEE POSIX Shell and Tools specification (IEEE Working Group 1003.2).
2.1.2 Смена шела
Для того чтобы определить Ваш системный шелл достаточно сразу после логина выполнить команду:
echo $SHELL
она показывает содержимое переменной SHELL в которую система прописывает Ваш шелл установленный по умолчанию. Для временной смены шела достаточно выполнить запуск желаемого шела в текущем:
$ ksh запуск Kourne Shell
$ ps печать списка процессов
PID TTY TIME COMMAND
12320 pts/2 0:00 sh Bourne shell
12322 pts/2 0:00 ksh Korn Shell
12323 pts/2 0:00 ps
$ exit выход из Korn Shell-a
Для постоянной смены шела устанавливаемого системой после входа (login shell) необходимо выполнить команду:
chsh
Замечание: список шелов доступных в системе для пользователей находится в файле /etc/shells
Bourne Shell.
-
Основные возможности Shell.
Запуск шелла и выход из шелла
Для запуска Bourne Shell достаточно ввести sh в текущем шеле. Выход из шела возможен либо по команде exit либо введя в терминале символ коца файла Ctrl-D.
Последовательное выполнение команд.
Несколько команд можно последовательно выполнять разграничивая точкой с запятой. Например, фрагмент
$ who
$ ps –ef
$ ls –l
и
$ who; ps –ef; ls -l
дадут полностью одинаковый результат.
Фоновое выполнение.
Запуск программы в фоновом режиме (без блокировки текущего шела) достигается добавлением в конец команды знака &
Перенаправление ввода-вывода.
Каждая запущенная программа имеет три ассоциированных канала: стандартный ввод, стандартный вывод и стандартный канал диагностики ошибок. По умолчанию стандартный ввод закреплен за клавиатурой а стандартный вывод и канал ошибок закреплены за монитором. Однако шелл позволяет связать эти каналы с файлами абсолютно прозрачно для выполняемой программмы, т.к. изменения вывода и ввода осуществляются на системном уровне. Примеры перенаправлений ввода-вывода:
Символ | Функция | Пример |
< | Перенаправление ввода из файла | program < in_file |
> | Перенаправление вывода в файл | program > out_file |
>> | Перенаправление вывода в файл с добавлением | Program >> out_file |
Пайпы. Две или более программ могут быть объединены таким образом что результат одной программы попадет на вход другой. При этом данные от одной программы к другой следуют через програмный канал, например:
program1 | program2 | program3
или более реалистичный пример:
ls –l /etc | more
Примечание: пайпы всегда работают лишь в одном направлении – со стандартного выхода одной к стандартному входу другой программы.
Расширение имен файлов.
В целях уменьшения количества набираемых символов при вводе имен файлов шел поддерживает метасимволы. Нпример для того чтобы вывести листинг всех файлов в текущей директории имена которых начинаются с буквы a достаточно воспользоваться командой ls –l a*
ниже приведена таблица основных метасимволов
Метасимвол | Описание |
* | Означает любой символ в любом количестве |
~ | Означает путь к домашнему каталогу |
? | Любой символ в количестве один или больше |
[ … ] | Равенство любого одного из символов заключенных в скобки. Пара символов разделенная знаком минус означает любой символ из промежутка между ними. Например [a-zA-Z] – любаялатинская буква |
-
Shell скрипты
Выполнение скриптов.
Несколько команд обьедененных одной последовательностью выполнения называется скриптом. Например последовательное выполнения команд, пайпы являются простейшими скриптами. Обычно команды из которых состоят скрипты сохраняют в файлах. Для запуска скрипта можно воспользоваться двумя методами:
sh <имя_файла_скрипта>
или установить атрибут выполняемости на файл командой
chmod +x <имя_файла_скрипта>
После чего можно выполнять скрипт:
./<имя_файла_скрипта>
Вывод текста.
Для формирования вывода текстовой информации в скриптах используют команду
echo “строка”
Файл .profile .
Каждый раз во время входа в систему Bourne Shell автоматически запускает файл .profile (скрипт) находящийся в вашей домашней директории. Этот скрипт устанавливает “окружение” в котором Вам предстоит работать. Это различные переменные окружения отвечающие за вид системной подсказки, путь поиска исполняемых файлов, тип терминала и.т.п. Приведем список основных переменных окружения.
-
PATH устанавливает путь поиска исполняемых файлов и представляет собой набор директорий разделенных двоеточием
-
MAIL определяет имя файла почтового ящика для уведомления о приходе новой электронной почты
-
MAILCHECK параметр показывающий как часто (в секундах) следует проверять почтовый ящик на предмет прихода новой почты
-
HOME определяет домашний каталог (каталог по умолчанию). Команда cd без параметров выполняет переход в этот каталог.
-
PS1 основная системная подсказка (по умолчаию $)
-
PS2 вторичная системная подсказка (по умолчанию >)
-
SHELL имя логин шелла пользователя
-
TERM тип терминала пользователя
-
EDITOR имя текстового редактора по умолчанию
Устанавливать переменные окружения можно по разному. Например команды
PATH=/bin:/usr/bin:/usr/sbin:/usr/contrib/bin:/usr/local/bin
и
PATH=/bin:/usr/bin:/usr/sbin
PATH=$PATH: :/usr/contrib/bin:/usr/local/bin
полностью эквивалентны. Для того чтобы эти переменные вошли в системное окружение (кроме шела, стали доступны и другим программам) необходимо выполнит команду
export
Комментарии.
Текст следующий за символом # рассматривается шелом как комментарий и не оказывает никакого влияния на работу скрипта.
Основы программирования на языке shell
Параметры.
В дополнение к стандартным параметрам шела можно создавать свои параметры, кторые затем можно использовать в командах. Например
$ x=test
$ echo $x
test
$ aaa=/
$ ls $aaa
cdrom home nsmail tcb var
SD_CDROM dev lib opt tmp
TT_DB etc lost+found sbin tmp_mnt
Bin export net stand usr
При включении параметров в строку или в выражение знак $ должен предшествовать параметру. Также необходимо пользоваться следующими правилами:
${parameter} значение параметра заключенного в скобки будет использовано в выражении. Скобки {} используются когда за параметром следуют буквы или цифры не относящиеся к парамаметру. Например если значение параметра xxx равно test то значение выражения ${xxx}123 будет равняться test123
${parameter:-word} если параметр установлен и не пустой то результатом выражения будет являться значение параметра, в противном случае в результате будет использовано значение параметра word. Например: ${xxx:-/usr/bin/sh}
если xxx пустой то результатом выражения будет являться строка /usr/bin/sh
${parameter:=word} если параметр неустановлен или пустой, тогда значение word будет результатом выражения.
${parameter:+word} если параметр установлен и не пустой, тогда результатом выражения является word, в противном случае результат пустой.
Аргументы командной строки.
Когда Вы запускаете на выполнение программы, Вы можете передавать ей один или больше аргументов. Шелл скрипты имеют доступ к этим аргументам посредством параметров $0, $1, $2 …$9. Если аргументов больше девяти, их значения помещаются в буффер и могут быть доступны с использованием команды shift которая будет обсуждаться ниже. Параметр $0 всегда принимает значение имени выполняемого файла, $1 – первого аргумента командной строки, $2 – второго, и.т.п.
Количество агрументов командной строки всегда можно узнать проанализировав параметр $#. В том случае если Вам необходим один параметр содержащий все аргументы командной строки разделенные пробелом нужно воспоьзоваться параметром $*.
Для получения доступа к аргументам с номером больше девяти необходимо воспользоваться командой shift. После очередного выполнения команды shift происходит сдвиг на один элемент в буффере параметров в результате которого значение параметра $2 получает параметр $1, значение параметра $3 получает $2, и.т.п. Используя цикл (цыклы будут рассвотрены ниже) в сочетании с командой shift можно получать доступ ко всем аргументам командной строки с номерами превышающими 9.
Квотинг.
Очень часто случаются ситуации когда необходима особая трактовка тех символов которые шелл воспринимает как спец символы. Например случай когда строку текста включая пробелы нужно передать как один аргумент или знак $ должен не быть воспринят как указатель на параметр. Для этих целей используется квотинг (quoting).
Например символ бекслэша ( \ ) можно использовать для квотинга символа $.