- •Автоматизированная система cadence. Командный интерпритатор. Skill - высокоуровневый, интерактивный язык программирования.
- •Вход в систему
- •Команды
- •Формат команды
- •Основные команды
- •Стандартный ввод и вывод
- •Структура каталогов
- •Допустимые имена файлов
- •Символы подстановки (шаблоны) в именах файлов
- •Запуск unix Bourne-shell (sh, shell)
- •Запуск unix c-shell (csh)
- •Выдача текущего времени (getCurrentTime)
- •Сравнение времен (compareTime)
- •Выдача значения unix переменной окружения (getShellEnvVar)
- •Задание unix переменной окружения (setShellEnvVar)
Допустимые имена файлов
В операционной системе UNIX правил использования имен файлов не так уж много. В новейших UNIX-системах имена файлов могут иметь любую длину и включать почти все символы, кроме косой черты, которая используется для разделения каталогов. Лучше, однако, ограничиться строчными и прописными буквами, цифрами, точками и запятыми. Пробелы и другие специальные символы требуют специальной обработки. Вместо того, чтобы объяснять, как это сделать, я советую Вам отказаться от их использования.
*Не ставьте в начале имени файла точку; команда ls не найдет такой файл в списке, если Вы не укажете ее с ключом -а. Использование точки в качестве первого символа имени файла позволяет "прятать" определенные файлы, чтобы они не "загрязняли" списки каталогов. Однако если Вы новичок в UNIX, то эта особенность может ввести Вас в заблуждение.
Символы подстановки (шаблоны) в именах файлов
В операционной системе UNIX в качестве стандартных символов подстановки (шаблонов) для имен файлов приняты *, ? и []. В настоящее время чаще всего используется звездочка. Эти универсальные символы имеют следующее значение:
* используется для обозначения любого объекта. Например, просто * обозначает любой файл каталога; *.txt - все имена файлов с расширением txt; gorilla.* - все имена файлов, начинающиеся со слова gorilla.
? обозначает любой (но только один) символ. Например, source.? обозначает source.h, source.c, source.y и т.д.
[...] обозначает любой символ из указанных в скобках. Вы можете указывать одиночные символы (например, [chyg] обозначает с, Ь, у или f); диапазон ([а-z] обозначает любую строчную букву, а [a-z0-9A-Z] - любую букву или цифру). Отметим, что в одном диапазоне нельзя сочетать строчные и прописные буквы или буквы и цифры. [а-z] или [А-9] приведут к удивительным результатам - возможно, Вы достигнете цели, но лишь если Вам очень повезет.
*К сожалению, символы подстановки нельзя применять в части "образец" команды grep. Вместо этого команда grep использует более сложное средство - "регулярные выражения", которые в этой книге рассматриваться не будут. Конечно, в элементе файл команды grep символы подстановки использовать можно. Например, команда
> grep "Johnson" *
осуществляет поиск имени Джона во всех файлах текущего каталога.
Литература
Learning the UNIX Operating System, авторы Grace Todino, John Strang, Jerry Peek (O'Reilly & Associates).Хороший вводный курс. Кратко и по теме, понятно новичкам.
Life with UNIX автор Don Libes (Prentice-Hall, 1989). Еще один вводный курс, который помог многим.
UNIX in а Nutshell (O'Reilly & Associates). Краткий перечень команд ОС UNIX. Есть разные варианты этой книги для различных версий UNIX.
Learning the Vi Editor, автор Linda Lamb (O'Reilly & Associates); Learning Emacs, авторы Deb Cameron и Bill Rosenblatt (O'Reilly & Associates). Наша работа с операционной системой не будет продуктивной, если Вы не сможете редактировать файлы. В операционной системе UNIX чаще всего используются редакторы vi и emacs. Они слишком сложны, чтобы описывать их в этой книге, а указанные издания - это отличные образцы популярной литературы.
Хотя операционная система и большинство команд написаны на Си, система UNIX поддерживает ряд других языков, таких как Фортран, Бейсик, Паскаль, Ада, Кобол, Лисп и Пролог. Система UNIX может поддерживать любой язык программирования, для которого имеется компилятор или интерпретатор, и обеспечивать системный интерфейс, устанавливающий соответствие между пользовательскими запросами к операционной системе и набором запросов, принятых в UNIX.
На Рисунке 1.1 изображена архитектура верхнего уровня системы UNIX. Технические средства, показанные в центре диаграммы, выполняют функции, обеспечивающие функционирование операционной системы. Операционная система взаимодействует с аппаратурой непосредственно, обеспечивая обслуживание программ и их независимость от деталей аппаратной конфигурации. Если представить систему состоящей из пластов, в ней можно выделить системное ядро, изолированное от пользовательских программ. Поскольку программы не зависят от аппаратуры, их легко переносить из одной системы UNIX в другую, функционирующую на другом комплексе технических средств, если только в этих программах не подразумевается работа с конкретным оборудованием. Например, программы, рассчитанные на определенный размер машинного слова, гораздо труднее переводить на другие машины по сравнению с программами, не требующими подобных установлений.
Рисунок 1.1. Архитектура системы UNIX
Программы, подобные командному процессору shell и редакторам (ed и vi) и показанные на внешнем по отношению к ядру слое, взаимодействуют с ядром при помощи хорошо определенного набора обращений к операционной системе. Обращения к операционной системе понуждают ядро к выполнению различных операций, которых требует вызывающая программа, и обеспечивают обмен данными между ядром и программой.
Многие прикладные подсистемы и программы, составляющие верхний уровень системы, такие как командный процессор shell, редакторы, SCCS (система обработки исходных текстов программ) и пакеты программ подготовки документации, постепенно становятся синонимом понятия "система UNIX". Однако все они пользуются услугами программ нижних уровней и в конечном счете ядра с помощью набора обращений к операционной системе. В версии V принято 64 типа обращений к операционной системе, из которых немногим меньше половины используются часто. Они имеют несложные параметры, что облегчает их использование, предоставляя при этом большие возможности пользователю.
Короче говоря, ядро реализует функции, на которых основывается выполнение всех прикладных программ в системе UNIX, и им же определяются эти функции.
Файловая система UNIX характеризуется:
иерархической структурой,
согласованной обработкой массивов данных,
возможностью создания и удаления файлов,
динамическим расширением файлов,
защитой информации в файлах,
трактовкой периферийных устройств (таких как терминалы и ленточные устройства) как файлов.
SKILL - это высокоуровневый, интерактивный язык программирования, основанный на популярном искусственном интеллектуальном языке Лисп. Однако SKILL язык поддерживает более условный Cи-подобный синтаксис. Эта поддержка позволяет начинающему пользователю быстро научиться пользоваться системой, в то время как опытные программисты могут воспользоваться всеми возможностями языка Лисп. На простейшем уровне SKILL также легок, как калькулятор. На самом сложном уровне SKILL - это мощный язык программирования, чье применение фактически не ограничено.
SKILL предоставляет командную строку функционального интерфейса для внутренних подсистем. SKILL позволяет быстро и легко настроить существующие CAD программы и помогает развивать новые приложения. SKILL имеет функции для доступа к каждому Cadence инструменту, используя программирующий интерфейс приложения. Этот документ описывает функции, которые являются общими для всех Cadence инструментов, используемых в графической или неграфической среде. Как только вы освоите эти базовые функции, вам понадобится изучить только несколько новых функций для доступа к каждому инструменту в среде Cadence.
Краткий обзор языка.
Этот раздел посвящается быстрому обзору различных аспектов языка программирования SKILL. Эти же темы обсуждаются более детально в последующих главах.
Этот раздел вводит новые термины и бросает общий взгляд на окружение Cadence Framework. Он исследует SKILL данные, вызовы функций, переменные и операторы, а затем рассказывает, как решить некоторые общие проблемы. Хотя каждое приложение подробно определяет свой SKILL интерфейс к данному приложению, этот документ часто обращается к среде Cadence Design Framework II при рассмотрении примеров.
SKILL - это командный язык Cadence окружения. Всякий раз при использовании форм, меню и горячих клавиш п/о Cadence подключает SKILL функции для выполнения вашей задачи. Например, в большинстве случаев SKILL функции могут
Открыть окно проекта.
Увеличить изображение в два раза.
Разместить компоненту или прямоугольник в проекте.
Другие SKILL функции вычисляют или выдают данные из среды Cadence Framework или из проектов. Например, SKILL функции могут выдать ограничивающий прямоугольник текущего окна или выдать список всех фигур слоя.
SKILL функции можно ввести прямо в командной строке для обхода графического пользовательского интерфейса.
Термины и определения.
вывод |
Местом назначением SKILL вывода может быть xterm экран, окно проекта, файл или во многих случаях Окно Командного Интерпретатора (CIW - Command Interpreter Window).
|
CIW |
Начальное рабочее окно многих Cadence программ, которое содержит строку ввода, область вывода, панель меню с командами для запуска различных инструментов и область запроса для общей информации. Область вывода CIW является местом назначения многих примеров, используемых в этом руководстве.
|
SKILL интерпретатор |
SKILL интерпретатор выполняет SKILL программы внутри среды Cadence. Интерпретатор транслирует исходный код текста SKILL программ во внутренние структуры данных, которые он активно использует во время выполнения программы.
|
компилятор |
Компилятор транслирует исходный код в объектное представление, которое может быть машинными инструкциями или набором промежуточных инструкций.
|
вычисление |
Процесс, посредством которого SKILL интерпретатор определяет значение SKILL выражения.
|
SKILL выражение |
Вызов SKILL функции, часто подразумевается оператор, использующий требуемые параметры.
|
SKILL функция |
Проименнованое параметризированное тело одного или нескольких SKILL выражений. Из командной строки ввода можно вызвать любую SKILL функцию, доступную в приложении, с помощью ее имени и предоставления соответствующих параметров.
|
SKILL процедура |
Этот термин используется попеременно со SKILL функцией.
|
Вызов SKILL функции.
Существует множество способов запустить SKILL функцию в SKILL интерпретатор для вычисления. Во многих приложениях всякий раз при использовании форм, меню и горячих клавиш п/о Cadence подключает соответствующие SKILL функции для выполнения вашей задачи. Обычно вам не нужно знать SKILL функции или синтаксис выходных данных.
Горячие клавишы |
Горячая клавиша связывает SKILL функцию с клавиатурным событием. Когда вы вызываете клавиатурное событие, п/о Cadence посылает SKILL функцию в SKILL интерпретатор для вычисления.
|
Формы |
Некоторые функции требуют предоставить данные путем заполнения полей в всплывающей форме.
|
Меню |
Когда вы выбираете запись в меню, система посылает назначенную SKILL функцию в SKILL интерпретатор для вычисления.
|
CIW |
Вы можете непосредственно ввести SKILL функцию в CIW для непосредственного вычисления.
|
SKILL процесс |
Вы можете вызвать отдельный UNIX процесс, который может запустить SKILL функции непосредственно в SKILL интерпретатор.
|
Различия в синтаксисе между SKILL и Си
Арифметические и логические выражения в SKILL такие же как в языке программирования Cи со следующими несущественными различиями.
Экспоненциальный оператор, представленный двумя звездочками (**), добавляется в SKILL.
Оператор модуля "%" заменен функцией mod, так что нельзя использовать "%" как специальный символ для редко используемой функции. Вместо "i % j", используйте "mod(i j)."
Операторы условных выражений "?" и ":" сделались устаревшими из-за более общей управляющей конструкции if/then/else.
Оператор разыменования "*" и оператор адресации "&" не имеют смысла в SKILL и поэтому не поддерживаются.
Побитовые операторы расширены операторами, реализованными функциями nand (~&), nor (~|) и xnor (~^).
Логические выражения возвращают или специальный атом nil, или значение не-nil (обычно специальный атом t), зависящее от того, будет ли вычисленное выражение соответственно ложным или истинным.
Системные функции.
Имеются различные SKILL функции для взаимодействия и запроса системной среды.
Системное выполнение UNIX команд.
Внутри SKILL можно выполнять индивидуальные UNIX команды или вызывать sh или csh UNIX командного процессора.