WWW.DISS.SELUK.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА
(Авторефераты, диссертации, методички, учебные программы, монографии)

 

Московский государственный университет имени М. В. Ломоносова

Факультет вычислительной математики и кибернетики

А. В. Столяров, И. Г. Головин, И. А. Волкова

Операционная система Unix

методическое пособие для выполнения заданий практикума

Москва

2006

УДК 519.6

Авторы будут признательны за конструктивную критику, в том числе

за сообщения об обнаруженных в тексте пособия опечатках. Адрес для связи: [email protected].

Авторские права c А.В.Столяров, И.Г.Головин, И.А.Волкова, 2006 Черновая версия от 27 апреля 2006 г.

Предисловие На втором курсе факультета ВМиК семинары по практическому программированию традиционно проводятся с ориентацией на операционные системы семейства Unix. Многие студенты с такими операционными системами сталкиваются впервые.

Ограничения по времени зачастую не позволяют преподавателям раскрыть на занятиях специфические особенности Unix-подобных операционных систем. Кроме того, в силу различных причин аспекты работы с Unix, необходимые при выполнении заданий практикума на ЭВМ, оказываются разнесенными по всевозможной литературе, ориентированной на разный уровень читателя; пособий, конспективно и сжато охватывающих все основные вопросы как пользовательского интерфейса Unix, так и системы программирования Gnu (включая компиляторы семейства gcc, отладчик gdb и систему автоматической сборки Gnu Make), практически нет.

Настоящее пособие призвано заполнить образовавшуюся нишу. Пособие написано на основе опыта, приобретенного авторами в процессе ведения семинарских занятий по программированию на втором курсе факультета ВМиК МГУ; в тексте содержатся ответы на наиболее типичные вопросы, возникающие у студентов в связи с использованием Unix-подобных операционных систем при выполнении заданий практикума на ЭВМ.

Вопросы, связанные с языками программирования C и C++, системными вызовами ОС Unix и т.п. в настоящем пособии не рассматриваются; для изучения этих вопросов следует обратиться к соответствующей литературе.

1 Введение С созданием в конце восьмидесятых годов минувшего столетия персональных компьютеров с процессором i386 стало возможным применение на персональных компьютерах операционных систем с истинной многозадачностью, и прежде всего операционных систем семейства Unix. Последовавшее вскоре появление свободно распространяемых юниксоподобных систем FreeBSD и Linux, способных работать на компьютерах архитектуры i386, стало настоящей революцией представлений о персональных компьютерах.

Существует несколько десятков операционных систем, объединенных общим названием Unix. Среди них такие системы, как SunOS/Solaris, HPUX, AIX, Digital Unix (DEC Unix), Minix, FreeBSD, NetBSD, OpenBSD, BSDi, Linux и другие. Любители точных формулировок говорят, что словом Unix нельзя назвать ни одну из операционных систем, вместо этого следует говорить о семействе операционных систем, называемых Unix’оподобными (Unix-like).

Под термином ОС Unix мы будем понимать систему, входящую в это семейство.

Операционные системы семейства Unix объединены достаточно серьезными традициями, многие из которых заложены еще создателями первого Unix’а в начале 1970-х годов. Эти традиции выдержали проверку временем, подобную которой в мире компьютерных технологий выдерживает очень небольшое количество инноваций.

Первое, что следует отметить при переходе на Unix это очень развитые средства командной строки. Именно путем подачи команд совершается большинство действий в Unix’е. Иногда это создает ошибочное впечатление отсутствия для Unix’а средств графического пользовательского интерфейса; на самом деле, разумеется, такие средства существуют и к настоящему моменту развиты не хуже, а во многом и лучше, чем в коммерческих операционных системах ряда Windows, MacOS и т.п. Использование командной строки обусловлено исключительно тем, что так действительно удобнее.

Второе, что бросается в глаза – это многообразие графических оболочек. Дело в том, что графический интерфейс пользователя (GUI) здесь не является частью операционной системы; поэтому пользователь может выбрать тот внешний вид и функциональность оконной системы, которые ему удобнее.

Третье отличие не столь заметно на первый взгляд; оно состоит в том, что подавляющее большинство программ в мире Unix распространяется в исходных текстах и часто компилируется уже на машине конечного пользователя, что делает, например, компилятор языка C обязательной частью почти любого дистрибутива Unix.

Немаловажно, что бльшая часть программного обеспечения, доо ступного в мире Unix, распространяется свободно, то есть условия лицензии допускают свободное копирование и модификацию программ.

Программисты, привыкшие к интегрированным средам разработки, могут с удивлением обнаружить, что при разработке программ для ОС Unix монолитные интегрированные среды обычно не применяются.

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

В целом процесс разработки программ в среде Unix отличается высоким комфортом для программиста, что отчасти объясняет существование большого количества свободно распространяемого программного обеспечения. Авторы пособия выражают надежду, что читателю удастся преодолеть неудобства, вызываемые на первых порах непривычностью операционной среды, и оценить несомненные достоинства ОС Unix как с пользовательской, так и с программистской точек зрения.



2 Пользовательские средства ОС Unix В этой главе рассматриваются основные возможности пользовательского интерфейса ОС Unix: взаимодействие с командным интерпретатором Bourne Shell и редактирование файлов с помощью редакторов vim, joe и встроенного редактора оболочки Midnight Commander.

2.1 Первый сеанс При выполнении заданий практикума вам, возможно, придется столкнуться с ОС FreeBSD или ОС Linux, причем в зависимости от условий конкретного компьютерного класса нужная вам операционная система может функционировать либо непосредственно на той машине, с которой вы работаете, либо на общем сервере, к которому вам потребуется удаленный доступ.

С точки зрения пользователя различия между этими вариантами невелики. Краткую инструкцию о том, как войти в систему, вы получите от преподавателя или от системного администратора компьютерного класса вместе с вашим входным именем (login) и паролем (password).

Итак, введите входное имя и пароль. Если вы сделали ошибку, система выдаст сообщение Login incorrect, которое может означать как опечатку во входном имени, так и неправильный пароль. Учтите, что регистр букв важен в обоих случаях, так что причиной неприятия системой пароля может быть, например, случайно нажатая клавиша CapsLock.

Для работы с системой вам необходимо получить приглашение командной строки. При использовании удаленного терминального доступа (например, с помощью программы putty) командная строка – это единственное средство работы с системой, которое вам доступно. Приглашение появится сразу после того, как вы введете верные имя и пароль.

Если вы работаете в терминальном Unix-классе и вход в систему выполняете с помощью текстовой консоли, после ввода верных имени и пароля вы также немедленно получите приглашение командной строки, однако в этом случае у вас есть возможность запустить один из возможных графических оконных интерфейсов. Это удобнее хотя бы тем, что можно открыть несколько окон одновременно. Для запуска графической оболочки X Window необходимо дать команду startx1 ; после этого нужно запустить один или несколько экземпляров программы xterm, 1 В некоторых системах может потребоваться другая команда; за информацией обращайтесь к вашему системному администратору которая представляет собой графическое окно, в котором запускается интерпретатор команд. Подробнее работа с графическими оболочками рассматривается в главе 3.

Возможно также, что вход в систему выполняется сразу с помощью графического интерфейса (этот вариант бывает возможен как с локальной машиной, так и с удаленным доступом). В этом случае также необходимо получить доступ к интерпретатору командной строки, запустив программу xterm.

Первым вашим действием в системе должна стать смена пароля. В зависимости от конфигурации системы это может потребовать команды passwd или yppasswd. Введите эту команду (без параметров). Система спросит у вас сначала старый пароль, затем (дважды) новый. Учтите, что при вводе пароля на экране ничего не отображается.

Учтите, что придуманный вами пароль должен содержать ровно восемь символов, причем в нем должны присутствовать латинские буквы верхнего и нижнего регистров, цифры и знаки препинания. Пароль не должен основываться на английском слове или на вашем входном имени. Вместе с тем, следует придумать такой пароль, который вы легко запомните. Проще всего взять какую-либо запоминающуюся фразу, содержащую знаки препинания и числительные, и построить пароль на ее основе (числительные передаются цифрами, от остальных слов берутся первые буквы, причем буквы, соответствующие существительным, берутся заглавными, остальные – строчными). Например, из пословицы Один с сошкой, семеро с ложкой можно сделать пароль 1sS,7sL..

2.2 Дерево каталогов. Работа с файлами Система каталогов в ОС Unix существенно отличается от привычной пользователям MSDOS и WinXX, и наиболее заметные на первый взгляд отличия – это отсутствие букв, обозначающих устройства (чтото вроде A:, C: и т.п.), а также то обстоятельство, что имена каталогов разделяются в ОС Unix не обратной, а прямой косой чертой (/).

После входа в систему вы окажетесь в вашем домашнем каталоге.

Домашний каталог – это место для хранения ваших личных файлов.

Чтобы узнать имя (путь) текущего каталога, введите команду pwd:

/home/stud/s Узнать, какие файлы находятся в текущем каталоге, можно с помощью команды ls:

Имена файлов в ОС Unix могут содержать любое количество точек в любых позициях, т.е. например, имя a.b..c...d....e является вполне допустимым именем файла. При этом действует соглашение, что имена, начинающиеся с точки, соответствуют невидимым файлам. Чтобы увидеть все файлы, включая невидимые, можно воспользоваться командой ls -a:

Некоторые из показанных имен могут соответствовать подкаталогам текущего каталога, другие могут иметь специальные значения. Чтобы было проще различать файлы по типам, можно воспользоваться флажком -F:

Теперь мы видим, что все имена, кроме.bash_history, соответствуют каталогам. Заметим, что. – это ссылка на сам текущий каталог, а..

– ссылка на каталог, содержащий текущий каталог (в нашем примере это /home/stud).

Перейти в другой каталог можно командой cd:

/home/stud/s /home/stud/s2003324/tmp /home/stud/s $ cd /usr/include /usr/include /home/stud/s Переименование или перемещение файла Создание файла или установка нового времени модиtouch Просмотр содержимого файла с пейджингом Последний пример показывает, что команда cd без указания каталога делает текущим домашний каталог пользователя, как это было сразу после входа в систему.

Основные команды работы с файлами перечислены в таблице 1.

Большинство команд принимает дополнительные ключи, начинающиеся со знака ’-’. Так, команда rm -r the_dir позволяет удалить директорию the_dir вместе со всем её содержимым.

2.3 Редакторы текстов Различных редакторов текстов в операционных системах семейства Unix существует несколько сотен. Ниже приводятся основные сведения о трёх из них.

Выбирая для работы редактор текстов, следует обратить внимание на то, подходит ли он для написания программ. Для этого редактор текстов должен, во-первых, работать с файлами в обычном текстовом формате; во-вторых, редактор не должен выполнять автоматического форматирования абзацев текста (т.е., например, MSWord для этой цели непригоден); и, в-третьих, редактор обязан использовать моноширинный шрифт, т.е. шрифт, в котором все символы имеют одинаковую ширину. Выяснить, удовлетворяет ли редактор этому свойству, проще всего, набрав в этом редакторе строку из десяти латинских букв m и под ней - строку из десяти латинских букв i. В редакторе, использующем моноширинный шрифт, полученный текст будет выглядеть так:

mmmmmmmmmm iiiiiiiiii тогда как в редакторе, использующем пропорциональный шрифт (и непригодном, вследствие этого, для программрования), вид будет удалить слово (от курсора до пробела или конца строdw удалить символы от курсора до конца строки слить следующую строку с текущей (удалить перевод начать ввод текста с позиции перед текущим симвоi то же, но после текущего символа (append) вставить пустую строку после текущей и начать ввод то же, но строка вставляется перед текущей отменить последнюю операцию (undo) отменить все изменения, внесенные в текущую строку примерно таков:

mmmmmmmmmm iiiiiiiiii 2.3.1 Редактор vim Редактор vim (Vi Improved) является клоном классического редактора текстов для Unix-подобных операционных систем VI. Работа в редакторах этого семейства может показаться для начинающего пользователя несколько неудобной, т.к. по построению интерфейса редактор VI коренным образом отличается от привычных большинству пользователей экранных редакторов текстов с системами меню.

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

Рис. 1: Перемещение курсора в vim с помощью алфавитных клавиш мерно сложной задачей, к вашим услугам другие редакторы текстов, два из которых описаны ниже. Для читателей, решивших обойтись без изучения vim, приведем для справки последовательность нажатия клавиш для выхода из этого редактора: если вы случайно запустили vim, практически в любой ситуации вы можете нажать Escape, затем набрать :q!, и это приведёт к выходу из редактора без сохранения изменений.

Чтобы запустить редактор vim, достаточно дать команду vim myfile.c. Если файла myfile.c не существует, он будет создан при первом сохранении изменений.

Первое, что необходимо уяснить, работая с vim – это наличие у него двух режимов работы: режима ввода текста и режима команд. Сразу после запуска вы оказываетесь в режиме команд. В этом режиме любые нажатия клавиш будут восприняты как команды редактору, т.е., если вы попытаетесь ввести текст, результаты могут оказаться совершенно не похожи на ожидавшиеся.

Перемещение по тексту в режиме команд возможно с помощью стрелочных клавиш, однако более опытные пользователи vim предпочитают пользоваться для этой цели символами j, k, h и l для перемещения, соответственно, вниз, вверх, влево и вправо (см. рис. 1).

Причина такого выбора в том, что в ОС UNIX стрелочные клавиши генерируют последовательность байт, начинающуюся с кода Esc (0x1b); любая такая последовательность может быть воспринята редактором как требование на переход в командный режим и несколько команд-символов, причем единственный способ отличить Esc-последовательность, порожденную нажатием клавиши, от такой же последовательности, введенной пользователем – это измерение времени между приходом кода Esc и следующего за ним. При работе на медленной линии связи (например, при удаленном редактировании файла в условиях медленной или неустойчивой работы сети) этот способ может давать неприятные сбои.

Несколько наиболее часто употребляемых команд приведены в таблице 2. Команды i, a, o, и O переводят вас в режим ввода текста.

Теперь всё вводимое с клавиатуры воспринимается как текст, подлежащий вставке. Естественно, возможно использование клавиши Backspace сохранить, игнорируя (по возможности) флаг выйти их редактора (если файл не был изменен с моq выйти без сохранения, сбросив сделанные изменения прочитать содержимое файла и вставить его начать редактирование еще одного файла показать список редактируемых файлов (активных Таблица 3: Файловые команды редактора vim в её обычной роли. В большинстве случаев возможно также использование стрелочных клавиш, но в некоторых версиях vim, при некоторых особенностях настройки, а также при работе по медленной линии возможна неправильная реакция редактора на стрелки. В этом случае для навигации по тексту необходимо выйти из режима ввода.

Выход из режима ввода и возврат в режим команд осуществляется нажатием клавиши Escape.

При необходимости найти в тексте то или иное ключевое слово следует использовать (в командном режиме) последовательность /, завершая её нажатием Enter. Так, /myfun установит курсор на ближайшее вхождение строки myfun в вашем тексте. Повторить поиск можно, введя символ / и сразу же нажав Enter.

Переместиться на строку с заданным номером (например, на строку, для которой компилятор выдал сообщение об ошибке) можно, набрав двоеточие, номер строки и нажав Enter.

Также через двоеточие доступны команды сохранения, загрузки файлов, выхода и т.п. (см. таблицу 3).

При одновременной работе с несколькими файлами переход между двумя последними редактируемыми файлами кроме команды :b также можно осуществить комбинацией клавиш Ctrl-^.

Отдельного упоминания заслуживают команды выделения блоков и работы с блоками. Начать выделение фрагмента, состоящего исключительно из целых строк, можно командой V; выделить фрагмент, состоящий из произвольного количества символов, можно с помощью команды v. Граница выделения устанавливается стрелками или соответствующими командами h,j,k и l.

Удалить выделенный блок можно командой d, скопировать - командой y. В обоих случаях выделение снимается, а фрагмент текста, находившийся под выделением, помещается в специальный буфер. Содержимое буфера можно вставить в текст командами p (после курсора) и P (перед курсором).

Текст может попасть в буфер и без выделения. Так, все команды, удалящие те или иные фрагменты текста (x, dd, dw, d$ и др.) помещают удалённый текст в буфер. Команды yy, yw, y$ помещают в буфер, соответственно, текущую строку, текущее слово и символы от курсора до конца строки.

Возможности редактора vim возрастут, если вы создадите тэг-файл для ваших исходных текстов. Это делается программой ctags, например:

$ ctags *.c *.h В результате в текущей директории появится файл tags, содержащий информацию о расположении в вашей программе деклараций и описаний. Наиболее очевидное использование этой информации - автоматический поиск в вашей программе описания функции или переменной, имя которой находится в настоящий момент под курсором. Для использования этой возможности нажмите комбинацию Ctrl-].

Если программа, над которой вы работаете, компилируется и компонуется с помощью системы make (см.§4.3), вы можете также использовать способность vim к восприятию сообщений об ошибках и предупреждениях, выдаваемых компилятором gcc. Для этого следует запустить утилиту make командой vim. Например, если ваша программа собирается командой make prog, в командном режиме vim следует набрать :make prog. Если при компиляции возникнут предупреждения или ошибки, редактор автоматически найдет для вас то место в ваших исходных файлах, которое “не понравилось” компилятору. Чтобы снова увидеть полностью сообщение компилятора, относящееся к данному месту исходного файла, используйте команду :cc, а для перехода к следующей ошибке или предупреждению – команду :cn.

2.3.2 Редактор joe Другой популярный в среде Unix редактор текстов называется JOE (от слов Jonathan’s Own Editor). Чтобы запустить редактор joe, достасохранить файл Ctrl-K D Ctrl-K X Ctrl-C Ctrl-Y Ctrl-K B Ctrl-K K Ctrl-K C Ctrl-K M Ctrl-K Y Ctrl-K L Ctrl-Shift-’-’ Ctrl-^ Ctrl-K F Ctrl-L Таблица 4: Наиболее употребительные команды редактора joe точно дать команду joe myfile.c. Если файла myfile.c не существует, он будет создан при первом сохранении изменений.

В отличие от редактора vim, интерфейс редактора joe покажется более похожим на привычные для большинства пользователей экранные редакторы текстов. Стрелочные клавиши, Enter, Backspace и т.п.

работают в своей обычной роли, в большинстве случаев также доступна клавиша Delete. Команды редактору даются с помощью комбинаций клавиш, большинство из которых начинается с Ctrl-K. В частности, Ctrl-K h покажет в верхней части экрана памятку по наиболее употребительным командам редактора (см. таблицу 4).

2.3.3 Встроенный редактор оболочки Midnight Commander Оболочка (файловый монитор) Midnight Commander представляет собой клон некогда популярного файлового менеджера под MSDOS, известного как Norton Commander. Запуск оболочки производится командой mc. Вызов встроенного редактора текстов для редактирования выбранного файла производится клавишей F4; если вы хотите создать новый файл, используйте комбинацию Shift-F4.

Интерфейс этого редактора достаточно понятен на интуитивном уровне, поэтому подробное описание мы опускаем. Ограничимся одной рекомендацией. Если не предпринять специальных мер, редактор будет вставлять в текст символ табуляции вместо групп из восьми пробелов, что может оказаться неудобным при использовании других редакторов. Единственный способ отключить такой стиль заполнения – установить опцию Fill tabs with spaces. Чтобы добраться до диалога с настройками, нажмите F9, выберите пункт меню Options, в нём – пункт General.

Чтобы настройки не потерялись при выходе из Midnight Commander, сохраните их. Для этого, выйдя из редактора, нажмите F9, выберите пункт меню Options, а в нём - пункт Save Setup.

2.4 Права доступа к файлам С каждым файлом в ОС Unix связано 12-битное слово, называемое правами доступа к файлу2.

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

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

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

Поскольку группа из трёх бит соответствует ровно одной цифре восьмеричной системы счисления, общепринятой является практика записи слова прав доступа к файлу в виде восьмеричного числа, обычно трёхзначного. При этом младший разряд (последняя цифра) соответствует правам для всех пользователей, средняя - правам для группы и старшая (обычно она идёт самой первой) цифра обозначает права для владельца. Права на чтение соответствуют 1, права на запись - 2, права на чтение - 4; соответствующие значения суммируются, т.е., например, 2В английском оригинале - permissions права на чтение и запись обозначаются цифрой 6 (4 + 2), а права на чтение и исполнение - цифрой 5 (4 + 1).

Таким образом, права доступа к файлу /bin/cat из нашего примера можно закодировать восьмеричным числом 07553.

Для каталогов интерпретация битов прав доступа несколько отличается. Права на чтение каталога дают возможность просмотреть его содержимое. Права на запись позволяют модифицировать каталог, т.е.

создавать и уничтожать в нём файлы (причем удалить можно и чужой файл, а также такой, на который прав доступа нет, т.к. достаточно иметь права доступа на запись в сам каталог). Что касается бита прав на исполнение, для каталога этот бит означает возможность какимлибо образом использовать содержимое каталога, в том числе, например, открывать файлы, находящиеся в каталоге. Таким образом, если на каталог установлены права чтения, но нет прав исполнения, мы можем его просмотреть, но воспользоваться увиденным нам не удастся.

Напротив, если есть права исполнения, но нет прав чтения, мы можем открыть файл из этого каталога только в том случае, если точно знаем имя файла. Узнать имя мы никак не можем, т.к. возможности просмотреть каталог у нас нет.

Оставшиеся три (старших) разряда слова прав доступа называются SetUid Bit (04000), SetGid Bit (02000) и Sticky Bit (01000).

Если для исполняемого файла установить SetUid Bit, этот файл будет при исполнении иметь права своего владельца (чаще всего - пользователя root) вне зависимости от того, кто из пользователей соответствующий файл запустил. SetGid Bit работает похожим образом, устанавливая эффективную группу пользователя (в отличие от эффективного идентификатора пользователя). Примером suid-программы является passwd.

Sticky Bit, установленный на исполняемом файле, в некоторых версиях ОС Unix обозначает, что сегмент кода программы следует оставить в памяти даже после того, как программа будет завершена; это позволяет экономить время на загрузке в память программ, исполняемых чаще других.

Для каталогов SetGid Bit означает, что, какой бы пользователь ни создал в этом каталоге файл, в качестве группы владельца для этого файла будет установлена та же группа, что и у самого каталога. Sticky Bit означает, что, даже если пользователь имеет право на запись в данный каталог, удалить он сможет только свои (принадлежащие ему) файлы.

Для изменения прав доступа к файлам используется команда chmod4. Эта команда позволяет задать новые права доступа в виде восьОбратите внимание, что число записано с нулём впереди; согласно правилам языка C это означает, что число записано в восьмеричной системе 4 сокращение слов Change Mode меричного числа, например:

chmod 644 myfile.c устанавливает для файла myfile.c права записи только для владельца, а права чтения - для всех.

Права доступа также можно задать в виде мнемонической строки вида [ugoa][+-=][rwxsXtugo] Буквы u, g, o и a в начале означают, соответственно, владельца (user), группу (group), всех остальных (others) и всех сразу (all). + означает добавление новых прав, - – снятие старых прав, = – установку указанных прав и снятие всех остальных. После знака буквы r, w, x означают, как можно догадаться, права на чтение, запись и исполнение, буква s – установку/снятие Set-битов (имеет смысл для владельца и группы), t обозначает Sticky Bit. Буква X (заглавная) означает установку/снятие бита исполнения только для каталогов, а также для тех файлов, на которые хотя бы у кого-нибудь есть права исполнения.

Если команду chmod использовать с ключом -R, она проведёт смену прав доступа ко всем файлам во всех поддиректориях заданной директории.

Например, команда chmod a+x myscript сделает файл myscript исполняемым; команда chmod go-rwx * снимет со всех файлов в текущем каталоге все права, кроме прав владельца. Очень полезной может оказаться команда chmod -R u+rwX,go=rX ~ на случай, если вы случайно испортите права доступа в своей домашней директории; эта команда, скорее всего, приведёт всё в удовлетворительное состояние.

2.5 Перенаправления ввода-вывода в интерпретаторе Bourne Shell Как известно, практически все программы в ОС Unix следуют соглашению, по которому поток ввода-вывода с дескриптором 0 объявляется потоком стандартного ввода, поток с дескриптором 1 потоком стандартного вывода и поток с дескриптором 2 потоком для вывода сообщений об ошибках.

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

> file1 < file2 запустить программу cmd3, перенаправив cmd cmd2, подав данные со стандартного вывода первой на стандартный ввод второй.

cmd4 2> errfile cmd5 2>&1 | cmd вывода ошибок программы cmd5 и направить всё на стандартный ввод программе Таблица 5: Примеры перенаправлений ввода-вывода программы как для работы с терминалом, так и для чтения из файла и/или записи в файл.

Командные интерпретаторы, в том числе классический Bourne Shell, предоставляют возможности для управления вводом-выводом запускаемых программ. Для этого используются символы, >>, >& и | (см.

таблицу 5).

Обычно в ОС Unix присутствует программа less, позволяющая постранично просматривать содержимое файлов, пользуясь клавишами "Стрелка вверх", "Стрелка вниз", PgUp, PgDn и др. для прокрутки.

Эта же программа позволяет постранично просматривать текст, поданный ей на стандартный ввод. Использование программы less полезно в случае, если информация, выдаваемая какой-либо из запускаемых вами программ, не умещается на экран. Например, команда ls -lR | less позволит вам просмотреть список всех файлов, находящихся в текущей директории и всех её поддиректориях.

Учтите, что компилятор gcc выдаёт все сообщения об ошибках и предупреждения в стандартный поток ошибок. Поэтому, чтобы просмотреть постранично сообщения, выдаваемые в ходе компиляции, следует дать, например, такую команду:

gcc -Wall -g myprog.c -o myprog 2>&1 | less 2.6 Процессы Список процессов, выполняющихся в настоящий момент, можно получить командой ps:

PID TTY TIME CMD

2199 pts/5 00:00:00 bash Как видно, команда по умолчанию выдаёт только список процессов, запущенных в данном конкретном сеансе работы.

К сожалению, опции команды ps очень сильно отличаются в зависимости от версии (в частности, для FreeBSD и Linux). За подробной информацией следует обращаться к документации по данной конкретной ОС; здесь мы ограничимся замечанием, что команда ps ax выдаст список всех существующих процессов, а команда ps axu дополнительно выдаст информацию о владельцах процессов5.

В некоторых случаях может оказаться полезной программа top, работающая интерактивно. Она выдаёт на экран список наиболее активных процессов, обновляя его один раз в секунду. Чтобы выйти из программы top, необходимо ввести букву q.

Снять процесс можно с помощью сигнала. Обычно применяют сначала сигнал SIGTERM (15), а если после этого процесс не завершился – сигнал SIGKILL (9). Сигнал SIGTERM может быть перехвачен программой, например, с целью корректного завершения; сигнал SIGKILL уничтожает процесс безусловным образом, не оставляя возможности произведения каких-либо действий по подготовке к корректному завершению.

5 Это верно для ОС Linux и FreeBSD. В других ОС, например в SunOS/Solaris, опции команды ps имеют совершенно иной смысл Для передачи сигнала процессу используется команда kill. По умолчанию передаётся сигнал SIGTERM, т.е., например, команда kill 2763 приведёт к тому, что процесс 2763 получит сигнал SIGTERM.

Задать другой сигнал можно либо по номеру, либо по названию (TERM, KILL и т.п.). Следующие две команды эквивалентны; обе передают процессу 2763 сигнал SIGKILL:

2.7 Выполнение в фоновом режиме Некоторые программы выполняются ощутимое время, при этом не требуя взаимодействия с пользователем через стандартные потоки ввода/вывода. Во время выполнения таких программ удобно иметь возможность продолжать давать команды командному интерпретатору, чтобы не тратить время.

Допустим, нам потребовался список всех файлов в файловой системе. Такой список можно получить с помощью команды ls -lR /.

Естественно было бы перенаправить её вывод в файл, чтобы позднее иметь возможность его анализа. Заметим, что такая команда будет выполняться несколько минут и ждать её окончания нам бы не хотелось, поскольку эти несколько минут мы могли бы, например, использовать для набора текста в редакторе. Чтобы запустить команду в фоновом режиме, к ней следует в конце приписать символ &, например:

$ ls -lR / >list.txt 2>/dev/null & [1] Здесь мы перенаправили поток вывода сообщений об ошибках в устройство /dev/null6, чтобы сообщения о невозможности чтения некоторых каталогов не мешали нашей дальнейшей работе.

В ответ на нашу команду система сообщает, что задание запущено в фоновом режиме в качестве фоновой задачи №1, причем номер запущенного процесса – 2437. Текущий список выполняемых фоновых задач можно узнать командой jobs:

$ jobs [1]+ Running ls -lR / >list.txt 2>/dev/null & 6 Устройство /dev/null предназначено для поглощения потоков данных, которые нам не нужны; в него можно записывать что угодно, данные при этом попросту исчезают По окончании выполнения задачи командный интерпретатор нам об этом сообщит. В случае успешного завершения сообщение будет выглядеть так:

В случае, если программа завершилась с кодом, отличным от нуля, сообщение будет иметь другой вид:

Наконец, если фоновый процесс снять сигналом, сообщение будет примерно таким (для сигнала SIGTERM):

[1]+ Terminated ls -lR / >list.txt 2>/dev/null & При отправлении сигналов процессам, являющимся фоновыми задачами данного конкретного экземпляра командного интерпретатора, можно ссылаться на номера процессов по номерам фоновых задач, добавляя к номеру символ %. Так, команда kill %2 отправит сигнал SIGTERM второй фоновой задаче. Символ % без указания номера обозначает последнюю из фоновых задач.

Если задача уже запущена не в фоновом режиме и нам не хочется ждать её завершения, мы можем сделать обычную задачу фоновой.

Для этого следует нажать Ctrl-Z, в результате чего выполнение текущей задачи будет приостановлено. Затем с помощью команды bg7 приостановленную задачу можно снова поставить на выполнение, но уже в фоновом режиме.

Также возможно сделать текущей (т.е. такой, окончания которой ожидает командный интерпретатор) любую из фоновых и приостановленных задач. Это делается с помощью команды fg8.

2.8 Электронная документация Дистрибутивы ОС Unix обычно содержат большое количество документации, доступ к которой можно получить непосредственно в процессе работы. Большая часть такой документации оформлена в виде файлов, отображаемых с помощью традиционной команды man, либо с помощью более современной программы info.

7 От английского background – фон 8 От английского foreground 2.8.1 Команда man Команда man служит для поиска и отображения установленной в системе справочной информации. Справочник охватывает команды ОС Unix, системные вызовы, библиотечные функции языка C (и других установленных в системе языков), форматы файлов, некоторые общие понятия и т.д.

К примеру, если вы хотите узнать все опции команды ls, следует дать команду а если вы, допустим, забыли, в каком порядке идут аргументы системного вызова waitpid(), вам поможет $ man waitpid Программа man найдет соответствующий документ в системном справочнике и запустит программу его отображения. Появившийся на экране документ можно листать с помощью клавиш стрелка вверх и стрелка вниз, можно использовать клавишу пробел, чтобы пропустить сразу страницу текста. Выход из просмотра справочного документа осуществляется клавишей q (от слова quit).

Если нужный вам справочный документ имеет большой объем, а вам необходимо найти в нем определенное место, может оказаться удобным поиск подстроки. Это делается вводом символа /, после которого следует набрать строку для поиска и нажать Enter. Повторный поиск той же строки осуществляется вводом / и нажатием Enter (то есть саму строку можно опустить). Чтобы выполнить поиск в обратном направлении, можно воспользоваться символом ? вместо /.

В некоторых случаях системный справочник может содержать более одного документа с данным именем. Так, в системе существует команда write и системный вызов write. Команда write вам вряд ли понадобится, так что, если вы набрали man write, скорее всего, вы имели в виду системный вызов; к сожалению, система этого не знает и выдаст вам совсем не тот документ, который вам нужен.

Эту проблему можно решить указанием номера секции системного справочника. Так, в нашем примере команда $ man 2 write выдаст именно документ, посвященный системному вызову write, поскольку секция №2 содержит справочные документы по системным вызовам. Перечислим другие секции системного справочника:

• 1 – пользовательские команды ОС Unix (такие команды, как ls, rm, mv и т.п. описываются в этой секции) • 2 – системные вызовы ядра ОС Unix • 3 – библиотечные функции языка C (к этой секции можно обратиться, например, за информацией о функции sprintf) • 4 – описания файлов устройств • 5 – описания форматов системных конфигурационных файлов • 6 – игровые программы • 7 – общие понятия (например, man 7 ip выдаст полезную информацию о программированием с использованием TCP/IP) • 8 – команды системного администрирования ОС Unix (например, в этой секции вы найдете описание команды mount, предназначенной для монтирования файловых систем).

Система может содержать и другие секции, причем не обязательно обозначающиеся цифрой; так, при установке в системе интерпретатора языка Tcl его справочные страницы обычно оформляются в отдельную секцию, которая может называться “n”, “3n” и т.п.

2.8.2 Команда info Если команда man служит для отображения отдельных документов, то команда info позволяет осуществлять просмотр целых наборов страниц, связанных между собой гиперссылками; иначе говоря, документы в формате info представляют собой гипертекст, а сама команда – браузер (просмотрщик) гипертекста, работающий в текстовом режиме.

Система info часто содержит более подробную информацию о том же предмете, чем man. Так, man make выдаст довольно скудную информацию об опциях командной строки команды make, в то время как info make позволит основательно изучить работу с программой make (см. §4.3), научиться составлять ее входные файлы и т.д.

При работе с программой info можно пролистывать текст клавишами стрелок и пробелом. Клавиши n и p позволяют перейти, соответственно, к следующей и предыдущей странице гипертекста. Гиперссылки в тексте заключены между знаком * и ::, например:

* Reading Makefiles:: How makefiles are parsed Если позиционировать курсор на словах Reading Makefiles и нажать Enter, произойдет переход по данной гиперссылке. Если необходимо перейти назад, можно воспользоваться клавишей l (от слова last).

Выход из программы info производится по клавише q (от слова quit) или нажатием Ctrl-C.

2.9 Дополнительные возможности 2.9.1 Командные файлы в Bourne Shell Интерпретатор Bourne Shell позволяет осуществлять не только работу в режиме диалога с пользователем, но и выполнение программ, называемых командными файлами (скриптами). Файл с программой, предназначенной для исполнения интерпретатором Bourne Shell, должен начинаться со строки #!/bin/sh Переменные в языке Bourne Shell имеют имена, состоящие из латинских букв, цифр, знака подчеркивания и начинающиеся всегда с буквы. Значением переменной может быть любая строка символов. Чтобы присвоить переменной значение, необходимо написать оператор присваивания, например:

I= MYFILE=/tmp/the_file_name MYSTRING="Here are several words" Обратите внимание, что в имени переменной, а также вокруг знака равенства (символа присваивания) не должно быть пробелов, в противном случае команда будет расценена не как присваивание, а как обычная команда, в которой знак присваивания – один из параметров.

Для обращения к переменной используется знак $, например:

echo $I $MYFILE $MYSTRING В результате выполнения этой команды будет напечатано:

10 /tmp/the_file_name Here are several words При необходимости скомпоновать слитный текст из значений переменных можно имена переменных заключать в фигурные скобки, например:

echo ${I}abc Эта команда напечатает:

10abc Для выполнения арифметических действий используется конструкция $(( )). Например, команда I=$(( $I + 7 )) увеличит значение переменной I на семь.

С помощью встроенной в интерпретатор Bourne Shell команды test можно осуществлять проверку выполнения различных условий. Если заданное условие выполнено, команда завершится с нулевым (успешным) кодом возврата, в противном случае – с единичным (неуспешным).

Синонимом команды test является символ открывающей квадратной скобки, причем сама команда в этом случае воспрнимает символ закрывающей квадратной скобки в качестве своего параметра (как знак окончания выражения), что позволяет наглядно записывать проверяемое выражение, заключая его в квадратные скобки. Приведём несколько примеров.

[ -f "file.txt" ] [ "$I" -lt 25 ] [ "$A" = "abc" ] # значение переменной A является строкой abc [ "$A" != "abc" ] # значение переменной A не является строкой abc Это можно, например, использовать в операторе ветвления:

if [ -f "file.txt" ]; then cat "file.txt" else echo "Файл file.txt не найден" Заметим, что то же самое можно было написать и иначе, без использования квадратных скобок, но это менее наглядно:

if test -f "file.txt" ; then cat "file.txt" else echo "Файл file.txt не найден" В качестве команды, проверяющей условие, может фигурировать не только test, но и любая другая команда. Например:

if gcc -Wall -g myprog.c -o myprog; then echo "Компиляция прошла успешно" else echo "При компиляции произошла ошибка" Кроме оператора ветвления, язык Bourne Shell поддерживает и более сложные конструкции, в том числе циклы. Например, следующий фрагмент напечатает все числа от 1 до 100:

while [ $I -le 101 ]; do done Использовать информацию об успешности выполнения команды можно также с помощью так называемых логических связок && и ||, означающих, соответственно, логические операции “и” и “или”. При этом логическому значению “истина” соответствует успешное завершение команды, а значению “ложь” – неуспешное. Командная строка $ cmd1 && cmd заставит интерпретатор выполнить сначала команду cmd1, а затем в случае ее успешного завершения – команду cmd2; в случае неуспешного завершения первой команды вторая выполняться не будет. Наоборот, командная строка $ cmd1 || cmd подразумевает запуск cmd2 в случае неуспешного завершения cmd1.

Приоритет логических связок между собой – традиционный (то есть “и” приоритетнее, чем “или”. В то же время, приоритет операций “конвейер” и перенаправлений ввода-вывода выше, чем приоритет логических связок; так, команда $ cmd1 && cmd2 | cmd представляет собой связку между командой cmd1 и конвейером cmd2 | cmd как целым. Значение истинности конвейера определяется успешностью или неуспешностью выполнения последней из составляющих его команд.

Очередность применения операций, как обычно, можно изменить использованием круглых скобок, например:

$ (cmd1 && cmd2) | cmd В этом примере стандартный вывод команд cmd1 и cmd2 (если, конечно, она вообще будет выполняться), будет направлен на стандартный ввод cmd3.

Для более подробной информации о программировании на языке Bourne Shell следует обратиться к специальной литературе [1].

2.9.2 Протоколирование сеанса работы (команда script) При выполнении заданий практикума часто требуется представить протокол сеанса работы с программой, т.е. текст, включающий как информацию, вводимую пользователем, так и информацию, выдаваемую программой. Это легко сделать с помощью команды script.

Чтобы начать протоколирование, запустите команду script с одним параметом, задающим имя файла протокола. Для окончания протоколирования нажмите Ctrl-D ("конец файла"). Например:

$ script my_protocol.txt Script started, file is my_protocol.txt a1.c Documents my_protocol.txt tmp $ echo "abc" $ [Ctrl-D] Script done, file is my_protocol.txt Файл my_protocol.txt теперь содержит протокол сеанса работы:

Script started on Wed Nov 17 16:31: a1.c Documents my_protocol.txt tmp $ echo "abc" Script done on Wed Nov 17 16:32: 2.9.3 Команды head и tail При работе в среде ОС Unix, особенно в процессе разработки программ, могут оказаться очень полезными команды head и tail. Эти команды служат для просмотра содержимого в начале и в конце файла, соответственно (по умолчанию показывается 10 первых или последних строк). Так, команда $ head prog.c покажет 10 первых строк файла prog.c, что может быть полезно, например, чтобы узнать, какие заголовочные файлы в него включаются.

Командам head и tail можно указать и несколько файлов за один раз. Например, можно быстро просмотреть начало всех файлов с программами на языке C в текущей директории, выполнив команду $ head *.c *.h На экран (точнее, в стандартный вывод) будут выведены первые строк9 каждого файла из текущей директории с расширением.c или.h.

При этом перед выдачей информации из очередного файла выводится имя этого файла.

Количество строк, которые следует вывести, можно задать в командной строке. Например, команды $ head -25 prog.c $ tail -25 prog.c выдадут, соответственно, 25 первых или 25 последних строк файла prog.c.

Команда tail особенно удобна для отслеживания появления новой информации в конце файла, в который постоянно производится вывод (например, в файле протокола). Так, команда $ tail -f mylog.txt выдаст последние 10 строк файла mylog.txt, а затем будет выводить новые строки по мере того, как они появляются в файле. Завершить работу команды можно стандартным образом – нажав комбинацию клавиш Ctrl-C.

Важным свойством этих команд (как и многих других) является то, что они могут работать как фильтры10. Например, команда $ gcc -c sh.c 2>&1 | head - выведет на экран первые 20 строк диагностики компилятора gcc (в случае, если есть ошибки, конечно). Заметим, что здесь понадобилось объединить стандартный поток сообщений об ошибках (2) со потоком стандартного вывода (1) с помощью конструкции 2>&1 (см. § 2.5, табл. 5), поскольку конвейер перенаправляет только поток стандартного вывода.

9В случае, если в файле меньше 10 строк, будет выведен весь файл 10 Под фильтом понимается программа, читающая некий поток данных со своего стандартного ввода, выполняющая те или иные преобразования и выдающая результаты в поток стандартного вывода; именно из таких программ строятся конвейеры.

2.9.4 Команда cat Эта команда копирует содержимое файлов, указанных в командной строке, в поток стандартного вывода. Например, можно просмотреть содержимое файла без обращения к текстовому редактору, используя следующий конвейер:

$ cat sh.c | less Напомним, что команда less используется для постраничного просмотра текста.

В зависимости от опций команда cat может преобразовывать свой ввод. Например, команда $ cat -n sh.c выдаст содержимое файла sh.c, пронумеровав все его строки, начиная с единицы. Команда $ cat -v fl.txt распечатает файл fl.txt, показывая все управляющие символы (т.е.

символы с кодами из дапазона 0–31), кроме LF (перевод строки) и TAB (табуляция), и символы с кодом больше 127, в пригодном для восприятия виде. Управляющие символы показываются в виде ^СИМВОЛ, причем код символа получается из кода соответствующего управляющего символа прибавлением 64 (0x40). Например, символу с кодом соответствует ^@, с кодом 1 – ^A, с кодом 2 – ^B, с кодом 13 – ^M и т.д.

(символ @ имеет код 64, латинская заглавная буква A – 65 и т.д.) Символы с кодами больше 127 (из т.н. национальной половины кодового набора) показываются в виде M-СИМВОЛ, причем код символа получается из кода соответствующего национального символа вычитанием 129 (0x80). При этом, если получаемый СИМВОЛ относится к категории управляющих (и, как следствие, не имеет визуального образа), то он изображается в виде ^СИМВОЛ, как было объяснено выше.

Например, если файл binary_file содержит следующую информацию (побайтно в 16-ичном виде):

то команда $ cat -v binary_file выдаст следующую строку M-^@M-^?M-P так как код @ – 0x40, код ? – 0x3F, код заглавной латинской буквы P – 0x50.

Отметим, что и команда cat может работать в режиме фильтра, т.е. читать информацию из потока стандартного ввода. Это происходит, если в командной строке не задано ни одного имени файла; в этом случае команда просто копирует поток ввода в поток вывода. С учетом вышеописанных возможностей преобразования такой режим команды может оказаться весьма полезен. Также команда cat без параметров (то есть в режиме буквального копирования ввода на вывод) оказывается полезной в связке с другими программами; так, связка $./prog1 | (head -5 ; cat > /dev/null ) позволяет увидеть первые пять строк выдачи команды prog1, при этом дав программе доработать до конца (при отсутствии команды cat программа prog1 получила бы сигнал SIGPIPE после окончания выполнения head и была бы, скорее всего, снята с выполнения).

2.9.5 Команды wc и yes Эти команды удобно использовать, например, для отладки консольных приложений.

Команда wc подсчитывает количество строк, слов и байтов в файле для каждого файла, специфицированного в командной строке:

$ wc /etc/resolv.conf 8 15 131 /etc/resolv.conf Это означает, что файл /etc/resolv.conf содержит 8 строк, 15 слов и 131 байт. Как и другие программы, wc может использоваться в режиме фильтра для подсчета символов, строк и слов в потоке стандартного ввода (в этом случае имя файла не печатается):

$ cat /etc/resolv.conf | wc Перечислим некоторые пции команды wc:

• -c – подсчитывать количество байтов • -m – подсчитывать количество символов (заметим, что количество символов может быть меньше количества байтов для некотоых кодировок, например, UNICODE или UTF-8) • -w – подсчитывать количество слов • -l – подсчитывать количество строк • -L – вычислить максимальную длину строки Отметим, что под словом понимается последовательность символов, ограниченная пробельными символами (т.е. пробелами, табуляциями, переводами строк и т.п.) Команда yes, наверное, самая простая из всех рассмотренных: она просто построчно выводит свои аргументы в стадартный поток вывода, причем делает это в бесконечном цикле, т.е. пока не произойдет ошибка вывода, либо процесс не будет завершен (по команде kill, по сигналу завершения с клавиатуры – Ctrl-C, и т.п.). Например, команда $ yes Hello, world будет бесконечно (и достаточно быстро) выводить Hello, world!

Hello, world!

Hello, world!

Hello, world!

Изначально команда yes предназначалась для формирования потока ввода для программ, задающих много вопросов и ожидающих ответа “yes” или “no”.

2.9.6 Команда grep Команда grep предназначена для поиска в текстовых файлах строк, удовлетворяющих заданным условиям. Эта команда может претендовать на звание самой сложной из разобранных здесь, хотя частные (и частые) случаи её использования весьма просты. Например, команда $ grep include *.c отыскивает строки, содержащие слово include во файлах с расширением.c из текущей директории. Для каждой найденной строки в стандартный поток вывода выводится имя файла, двоеточие и сама найденная строка:

hel.c:#include hel.c:#include kr.c:#include kr.c:#include "mod1.h" В случае, если grep читает текст со стандартного ввода (т.е. используется как конвейерный фильтр), либо в командной строке задан всего один файл, на выводе имя файла и двоеточие не печатаются:

$ cat *.c | grep include #include #include #include #include "mod1.h" В общем случае команда grep отыскивает в вводимом тексте (со стандартного потока ввода, либо из файлов, специфицированных в командной строке) строки, удовлетворяющие некоторому шаблону. Шаблон задается так называемым регулярным выражением, позволяющим описывать весьма нетривиальные поисковые условия. За недостатком места мы не будем описывать здесь синтаксис и семантику регулярных выражений; заинтересованные читатели легко найдут полное описание в соответствующей документации. Простейшим случаем регулярного выражения является последовательность символов (как в примере выше).

Если эта последовательность содержит пробелы или символы, имеющие специальное значение для командного интерпретатора, их можно заключить в одинарные апострофы:

$ grep ’include $@ утилита make, прежде чем начать построение любых других целей, будет пытаться построить включаемый файл.

Отметим, что такое поведение нежелательно для псевдоцели clean, поскольку для очистки рабочей директории от мусора построение файлов зависимостей не нужно и только отнимает лишнее время. Чтобы избежать этого, следует снабдить директиву -include условной конструкцией, исключающей эту строку из рассмотрения, если единстенной целью, заданной в командной строке, является цель clean. Это делается с помощью директивы ifneq и встроенной переменной MAKECMDGOALS:

ifneq (clean, $(MAKECMDGOALS)) -include deps.mk endif Окончательно Makele будет выглядеть так:

SRCMODULES = mod1.c mod2.c OBJMODULES = $(SRCMODULES:.c=.o) CFLAGS = -g -Wall -ansi -pedantic %.o: %.c %.h prog: main.c $(OBJMODULES) ifneq (clean, $(MAKECMDGOALS)) -include deps.mk endif deps.mk: $(SRCMODULES) clean:

Список литературы [1] С. Баурн. Операционная система UNIX. М.:Мир, 1986.

[2] А. М. Робачевский. Операционная система UNIX. Изд-во BHV– Санкт-Петербург, Санкт-Петербург, 1997.

Содержание 2.5 Перенаправления ввода-вывода в интерпретаторе Bourne 4.2.1 Пошаговое выполнение программы.......... 4.3.3 Предопределенные переменные и псевдопеременные



Похожие работы:

«Учреждение образования Белорусский государственный технологический университет УТВЕРЖДЕНА Ректором БГТУ профессором И.М. Жарским 22 марта 2010 г. Регистрационный № УД-268/баз. ТЕПЛОТЕХНИЧЕСКИЕ УСТАНОВКИ И АГРЕГАТЫ ПРЕДПРИЯТИЙ КЕРАМИКИ И ОГНЕУПОРОВ Учебная программа для специальности 1-48 01 01 Химическая технология неорганических веществ, материалов и изделий специализаций 1-48 01 01 09 Технология тонкой функциональной и строительной керамики и 1-48 01 01 11 Химическая технология огнеупорных...»

«Муниципальное казённое учреждение Научно-методический центр г. Пензы 350-летию города Пензы посвящается. ЛЮБЛЮ ТЕБЯ, МОЙ КРАЙ РОДНОЙ Методические разработки классных часов Пенза 2012 ББК 74.267-268.5 Люблю тебя, мой край родной: Серия Пенза – мой город / Сост. Несчанская О.Д. – Пенза, 2012. – 165 с. П о д о б щ е й р е д а к ц и е й Т.Б. Кремнёвой, директора муниципального казённого учреждения Научно-методический центр г. Пензы, заслуженного учителя РФ. Р е ц е н з е н т ы : Н.Е. Мокиевская,...»

«ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ РФ КАЗАНСКИЙ ГОСУДАРСТВЕННЫЙ АРХИТЕКТУРНОСТРОИТЕЛЬНЫЙ УНИВЕРСИТЕТ Г.М. ЗАГИДУЛЛИНА, М.Ш. ХУСНУЛЛИН, Л.Р. МУСТАФИНА, Е.В. ГАЗИЗУЛЛИНА ПРАКТИКУМ ПО ОРГАНИЗАЦИИ ПРЕДПРИНИМАТЕЛЬСКОЙ ДЕЯТЕЛЬНОСТИ В СТРОИТЕЛЬСТВЕ Допущено УМО по образованию в области производственного менеджмента в качестве учебного пособия для студентов высших учебных заведений, обучающихся по специальности 080502 Экономика и управление на предприятии строительства КАЗАНЬ УДК ББК 65.31;65.9(2)...»

«1. Пояснительная записка 1. Нормативная база реализации ОПОП ГБОУ НПО ПУ № 57 КК Настоящий учебный план основной профессиональной образовательной программы среднего профессионального образования государственного бюджетного образовательного учреждения начального профессионального образования профессионального училища № 57 Краснодарского края разработан на основе Федерального государственного образовательного стандарта по профессии среднего профессионального образования Парикмахер, утвержденного...»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ ЧЕЛЯБИНСКОЙ ОБЛАСТИ АКАДЕМИЯ ПОВЫШЕНИЯ КВАЛИФИКАЦИИ И ПРОФЕССИОНАЛЬНОЙ ПЕРЕПОДГОТОВКИ РАБОТНИКОВ ОБРАЗОВАНИЯ ЧЕЛЯБИНСКИЙ ИНСТИТУТ ПЕРЕПОДГОТОВКИ И ПОВЫШЕНИЯ КВАЛИФИКАЦИИ РАБОТНИКОВ ОБРАЗОВАНИЯ МОДЕРНИЗАЦИЯ СИСТЕМЫ ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ НА ОСНОВЕ РЕГУЛИРУЕМОГО ЭВОЛЮЦИОНИРОВАНИЯ Материалы VI Всероссийской научно-практической конференции Часть 4 14 ноября 2007 г. Москва – Челябинск УДК ББК 74. М М 86...»

«УДК 339.5 (075.8) РОССИЙСКИЙ ИНДЕКС ПЕДАГОГИЧЕСКОГО ЦИТИРОВАНИЯ Н.А. Сберегаев ФГБОУ ВПО Калининградский государственный технический университет, Россия, 236022, г. Калининград, Советский проспект, 1 E-mail: [email protected] Изложены результаты исследования по разработке национальной информационноаналитической системы оценки результативности деятельности преподавателей российских вузов по подготовке учебной и учебно-методической литературы. Обосновывается возможность и необходимость в основу...»

«Русский Гуманитарный Интернет Университет БИБЛИОТЕКА УЧЕБНОЙ И НАУЧНОЙ ЛИТЕРАТУРЫ WWW.I-U.RU И. Ф. ДЕВЯТКО МЕТОДЫ СОЦИОЛОГИЧЕСКОГО ИССЛЕДОВАНИЯ Екатеринбург Издательство Уральского университета 1998 ББК С5в6 Д25 Издание осуществлено при участии Института гуманитарных практик Редактор М. Г. Тюлькина Ответственный за выпуск Л. Е. Петрова Девятко И. Ф. Д25 Методы социологического исследования.— Екатеринбург: Изд-во Урал, унта, 1998.— 208 с. ISBN 5—7525—0611— В данной книге рассматриваются ведущие...»

«МИНИСТЕРСТВО ЗДРАВООХРАНЕНИЯ И СОЦИАЛЬНОГО РАЗВИТИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ НАУЧНЫЙ ЦЕНТР ПСИХИЧЕСКОГО ЗДОРОВЬЯ РАМН ПРОГРАММА ДЕСТИГМАТИЗАЦИИ В ПСИХИАТРИИ методические рекомендации Москва — 2009 УДК 616.89 ББК 56.14 П 78 Методические рекомендации подготовлены в рамках реализации подпрограммы Психические расстройства Федеральной целевой программы Предупреждение и борьба с социально значимыми заболеваниями на 2007-2011 гг.. Государственный контракт от 02.06.2008 года № 06/366. Утверждены директором...»

«F Transfo F Transfo PD PD rm rm Y Y Y Y er er ABB ABB y y bu bu 2. 2. to to re re he he k k lic lic C C om om w w w w Управление образования w. w. A B B Y Y.c A B B Y Y.c Информационно-методический центр Культура чтения – культура познания Методические рекомендации для проведения открытого урока чтения ABB В дайджест вошли методические рекомендации, конспекты уроков, памятки, алгоритмы по выполнению заданий, которые помогут педагогам, библиотекарям и классным руководителям в организации и...»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ НАУЧНО-ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ КАЗАНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМ. А.Н.ТУПОЛЕВА Б.Е. БАЙГАЛИЕВ, А.В. ЩЕЛЧКОВ, А.Б. ЯКОВЛЕВ, П.Ю. ГОРТЫШОВ ТЕПЛООБМЕННЫЕ АППАРАТЫ Учебное пособие Допущено Учебно-методическим объединением высших учебных заведений Российской Федерации по образованию в области авиации, ракетостроения и космоса в качестве учебного пособия для студентов высших учебных заведений РФ, обучающихся по...»

«БЕЗОПАСНОСТЬ ЖИЗНЕДЕЯТЕЛЬНОСТИ ВОПРОСЫ И ЗАДАЧИ ДЛЯ КОНТРОЛЬНОЙ РАБОТЫ Издательство ТГТУ Министерство образования и науки Российской Федерации ГОУ ВПО Тамбовский государственный технический университет БЕЗОПАСНОСТЬ ЖИЗНЕДЕЯТЕЛЬНОСТИ ВОПРОСЫ И ЗАДАЧИ ДЛЯ КОНТРОЛЬНОЙ РАБОТЫ Методические указания для студентов всех специальностей и форм обучения Тамбов Издательство ТГТУ 2010 УДК 331.45(075) ББК Ц903я У Р еце нз е нт Заведующий кафедрой Химия, доктор химических наук, профессор А.Б. Килимник У76...»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БАШКОРТОСТАН ГБОУ СПО СТЕРЛИТАМАКСКИЙ СЕЛЬСКОХОЗЯЙСТВЕННЫЙ ТЕХНИКУМ МЕТОДИЧЕСКИЕ УКАЗАНИЯ по выполнению курсовой работы профессионального модуля МДК 01.01 Осуществление зоогигиенических, профилактических и ветеринарно-санитарных мероприятий специальности 111801 Ветеринария с. Наумовка 2013г. Аннотация Цель курсовой работы заключается в определении способности студента выпускника к самостоятельному анализу ветеринарного состояния животноводства, определение их...»

«Рябова Г.Н. ЭТИКЕТ Планы семинарских занятий для специалистов Семинарское занятие 1 Этикет как основа культуры человеческих отношений Вопросы для обсуждения: 1. Понятие этикет, его основные принципы и функции. 2. История этикета. 3. Этикеты придворный, дипломатический, профессиональный, социальный, деловой. 4. Основные принципы современного этикета. Литература: Баженова Е.В. Деловой этикет. Почему нужно вести себя так, а не иначе. М. – СПб., 2009 Байбурин А, Топорков А. У истоков этикета...»

«Негосударственное образовательное учреждение высшего профессионального образования Институт государственного администрирования Утверждаю Проректор по учебной работе Н.Д.Бережнова __ 2013г. Рабочая программа учебной дисциплины Коммуникационный менеджмент (Наименование дисциплины) 080200.62 Менеджмент (Направление подготовки) Бакалавриат (уровень подготовки) Экономика и управление Факультет Государственного администрирования Кафедра разработчик Трудоемкость дисциплины Очная Вид учебной...»

«Серия Учебная книга Г.С.Розенберг, Ф.Н.Рянский ТЕОРЕТИЧЕСКАЯ И ПРИКЛАДНАЯ ЭКОЛОГИЯ Учебное пособие Рекомендовано Учебно-методическим объединением по классическому университетскому образованию Российской Федерации в качестве учебного пособия для студентов высших учебных заведений по экологическим специальностям 2-е издание Нижневартовск Издательство Нижневартовского педагогического института 2005 ББК 28.080.1я73 Р64 Рецензенты: доктор биол. наук, профессор В.И.Попченко (Институт экологии...»

«www.training.pwc.ru Учебное пособие АССА ДипИФР Диплом АССА по Международной Финансовой Отчетности 2014 АССА Диплом по международной финансовой отчетности Материал для подготовки к сдаче экзамена АССА ДипИфр (рус) PricewaterhouseCoopers ул. Бутырский Вал. 10, 125047, Москва, Россия [email protected] +7 (495) 967-6074 +7 (812) 326-6644 Этот материал разработан исключительно для подготовки слушателей к сдаче квалификационного экзамена АССА ДипИФР. Информация, содержащаяся в этом пособии, не...»

«РОССИЙСКАЯ ОТКРЫТАЯ АКАДЕМИЯ ТРАНСПОРТА Одобрено кафедрой Экономическая теория МАКРОЭКОНОМИКА Задание на курсовую работу с методическими указаниями по выполнению для студентов-бакалавров 2 курса направления: Экономика профиля: Бухгалтерский учт, анализ и аудит Москва – 2012 МЕТОДИЧЕСКИЕ УКАЗАНИЯ ДЛЯ СТУДЕНТОВ Наибольший объем учебной нагрузки студента приходится на самостоятельную работу. Самостоятельная работа студентов предполагает освоение лекционного курса, подготовку к практическим...»

«АВТОНОМНАЯ НЕКОММЕРЧЕСКАЯ ОРГАНИЗАЦИЯ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ ЧЕЛЯБИНСКИЙ МНОГОПРОФИЛЬНЫЙ ИНСТИТУТ Учебное пособие одобрено на заседании кафедры теории и истории государства и права от 25.09.2013 г. Зав. кафедрой д.ю.н. Жаров С.Н. История отечественного государства и права Учебное пособие для студентов, обучающихся по направлению Юриспруденция Разработчик _ к.и.н. Стариков И.В. Рецензент _ к.и.н. Харланов В.Л. Челябинск ЦЕЛИ И ЗАДАЧИ ДИСЦИПЛИНЫ Дисциплина История отечественного...»

«Федеральное агентство по образованию Дальневосточный государственный технический университет (ДВПИ имени В.В. Куйбышева) АКУСТИКА СТУДИЙ ЗВУКОВОГО И ТЕЛЕВИЗИОННОГОВЕЩАНИЯ. СИСТЕМЫ ОЗВУЧИВАНИЯ Учебно-методическое пособие по дисциплине Электроакустика и звуковое вещание Владивосток 2006 Одобрено научно-методическим советом ДВГТУ УДК 621.396 А 44 Акустика студий звукового и телевизионного вещания. Системы озвучивания: учебно-методическое пособие/сост. Л.Г. Стаценко, Ю.В. Паскаль. – Владивосток:...»

«Приложение № 1 К Методическим рекомендациям по формированию образовательными организациями высшего образования, подведомственными Министерству образования и науки Российской Федерации, перечня научноисследовательских работ, выполняемых в рамках базовой части государственного задания Заявка-обоснование для включения в перечень проектов, выполняемых вузом в рамках базовой части государственного задания 1. Наименование темы проекта: Научные основы выявления и оценки региональных факторов...»






 
2014 www.av.disus.ru - «Бесплатная электронная библиотека - Авторефераты, Диссертации, Монографии, Программы»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.