Реферат Курсовая Конспект
Интерпретатор командного языка - раздел Информатика, Экономики, статистики и информатики Интерпретатор Shell - Это Программа, Которая Позволяет Вам Связываться С ...
|
Интерпретатор shell - это программа, которая позволяет вам связываться с
операционной системой. Shell считывает команды, которые вы вводите, и
интерпретирует их как запросы на выполнение других программ, на доступ к файлу или
обеспечение вывода. shell также является мощным языком программирования.
В этом разделе описаны команды и символы, имеющие специальное значение,
которые позволяют:
- находить с помощью шаблона и манипулировать группами файлов;
- запускать команду в фоновом режиме или в определенное время;
- выполнять последовательно группу команд;
- перенаправлять стандартный ввод и вывод;
- завершать работающие программы.
Метасимволы, используемые оболочкой shell:
* ? [ ]эти метасимволы позволяют указывать сокращенные имена файлов при
поиске по шаблону;
&означает, что команда будет выполняться в фоновом режиме;
;точка с запятой разделяет команды в командной строке;
отменяет специальное значение символов, таких как *, ?, [, ], &, ;, <, >, |;
'...'одиночные кавычки отменяют значение пробела как разделителя и
специальное значение всех символов;
"..."двойные кавычки отменяют значение пробела как разделителя и
специальное значение всех символов, за исключением $ и ;
>перенаправляет вывод команды в файл;
<перенаправляет ввод для команды из файла;
>>перенаправляет вывод команды, который должен быть добавлен в конец
существующего файла;
|создает канал, направляющий вывод одной команды во ввод другой
команды;
`...`используется в паре; позволяет использовать вывод команды как аргументы
в командной строке;
$используется с позиционными параметрами и определенными
пользователем переменными; также используется по умолчанию в качестве
подсказки shell.
Метасимволы используются для поиска имен файлов, посредством их упрощается
задача указания имен файлов или групп имен файлов как аргументов команды.
Метасимвол *осуществляет поиск любой строки символов, включая нулевую
(пустую) строку. Вы можете использовать * для обозначения полного или частичного
имени файла. Просто символ * ищет все имена файлов и каталогов в текущем каталоге,
за исключением тех, которые начинаются с точки. Чтобы посмотреть метасимвол * в
действии, введите его как аргумент в команде echo:
echo *
В ответ система выведет перечень всех имен файлов в вашем текущем каталоге.
Символ * может представлять символы в любой части имени файла. Например, если
вы знаете, что несколько файлов имеют одинаковые первые и последние буквы, то вы
можете выдать запрос, основываясь на этом факте. Если в вашем каталоге находятся
файлы FATE, FE, FADED_LINE, FIG3.4E, FINE_LINE, FAST_LINE, то для отображения
всех этих файлов на экране введите команду:
$ ls F*E
Вы можете, например, с помощью метасимвола * найти все файлы с именами memo
в системном каталоге: ls */memo
Метасимвол ?заменяет любой один символв имени файла за исключением
лидирующей u1090 точки. Предположим, вы имеете книгу, в которой 12 глав и хотите получить
список глав до 9-ой главы. Если ваш каталог содержит следующие файлы:
Chapter1
Chapter2
Chapter5
Chapter9
Chapter11
то для получения всех глав, которые начинаются со строки "Chapter" и заканчиваются
одним символом введите команду ls с метасимволом ?:
$ ls Chapter?
Chapter1 Chapter2 Chapter5 Chapter9
$
Хотя метасимвол осуществляет поиск одного символа, вы можете использовать его
для поиска более одного символа в имени файла. Например, вы получите перечень всех
остальных глав в текущем каталоге, если введете следующую команду:
$ ls Chapter??
И, конечно, чтобы получить список всех глав в текущем каталоге, используйте
метасимвол *:
$ ls Chapter*
Если вы хотите, чтобы shell нашел любой символ из перечисленных вами символов,
то заключите эти символы в квадратные скобки. Предположим, ваш каталог содержит
следующие файлы: cat, fat, mat, rat. Если вы воспользуетесь в качестве части имени файла
шаблоном [crf], то shell будет искать имена файлов, в которые входят либо буква "c",
либо буква "r", либо буква "f" в указанной позиции, например:
$ ls [crf]at
cat fat rat
$
Символы, которые могут быть сгруппированы в скобки, называются классом
символов.
Скобки могут также использоваться для обозначения диапазона символов, цифр или
букв. Предположим, что в вашем каталоге содержатся следующие файлы: chapter1,
chapter2, chapter3, chapter4, chapter5, chapter6. Если вы укажете:
chapter[1-5]
то shell найдет файлы с chapter1 по chapter5.
Класс символов можно также указать с помощью диапазона букв. Если вы укажете
[A-Z], то shell будет искать только большие буквы, если [a-z] - то малые буквы.
shell обрабатывает также и другие символы, которые позволяют вызывать другие
полезные функции.
Некоторые команды shell занимают много времени при выполнении. Эти команды
можно запустить в фоновом режиме с использованием &, освобождая тем самым
терминал для других задач. Общий формат для запуска команд в фоновом режиме
следующий:
команда&
Примечание. Интерактивные команды shell (например, read, sh, vi) нельзя
запускать в фоновом режиме.
Когда вы запускаете команду в фоновом режиме, то система UNIX выводит номер
процесса. Вы можете использовать этот номер для завершения выполняющейся u1074 в
фоновом режиме команды. Появившаяся подсказка означает, что терминал свободен и
ожидает вашу команду.
Запустить команду в фоновом режиме вы можете только в том случае, если ваш
терминал предоставляет вам такую возможность.
В одной командной строке вы можете указать несколько команд. Эти команды
должны быть разделены символом ; (точка с запятой) или символом &:
команда1; команда2; команда3…
Система UNIX выполняет команды в том порядке, в котором они стоят в командной
строке, и выводит вывод этих команд в том же порядке. Этот процесс называется
последовательным выполнением.
Например, введите:
$ cd; pwd; ls
shell выполнит эти команды последовательно:
cdизменит ваше местоположение, переместив вас в регистрационный
каталог;
pwdвыведет полное имя пути вашего текущего каталога;
lsперечислит файлы в вашем текущем каталоге.
Символ позволяет вам отменить специальное значениеследующего за ним
символа. Например, у вас есть файл trail, который содержит следующий текст:
The all * game
was held in Summit.
Чтобы найти символ звездочка (*) в файле, воспользуйтесь командой grep:
$ grep * trail
The all * game
$
Команда grep найдет символ * в тексте и отобразит строку, в которой она появилась.
Без символа , символ звездочка будет интерпретироваться shell как метасимвол.
Отменить специальное значение символавы также можете с помощью
метасимвола кавычки:
- одиночные кавычки ('...') отменяют специальное значение всех символов за
исключением самих одиночных кавычек;
- двойные кавычки ("...") отменяют специальное значение всех символов, за
исключением символов двойные кавычки, $ и `(слабое ударение).
Использование кавычек удобно для цифровых специальных символов.
Например, ваш файл trail содержит строку:
He really wondered why? Why???
Чтобы найти строку, содержащую три вопросительных знака, воспользуйтесь
командой grep:
$ grep '???' trail
He really wondered why? Why???
$
Кавычки аналогично обратной косой черте часто используются для отмены
специального значения пробела. shell интерпретирует пробел в командной строке как
разделитель между аргументами команды. Одиночные и двойные кавычки и обратная
косая черта позволяют отменить это значение.
Например, чтобы в тексте разместить два или более слова, сделайте эти два слова
одним аргументом, заключив их в кавычки. Чтобы найти два слова "The all" в файле trail,
введите следующую команду:
$ grep 'The all' trail
The all * game
$
Особенно полезно применение отмены специального значения пробела для функции
banner, которая использует пробел как разделитель аргументов и выводит аргументы на
отдельных строках.
Чтобы напечатать более одного аргумента на одной строке, заключите слова в
двойные кавычки. Например, если вы введете:
$ banner happy birthday to you
то команда banner выведет ваше сообщение на 4-х строках. Если вы введете:
$ banner happy birthday "to you"
то команда banner выведет ваше сообщение на 3-х строках, причем слова "to" и "you"
будут на одной строке.
Примечание. Команда banner выводит сообщения на экране терминала большими
плакатного размера буквами.
В системе UNIX некоторые команды ожидают ввод только с клавиатуры
(стандартный ввод) и большинство команд отображают свой вывод на экране терминала
(стандартный вывод). Однако система UNIX позволяет вам перенаправлять ввод и вывод
в файлы и программы, т.е. вы можете сказать shell:
- взять ввод из файла, а не с клавиатуры;
- послать вывод в файл, а не на терминал;
- использовать программу как исходные данные для другой программы.
Чтобы перенаправить ввод, укажите в командной строке после знака "меньше " (<)
имя файла:
команда< имя_файла
Чтобы перенаправить вывод, укажите в командной строке после знака "больше " (>)
имя файла:
команда> имя_файла
Примечание. Если вы перенаправите вывод в уже существующий файл, то вывод
вашей команды заменит содержимое существующего файла.
Перед тем, как перенаправить вывод команды в конкретный файл убедитесь, что
этот файл не существует. shell не предупреждает, что выполняет перезапись
существующего файла.
Чтобы убедиться, что файл с запланированным именем не существует,
воспользуйтесь командой ls с аргументом "имя_файла". Если этот файл не существует, то
ls выдаст сообщение, что файл не найден в текущем каталоге. Например, проверка
_________существования файлов temp и junk даст следующий результат:
$ ls temp
temp
$ ls junk
junk: no such file or directiry
$
Это означает, что вы можете назвать свой файл junk, но не можете использовать в
качестве имени temp, если не хотите потерять содержимое существующего файла.
Чтобы добавить вывод в существующий файл и не разрушить его, вы можете
воспользоваться символом >>:
команда>> имя_файла
В результате выполнения команды вывод будет добавлен в конец существующего
файла. Если файл не существует, то он будет создан. Рассмотрим, например, как
добавить вывод с помощью команды cat. Команда cat выводит содержимое файлов,
имена которых являются ее аргументами, в стандартный вывод. Если нет аргументов, то
она выводит стандартный ввод в стандартный вывод. Сначала выполните команду cat без
перенаправления вывода. Затем содержимое файла trial2 добавляем после последней
строки в файл trial1 при выполнении команды cat над файлом rtial2, перенаправив вывод
в файл trial1:
$ cat trial1
This is the first line of trial1.
Hello.
This is the last line of trial1.
$
$ cat trial2
This is the beginning of trial2.
Hello.
This is the end of trial2.
$ cat trial2 >> trial1
$ cat trial1
This is the first line of trial1.
Hello.
This is the last line of trial1.
This is the beginning of trial2.
Hello.
This is the end of trial2.
$
Перенаправление вывода очень удобно в том случае, если вы не хотите, чтобы
вывод появлялся на экране немедленно, или хотите сохранить его.
Команда sortразмещает строки указанного файла в алфавитном или цифровом
порядке. Прежде чем перенаправить вывод команды в файл убедитесь, что имя этого
файла не существует. Команда sort сначала очищает файл, который будет содержать
вывод, затем выполняет сортировку и помещает вывод в пустой файл.
Когда команда запущена в фоновом режиме, то вывод ее осуществляется на экране
терминала. И если вы используете терминал в то же время для выполнения других задач,
то вывод фоновой задачи будет прерывать вашу работу. Однако если перенаправить
вывод в файл, то вы сможете спокойно работать.
Предположим, что вы хотите найти все появления слова "test" в файле schedule.
Запустите команду grep в фоновом режиме и перенаправьте вывод в файл testfile:
$ grep test schedule > testfile&
Теперь вы можете использовать терминал для других работ и просмотреть файл
testfile позднее.
Символ | называется каналом. Канал является мощным средством, которое
позволяет u1074 вам брать вывод одной команды и использовать его в качестве ввода для
другой команды без создания временных файлов. Таким образом, построенная
последовательность команд называется конвейером. Общий формат конвейера:
команда1| команда2| команда3...
Вывод команды1 используется как ввод для команды2. Вывод команды2
используется как ввод для команды3.
Чтобы понять, насколько эффективен конвейер, рассмотрим 2 способа, которые
дают одинаковый результат:
Использование метода перенаправления ввода/вывода. Запустим одну команду и
перенаправим ее вывод во временный файл. Затем запустим вторую команду, которая
берет содержимое временного файла как ввод. И в конце удалим временный файл.
Использование метода конвейера. Например, предположим, что вы хотите послать
сообщение happy birthday с помощью команды banner владельцу user2.
Выполним сначала по первому методу:
1) введите команду banner и перенаправьте ее вывод во временный файл:
$ banner happy birhday > message.tmp
2) введите команду mail и в качестве ввода воспользуйтесь файлом message.tmp:
$ mail user2 < message.tmp
3) удалите временный файл:
$ rm message.tmp
Вторым методом это можно сделать быстрее:
$ banner happy birthday | mail user2
Выводбольшинства команд может использоваться как аргумент в командной строке. Для
этого команду заключите между знаками "слабое ударение" (`...`) и поместите ее в командной
строке в том месте, где вывод будет трактоваться как аргумент.
Например, вы можете подставить вывод конвейера команд date и cut в качестве аргумента в
команде banner:
$ banner `date | cut -c12-19`
Обратите внимание на результат: система выводит banner с текущим временем.
– Конец работы –
Эта тема принадлежит разделу:
Московский государственный университет... Экономики статистики и информатики... Институт quot Московская высшая банковская школа quot...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Интерпретатор командного языка
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов