Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Командный интерпретатор shell.




Современная система поставляется с тремя командными интерпретаторами:

Bourne Shell (/bin/sh)

C Shell (/bin/csh)

Korn Shell (/bin/ksh)

Интерпретатор – первая программа, с которой начинается работа пользователя. В Unix с ее помощью организуется следующий сценарий работы:

При включении терминал активирует процесс getty. Он является сервером терминального доступа, и он запускает программу login, которая запрашивает у пользователя имя и пароль. Если пользователь зарегистрирован и ввел верно логин и пароль, то система запускает командный интерпретатор. Он выполняет соответствующий командный файл инициализации и выдает на терминал приглашение к работе. С этого момента можно вводить команды. Интерпретатор считывает ввод пользователя, производит синтаксический анализ, подстановку шаблона, выполняет действие или сообщает об ошибке. Считывание и выполнение команд интерпретатор производит в цикле. Сам интерпретатор – обычная пользовательская программа, не является частью ОС. Дальше по окончанию работы, пользователь завершает работу вводом команды exit или logout.

Командный интерпретатор является удобным средством программирования. По синтаксису языки различают 2 группы:

- с С-подобным синтаксисом (С Shell)

- интерпретаторы Bourne-типа.

Программа на языке интерпретатора называется командным файлом или скриптом или сценарием. Интерпретатор считывает строки из сценария и выполняет их как будто они введены в командной строке терминала. Интерпретатор работает пошагово или построчно.

При входе пользователя в систему запускается инициализационный скрипт, выполняющий следующие функции:

- установка пути поиска программ

- инициализация терминала

- определение расположения почтового ящика

Кроме этого можно выполнить ряд полезных действий. Файл инициализации profile.

Синтаксис языка Bourne Shell. Слова в команде разделяются пробелами, количество пробелов не играет роли. Инструкция интерпретатора состоит из необязательных назначения переменных, собственно команды и необязательного перенаправления потока ввода/вывода. Например:

> PATH=/home/andy/bin:/bin/ ls –l >/tmp/ls_res #список файлов

Этой командой потребовали выполнение команды ls с ключом –l. Смысл команды: вывод имен файлов текущего каталога с атрибутами. Ограничили область поиска этой команды каталогами /home/andy/bin и /bin/, задав на время выполнения команды значение переменной окружения PATH. Если в каталоге /home/andy/bin есть программа ls, то она запускается на выполнение, если нет, то запускается /bin/ls. Результат выполнения команды будет помещен в файл ls_res.

Командами могут быть встроенные функции, функции командного интерпретатора, определенные пользователем и внешние программы и утилиты. Это исполняемые bin файлы и скрипты. Команды могут выполняться синхронно, то приглашение к вводу следующей инструкции появляется после выполнения последней команды; или в фоновом режиме асинхронно.

При асинхронном интерпретатор не дожидается завершения выполнения команды для выдачи приглашения. Знак & в конце команды указывает на фоновое или асинхронное выполнение.

> find /home –name core –print > /tmp/cores &

Требуется поиск в каталоге home файлов по имени core, а все потоки вывода перенаправлены в файл /tmp/cores.

 

 

16. Система каталогов в OС UNIX. Управление с помощью команд языка Bourn shell.

Система каталогов в Unix отличается от windows. Отсутствуют буквы, обозначающие устройства. Путь прописывается через прямой слеш. После входа в систему, оказываемся в домашнем каталоге – место для хранения личных файлов. Чтобы узнать имя текущего каталога вводят команду pwd. Домашний каталог – личное пространство. Узнать, какие файлы находятся в текущем каталоге можно с помощью команды ls. Имеет несколько ключей: ls –lrt

t – сортировка по времени

r – сортировка в обратном порядке

cd – смена каталога, если без параметров, то переход в домашний каталог. cd/ - в корневой, cd bin – переход в bin, находящийся в текущем. cd.. – на уровень выше.

cp –r dir1 dir2 - все содержимое dir1 рекурсивно копируется в dir2. Если dir2 существует, то внутри него будет создан dir1.

mv /dir1 /dir2 – переименовать dir1 в dir2.

rm –r /dir2 – удаление dir2 и все, что в нем (с каталогами работают рекурсивно

mkdir work – создание каталога в текущем

rmdir work – удаление пустого каталога

 

 

17. Управление файлами с помощью команд языка Bourn shell. Перенаправление ввода/вывода.

С каждым файлом в Unix связано 12-битное слово, называемое правами доступа к файлу. Младшие 9 бит этого слова объединены в три группы по три бита; каждая группа задает права доступа для владельца файла, для его группы и для всех остальных пользователей. Три бита в каждой группе отвечают за право на чтение, запрос и использование файла.

Чтобы узнать права доступа к тому или иному файлу, можно воспользоваться командой
ls –l, например:

$ ls -l /bin/cat

-rwxr-xr-x l root root 14232 Feb 4 2003 /bin/cat

Расположенная в начале строки группа символов -rwxr-xr-x показывает тип файла (первый символ; минус означает, что мы имеем дело с обыкновенным файлом, буква d означала бы каталог и т.п.) и права доступа, соответственно, для владельца (в данном случае rwx, т.е. чтение, запись и исполнение), группы и всех остальных (в данном случае r-x , т.е. права на запись отсутствуют). Таким образом, файл /bin/cat доступен любому пользователю на чтение и исполнение, но модифицировать его может только пользователь root (т.е. администратор).

1 – количество ссылок. (у каталога минимум 2: ссылка на себя и на родителя)

root – имя владельца файла, название группы, к которой относится владелец.

14232 – размер файла в байтах

Feb 4 2003 – дата и время последнего изменения

/bin/cat – имя файла

Можно записать слово прав доступа к файлу в виде восьмеричного числа (3 знака - восьмеричная цифра), трехзначного (владелец, группа, остальные пользователи) каждый знак в этом трехзначном восьмеричном числе формируется как сумма прав: 4- права на чтение, 2- права на запись, 1 - на использование (из двоичной триады): (111)2=20+21+22=(1+2+4)10.

Например, 7 = 1 + 2 + 4 Þ права r w x: 4 2 1

6 = 0 + 2+ 4 Þ права r: 4 2 0

В трехзначном числе задания прав: 744 для владельца определены все права, для группы - только чтение, для остальных пользователей - только на чтение.

Для использования прав доступа к файлам используется команда chmod, которая позволяет задать новые права доступа в виде восьмеричного числа, например: $ chmod 744 filel.c.

cp f1 f2 – копирует содержимое f1 в f2, если f2 уже существует

-I – для запроса на подтверждение, если не существует, то тогда создаст новый f2

cp f1 f2 /active – копирует f1 и f2 в каталог /active

mv f1 f2 – переименование f1 в f2

mv f1 /dir1 – перемещение f1 в dir1

mv f1 /dir1/f2 - перемещение f1 в dir1 и переименование в f2

rm f1 f2 – удаление f1 и f2

touch f1 – создание файла f1

cat f1 – вывод содержимого файла на экран

cat > f1 – создание f1 с вводом информации с клавиатуры

wc f1 – подсчет строк, слов и символов в файле, если – l – только строки

Перенаправление ввода/вывода.

В Unix каждая программа имеет поток стандартного ввода, стандартного вывода и поток сообщений об ошибках. Им присваиваются дескрипторы – числовые значения, являющиеся указателями на соответствующий поток. Для ввода – 0, вывода – 1, вывода ошибок – 2. Перенаправлять потоки можно, используя эти стандартные дескрипторы.

Осуществляя обмен данными через стандартные потоки, большинство программ не делает предположения о том, с чем связан поток. Это позволяет использовать одни и те же программы как для работы с терминалом, так и с файлами.

Интерпретатор Bourne Shell предоставляет возможность управления вводом/выводом запускаемых программ. Для перенаправления используются специальные символы: <, >, >>, >$, |

cmd1 > file1 – запустить программу cmd1, направив ее вывод в file1.

cmd2 < file2 – запустить программу cmd2, предоставив ей содержимое file2 в качестве стандартного потока ввода, если файл не существует – произойдет ошибка.

cmd3 > file1 < file2 – запустить cmd3 перенаправив как ввод, так и вывод

cmd1|cmd2 – запустить одновременно cmd1 и cmd2, подав данные со стандартного вывода cmd1 на стандартный ввод cmd2 по конвеерую

cmd4 2 >errfile – направить поток об ошибках при выполнении cmd4 в errfile

cmd5 2 >&1|cmd6 – объединить потоки стандартного вывода и вывода ошибок программы cmd5 и направить все это на стандартный ввод cmd6.

Подавить ввод ошибок:

run 2>/dev/null

/dev/null – псевдоустройство, удаляющее все введенные в него символы.

 


Поделиться:

Дата добавления: 2015-01-14; просмотров: 164; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты