| Программирование на Shell (Unix) |
| 1 | 1. ВВЕДЕНИЕ Среди операционных систем особое место занимает Unix. Беспрецедентным является то, что ОС Unix может работать практически на всех выпускаемых платформах. UNIX - это стандарт де факто открытых и мобильных операционных систем. (поскольку название UNIX запатентовано компанией AT&T - различные юниксы называются различно: SCO UNIX, BSDI, Solaris, Linux, DGUX, AIX и т.д.). Это не только многозадачная, но и многопользовательская система. |
| 2 | Она обеспечивает современный пользовательский интерфейс на базе системы X Window и межмашинную связь на базе протоколов TCPIP и т.п. ОС Unix была создана Кеном Томпсоном и Деннисом Ритчи в Bell Laborotories (AT&T). Широко распространяться Unixv7 (версия 7) начала в 79 - 80-м годах. Вручение создателям Unix в 1983 году Международной премии А.Тьюринга в области программирования ознаменовало признание этой системы мировой научной (computer science) общественностью. |
| 3 | Что также беспрецедентно. Сколько операционных систем взошло и зашло на компьютерном небосклоне за время существования UNIX! ОС Unix стоит на трех китах: язык Си, файловая система, командный язык. В дальнейшем к ним добавились система X Window и протоколы TCPIP. Язык Си, на котором написана сама операционная система, с одной стороны, сочетает в себе свойства языка высокого уровня: описание типов, программные структуры if, for, while и т.п., а с другой - содержит средства, присущие обычно языкам уровня ассемблера: регистровые переменные, адресную (ссылочную) арифметику, возможности работы с полями бит и отдельными битами и т.п. |
| 4 | 2. ФАЙЛОВАЯ СИСТЕМА Файловая система ОС Unix имеет иерархическую (древовидную) структуру. В вершинах дерева находятся каталоги (используют также термины - справочники, директории), содержащие списки файлов. Эти файлы в свою очередь могут быть либо снова каталогами, либо обычными файлами, либо специальными файлами, представляющими различные устройства ввода-вывода. Корневой каталог имеет имя "". Он обычно содержит каталоги: bin для наиболее используемых команд; usr каталоги и обычные файлы, содержащие информацию, привлекаемую при решении задач пользователя; dev для специальных файлов, представляющих устройства (дисплеи, диски...); etc для хранения команд администратора системы; lib важнейшие библиотеки; mnt для подключения (примонтирования) новых файловых систем; sys средства для изменения конфигурации системы; tmp для хранения временных файлов; usr каталоги и обычные файлы, содержащие информацию, привлекаемую при решении задач пользователя. |
| 5 | А также обычные (выполняемые) файлы: unix ядро; boot загрузчик. Полные имена файлов будут: bin, usr, ..., unix, boot. В свою очередь эти каталоги могут содержать каталоги следующего уровня. Например, каталог "usr", кроме прочего, содержит каталоги: bin хранит дополнительные команды; games игры; include хранит фрагменты системных программ; lib хранит дополнительные библиотеки. полные имена этих файлов будут: usrbin usrgames usrinclude usrlib Если в каталоге "usrinclude" содержится каталог "sys", который в свою очередь, содержит каталог "conf", то полное имя файла "conf" будет usrincludesysconf Формальным признаком полного имени является то, что оно начинается со слэша (""). |
| 6 | Относительное имя начинается не с "", и определят имя относительно своего местоположения. Если (пользователь?) в данный момент находится в директории usr файловой системы, то он может обратиться к этому же файлу по относительному имени includesysconf Есть два специальных имени: . это "имя" текущего директория и .. это "имя" родительского директория (т.е. директория, находящегося на ступеньку выше данного на пути к корню). |
| 7 | В качестве имени файла как правило может использоваться любая последовательность из букв, цифр и подчеркиваний. Могут использоваться и другие символы, однако ряд этих символов при использовании в имени требует специального экранирования. (Лучше не пользоваться специальными символами в именах - иногда это может привести к сложностям в обращении к таким именам, поскольку спецсимволы могут иметь в shell некоторый специальный смысл). |
| 8 | В ряде систем длина имени ограничивается 14-ю символами (этого ограничения желательно придерживаться для переносимости файлов), однако в других системах допускаются более длинные имена - например, до 256 символов. В общем случае не являются обязательными и какие-то расширения в именах. Хотя ряд команд требуют наличия некоторых фиксированных расширений в именах, например расширение ".с" для исходных файлов для Си-компилятора. |
| 9 | КСТАТИ. В ОС UNIX большие и маленькие буквы воспринимаются как различные, поэтому "FILE", "file" и "File" - это три различных имени! ВАЖНОЕ ЗАМЕЧАНИЕ. Отдельные части файловой системы могут находиться на различных физических устройствах, например, на нескольких жестких и гибких дисках (или в различных частях одного диска). Соответствующие фрагменты (поддеревья файловой системы) монтируются (присоединяются) в единую файловую систему командой mount (обычно это функция администратора системы), после чего пользователь может обращаться к любым доступным файлам, при этом в имени никак не отражается устройство, на котором файл находится или создается (т.е. |
| 10 | никаких "A:"). Командный язык ОС Unix - shell оперирует с командами. Более подробно о нем разговор далее, а пока рассмотрим несколько команд работы с файловой системой. Например, в результате выполнения команды ls -l usr где ls - имя команды; -l - флаг, говорящий о том, что выдача должна быть в длинном формате; usr -имя каталога, который надо echo. На экран будет выведено drwxrwxr-x 2 root 2048 nov 3 12:11 bin -rwxr--r-- 1 root 861 may 11 20:11 boot drwxrwxr-x 2 root 1024 jan 9 11:55 dev drwxrwxr-x 1 root 4096 may 11 20:11 dos drw-r--r-- 3 root 4096 nov 17 12:01 include drwxr-xr-x 7 root 480 nov 17 12:30 lib Первая строка означает, что это каталог (d-directory), где первая триада "rwx" разрешает владельцу каталога: r - читать, w - писать и х - выполнять (более точно, для файлов типа каталог w означает разрешение создавать файлы в каталоге и удалять их из него, а х разрешает доступ к файлам каталога); членам группы, в которую входит владелец, также разрешены все три операции. |
| … |
Комментарии