КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Командный интерпретатор 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 /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 – псевдоустройство, удаляющее все введенные в него символы.
|