Файловая система BSD UNIX
Перенаправление ввода/вывода
Каждая запущенная из командного интерпретатора программа получает три открытых потока ввода/вывода:
Стандартный ввод
Стандартный вывод
Стандартный вывод ошибок
По умолчанию все эти потоки ассоциированы с терминалом. Т.е. любая программа, использующая только стандартные потоки, будет ожидать ввода с клавиатуры терминала, весь вывод этой программы, включая сообщения об ошибках, будет происходить на экран терминала. Shell позволяет перенаправлять потоки ввода/вывода. Можно подавить вывод сообщений об ошибках, установить ввод или вывод из файла и даже передать вывод одной программы на ввод другой.
Ш File – перенаправление стандартного потока вывода в файл
>> Fail – добавление в fail данных из стандартного потока вывода.
< Fail – получение стандартного потока ввода из файла в fail
P1| P2 – передача стандартного потока вывода программы P1в поток ввода P2.
N > fail – переключение потока вывода из файла с дескриптором N в файл fail
N2 > fail – тоже, но записи добавляются в файл fail.
Стандартным потокам ввода, вывода и вывода ошибок присваиваются десктипторы – числовые значения, являющиеся указателями на соответствующий поток. Они, соответственно, равны 0,1 и 2. Перенаправлять потоки можно, используя эти числовые значения.
Например, чтобы подавить вывод ошибок, можно использовать следующую запись:
$ run 2 > /dev/ nul (псевдо устройство, удаляющее все введенные в него символы)
Все команды, которые вводятся в строке приглашения Shell, относятся к одной из следующих категорий:
1. Встроенные функции
2. Функции Shell, определенные пользователем
3. Внешние программы и утилиты
Запуск встроенной функции не требует порождения нового процесса, поскольку эта функция реализована в самой программе Shell.
Важнейшие встроенные функции Shell:
: - пустая команда. Она удобна для создания бесконечных циклов:
while:
do
……
done
break [N] – производит выход из цикла for или while.
Если параметр
|
break [N] |
производит выход из цикла for или while. Если параметр указан, происходит выход из и выполненных циклов. |
|
cd [dir] |
переход в каталог dir |
|
echo[string] |
строка string выводиться на терминал |
|
exec run-me |
выполняем программу runme |
|
exit |
завершает работу интерпретатора |
|
jobs |
вывод списка текущих заданий |
|
pwd |
выводит имя текущего каталога |
|
return |
осуществляет вывод и зфункци |
|
set |
выводит список определенных переменных |
|
test |
вычисляет условное выражение |
|
times |
выводит суммарное время использования процессора программами |
|
type name |
показывает как name будет интерпретироваться Shell |
и ряд других.
Синтаксис функции определенный пользователем имеет вид:
|
function ( ) { command 1 command 2 ……….. } |
т.е. телом функции является обычный sprint shell |
таким образом, пользователь может определить функцию командного интерпретатора и использовать ее как встроенную функцию Shell.
предыдущаяследующая