План курса "Основы UNIX" (60 часов) По: "Запускаем Linux" (ЗЛ); "Программирование в Shell" (ПШ); "Специальный справочник" (СС); "Инструментальные средства UNIX" (ИС); Linux: ответы и советы (ОС) ===БАЗОВЫЙ КУРС=== ВХОД И ВЫХОД Что такое операционная система и зачем она нужна. История UNIX. Разнообразие операционных систем. Linux, версии ядра. Дистрибутивы Linux. Многопользовательская и многозадачная система. Системный администратор. Вход в систему и выход из нее. Пароль и его смена. Команда whoami. Виртуальные консоли и графический консоль, основные клавиши перемещения. Установление и удаление пользователя. Приглашение командной строки и его расшифровка. Интерпретатор командной строки. Редактирование командной строки; горячие клавиши терминала C-?, C-w, C-t. История команд (стрелки) и дополнение (Tab). Начальный каталог пользователя и команда ls. ПАПКИ И ФАЙЛЫ Пользовательский ввод и метасимволы. Каналы и перенаправление. Команды dmesg, echo и tr. Простое программирование в shell >>><<< tr '\012' '\015' file2 >>><<< в скрипт (сценарий) unix2mac, команда "." Редактирование в nano. Виды shell. Внешние и внутренние команды. Команды which и whereis. Имена файлов, длина и разрешенные символы. ЧУВСТВИТЕЛЬНОСТЬ К РЕГИСТРУ. Кодировки русского языка и почему нельзя русские буквы. Создание файла командой touch. Специфические для UNIX расширения имен, утилита file. Понятие скрытых файлов. Команды и помощь. Порядок КОМАНДА -ОПЦИИ АРГУМЕНТ(Ы). Опции ls (ls -a; ls -l; ls -Al; ls -F). Помощь в UNIX: опция --help (или -h, реже -?). Вызвать ls --help и добиться сортировки по размеру. Команда man и команда info. Просмотреть man к использовавшимся командам и отыскать основные разделы man: NAME, SYNOPSIS, DESCRIPTION, FILES, SEE ALSO etc. Разделы страниц руководства (важны 1 и 8). Команда apropos на примере apropos time (задача: узнать, как изменить системное время). Перемещение по каталогам: pwd; cd; cd ..; cd /; cd ~. Файлы и каталоги, абсолютные и относительные имена. Распределенная файловая система ext2(3)fs. Папки как файлы. Индексные дескрипторы и команда ls -i. Структура файловой системы, стандарт UFS. Организация файловой системы UNIX. Тур по файловой системе с объяснением основных команд (/bin, команды shutdown и др.), ядра (/boot), устройств (/dev), настроек (/etc), основ монтирования (/mnt, команды mount и umount, /etc/fstab), библиотек и модулей ядра (/lib), временных файлов, служебных команд, строения каталогов /home, /usr (в том числе HOWTO), /usr/local, /var. Домашние каталоги. Файлы конфигурации bash и csh, их структура, глобальный файл /etc/ptofile. Организация домашнего каталога. Создание папки командой mkdir newfolder; mkdir -p a/b/c. Пересылка и копирование: mv и cp. Нельзя делать "mv *.txt *.text". Как надо: написание скрипта "mmv" с циклом for и использованием команды basename: >>><<< for $file in *.$1 do mv $file `basename $file $1`$2 done >>><<< Перенос дерева каталогов командой cp -R. Команда rmdir. Варианты команды rm (rm -f; rm -r; rm -rf; rm -i). Ошибка rm -rf o. * Восстановление файлов. Защита от перезаписи путем установки опции bash: set -o noclobber. Права доступа к файлу: символьные и числовые. Атрибуты файлов и их изменение. Способы задания прав типа "chmod ugo-w". Создание исполнимого файла; система #!/bin/bash. Поиск исполнимых программ; переменная PATH и ее правильная установка. Обновление хеша исполнимых программ hash -r. Цифровые задания прав (типа "chmod 644"), типичные сочетания. "Исполнимость" папок. Создание папок с правами mkdir -m. Смена собственника файлов, команды chown, groups, chgrp, опция -R, конструкция chmod a+X. Маска прав файлов. Биты sticky, sgid и suid для файлов и папок. Модификация файла без права на запись (при доступе к каталогу). Команда stat. Архивы и архивация: shar, tar и ее аргументы, перенос дерева каталогов с правами [ЗЛ], gzip, zcat, cpio, bzip2, zip, 7zip. Жесткие и символичесие ссылки, команда ln. Другие типы, команды mknod, mkfifo. Пример создания именованного канала (less -f). Поиск нужных файлов при помощи метасимволов. Значение "?", "*", "[]" и "!/^"; создание нескольких каталогов командой mkdir new{1,2,3}. Применение ls с шаблонами (ls new*), звездочка в путевых именах, ls */*; ls -d */. Как удалить все три каталога new. Как выделить файлы с точкой .[!.]* !Тренировка с шаблонами: создать 8 файлов и 4 из них стереть. Команда find. Поиск файлов командой find. Порядок организации аргументов: find <откуда> <что> <что_делать>. Временные характеристики файлов: mtime, atime, ctime и ls -t; ls -u; ls -c. Команды time и сal. Опции -name, -or, -and, -atime, -ctime, -mtime, -newer, -print, -exec '{}' ';', -ok. Команда xargs и ее совместное применение с find: find | xargs tar cv 1.tar. Архивирование недавно измененных файлов (zip -@). Команда locate. Как создавать файлы с определенным шаблоном времени (touch 03201600 file). Задание: (1) создать 40 файлов с именами a-k, 1-10, a1-a10, 1k-10k; (2) записать в файлы их названия; (3) создать шаблоны для выделения файлов с буквами a, b, c, d в именах; (4) создать скрипт, который распределит эти файлы по папкам с соответствующими именами; (5) из оставшихся файлов выбрать файлы с нечетными цифрами в названиях; (6) поменять им год создания на 2001--2009 и записать туда календари на эти годы; (7) переместить их в отдельную папку; (8) из оставшихся стереть все, кроме 10 самых новых и прибавить им к имени полную дату создания; (9) потом найти все файлы, в названии которых НЕТ буквы "a" и архивировать их в tar.gz; (10) всю процедуру записать в скрипты, чтобы можно было вызывать автоматически из любой папки. СРЕДА И ПРОЦЕССЫ Среда и ее переменные. Просмотр переменных среды командой env. Переменные LOGNAME, HOME, PATH, LANG, CDPATH, TZ, TERM, PAGER, EDITOR, IGNOREEOF, FIGNORE, PS1, PS2. Определение, экспортирование и удаление переменной оболочки на примере скриптов [ПШ]. Команды env и set. Установка первичного и вторичного приглашений. Выход из системы и отключение Ctrl+D. Процессы, ядро, демоны, зомби. Фоновые процессы: &, Ctrl+Z, команды bg, fg, nice, renice, hohup. Управление заданиями. Сигналы SIGHUP (1), SIGINT (2), SIGQUIT (3), SIGKILL (9), SIGSEGV (11), SIGTERM (15), команды kill, killall. Команда ps aux | grep ... Команды top и pstree. Файловая система /proc. [ЗЛ] Терминалы и базы данных terminfo и termcap. Переменная TERM. Команда stty -a и установка отдельных характеристик терминала; команда setterm. Команды stty sane, tput reset, reset. Команда clear, сокращения S-PgUp, S-PgDn, клавиша ScrollLock. ТЕКСТОВЫЕ УТИЛИТЫ Grep и регулярные выражения (обычный и расширенный набор поиска). Позиция ^$\<\>\(\). Набор .z[][^]. Модификатор *{n,m}. Создание файла-телефонной книжки cat > phonebook. Grep с ^, $, ^., [АаБб], ^.[ВвГг], [0-9], а*б, а.*б Экранирование символов при помощи бекслеша. Семейство grep: grep, egrep, fgrep. Задание: составление различных regexp для обработки файла access.log Утилита awk [ПШ]. Вызов, работа с полями и записями, сохранение выходных данных. Потоковый редактор sed. Скрипты замены. Совместное использование find и grep/sed для поиска и замены в поддиректориях: find . -name '*.[ch]' | xargs grep -l thing. Использование tr. Описание команд cat, tac, head, tail, sort, uniq, join, paste, split, csplit, wc, fmt. Задание: (1) найти в заданном файле все строки с заданным паттерном, записать их в файл, затем добавить туда строки с другим словом, отсортировать и удалить одинаковые строки, заменить паттерн на другой; (2) написать скрипт по преобразованию имени файла в нижний регистр ПРОГРАММИРОВАНИЕ В ОБОЛОЧКЕ [ПШ] Что такое команда? Интерпретация командной строки: последовательность действий. Последовательность разбора PATH. Алиасы: alias и unalias. Кавычки (3 типа) и обратная косая черта. Команды echo и read. Переадресация ввода-вывода: конструкции типа 3>&2 1>&2 2>&1. Команда tee. Параметр set -o noclobber и символ переадресации ">|". >>><<< exec 3>&1 # направляем файл с дескриптором 3 туда же, куда направлен 1 exec 1> aaa # подменяем стандартный вывод файлом "aaa" exec 1>&3 # направляем стандартный ввод туда же, куда направлен 3 (то есть на /dev/tty) # сценарий, выводящий все свои ошибки в общий поток ошибок errors=/tmp/$$.errors команда1 2> $errors команда2 2>> $errors команда3 2>> $errors if [ -s $errors ]; then /bin/cat $errors 1>&2 fi команда 3>&2 2>&1 1>&3 | куда-то # stdout теперь идет на /dev/tty, а stdin в канал команда 2>&1 | куда-то # оба идут в канал команда > файл 2>&1 # сначала указали перенаправление, а потом дублировали команда 2>&1 > файл # так не получится!!! $ls 1 2 3 &> ddd # а вот так можно (экономия bash) $cat ddd ls: 1: No such file or directory (ENOENT) ls: 3: No such file or directory (ENOENT) 2 $sed "s/or/and/g" ddd | tee ddd > /dev/null $cat ddd ls: 1: No such file and directandy (ENOENT) ls: 3: No such file and directandy (ENOENT) 2 >>><<< Специальные переменные shell $0...$9, $#, $* [ПШ181]. Создание временных файлов при помощи переменной $$ и при помощи `date +%H%S`. Как ядро определяет тип скрипта: конструкция #!. Скрипт, удаляющий сам себя: #!/bin/rm -f Операторы &&, || и коды завершения. Переменная $? Проверки файлов, текста и чисел. Конструкция if ПРОВЕРКА; then else fi. Использование кодов завершения посторонних программ вместо проверки. Команда test. Оператор ":". Управляющие конструкции while, for, case. While: пример с чтением файла построчно. Наращивание счетчика командами let i++ или i=`expr $i + 1`. For: использование (аргументов, результата ls) как списка. Case: использование в стартовых скриптах. Работа с аргументами. Отладка сценариев и команда set. Shere-конструкции. Способы перехвата сигналов: команда trap, пример с блокировкой терминала. Команда eval. История ввода команд. Переменная HISTSIZE, команда history. Оператор ! и способы работы с историей. [ИС] Задание: организовать систему мусорной корзины, в которую будет перемещать rm вместо стирания, а также систему очистки этой корзины. VI & EMACS Редактор vi/vim. Основные способы и приемы редактирования. Запуск и выход (:q!, ZZ) Режимы команд, вставки и командной строки. Переходы между режимами (вставки, командным vi, командным ex, поиска, оболочки, визуальным). Движение по файлу. Удаление и пересылка текста. Числовые префиксы. Сохранение текста. Поиск и замена текста. Редактирование следующего файла. Фильтрование в vim (sort, fmt). XWindows и gvim. Настройка vim (.vimrc). Таблица режимов: Ins Интуитивно Ctrl+V Перемещения стрелками Esc Перемещения: Действия: w u e d } y { :ex Команды: Действия q d q! y w P / dd %s/aaa/bbb/g u Редактор emacs. Основные способы и приемы редактирования. Отсутствие режимов. Двойные сочетания клавиш. Вход и выход. Сохранение файла. Движение по файлу. Удаление текста. Пересылка и копирование текста. Поиск и замена текста. Загрузка нового файла. Окна в emacs. Помощь в редакторе. ПРИКЛАДНЫЕ ПРОГРАММЫ Основные правила синтаксиса Troff, создание man-страниц. Введение в TeX и LaTeX, основные правила и приемы работы. DVI, PostScript, PDF. pstools, ppm, ImageMagick, Scribus. Программы работы с почтой mail, pine, mutt, Thunderbird. Основные оконные менеджеры и десктоп-системы: twm, icewm, bb, xfce, Gnome, KDE. X-терминалы konsole, xterm и rxvt. Графические редакторы XFig, tgif, GIMP, Sodipodi, Dia, Inkscape. Просмотрщики графики XnView, ImageMagick, pbmtools. Редактор шрифтов FontForge. Антивирусы ClamAv, Avast! и Bit Defender. HTML-редакторы Bluefish, Quanta и Nvu. OpenOffice. Текстовые процессоры AbiWord, LyX. Электронные таблицы Gnumeric. Научная графика в Gnuplot, grace и R. Текстовые браузеры lynx и links. Файлер Midnight Commander. Язык PostScript и Ghostscript, просмотрщики PostScript и PDF gv и xpdf, pstools. Tcl/Tk и основанные на них графические приложения. ===АДМИНИСТРИРОВАНИЕ=== ФАЙЛОВАЯ СИСТЕМА Установка файловых систем: создание разделов, имена дисков, система слайсов BSD. Команды fdisk, cfdisk, mkswap, swapon, mke2fs, mke3fs, parted. Основные отличия наиболее распространенных файловых систем (ext2fs, ext3fs, reiserfs). Управление файловыми системами: mount, чтение русских имен из Windows, чтение NTFS. Проверка файловых систем: fsck. Команды free, df и du. Файлы устройств и применение mknod. >>>Установка Debian GNU/Linux.<<< СТАРТ Запуск системы. Начальная загрузка, настройка LILO и GRUB; SYSLINUX. Параметры загрузки ядра. Настройка модулей ядра, команды lsmod, modinfo, modprobe, insmod и rmmod, файл /etc/modules. Инициализационные скрипты. Файлы init, inittab и rc. Уровни исполнения. Однопользовательский режим. Выгрузка по A-C-Del. Дисковые квоты. [ОС] ОБЩЕЕ УПРАВЛЕНИЕ Настройка через base-config. Настройка локали dpkg-reconfigure locales; dpkg-reconfigure console-cyrillic. Восстановление системы, создание загрузочной дискеты. Дискетный Linux tomsrtbt, восстановление пароля root. Управление учетными записями: файлы /etc/passwd, group, shadow. Управление группами, команды newgrp и who. Изменение регистрационной shell: chsh либо редактированием /etc/passwd. Файл /etc/motd. Папка /etc/skel. Запуск задач по расписанию. Команды at, cron, anacron. Файлы crontab. Системные журналы и их конфигурация, syslogd и /etc/syslogd.conf. Управление печатью. Система lpd и /etc/printcap: lpr, lpq, lprm. Печать через Ghostscript. Система печати CUPS. Настройка звука. Системы драйверов OSS и ALSA. Команды lspci, pnpdump. Основы X. Клиент/серверная система, менеджер окон и менеджер рабочего стола. Запуск X: команды X, xinit и startx, файлы настроек запуска. Настройка XWindows через /etc/X11, шрифтовая подсистема, fontcache, xdebconfigurator УСТАНОВКА ПРОГРАММ Система разделяемых библиотек, версии библиотек. Команды ldd и ldconfig; файл /etc/ld.so.conf. Система RPM, программа alien. Система DPKG/APT, apt-get install, apt-cache, aptitude, debfoster. Компиляция программ на языке C. Работа с утилитой make. Сценарии makefile. Система automake/configure. Команды сравнения diff, diff3, cmp, dircmp. Работа с результатами команды diff при помощи ed и patch. Команда strip. Работа с Perl, Python, Java, Pascal и FORTRAN. Использование RCS: команды ci, co, co -l, rlog. Работа с CVS. Сборка ядра. Нумерация, получение исходников. "Классический" и Debian-способы сборки ядра. Основные флаги при конфигурации. Initrd. НАСТРОЙКА СЕТИ Сетевые протоколы. Настройка TCP/IP и DNS для Ethernet. Запуск сети, inetd и xinetd, routed. Файлы настройки /etc/hosts, networks, hosts.conf, resolv.conf. Команды ifconfig и netstat. Маршрутизация и route. Удаленный вход в систему (telnet, ssh). Использование и настройка FTP. Настройка модема. Протокол PPP, команда chat, настройка DNS. Настройка ISDN и ADSL. Настройка файлового сервера NFS и NIS. Настройка proxy-сервера Squid. Настройка Apache, файл httpd.conf. Настройка sendmail и Postfix, программа fetchmail. Переменные MAIL и MAILCHECK. Средства защиты: TCP wrappers (hosts.allow и hosts.deny), IP filtering [ЗЛ]. Взаимодействие с Windows. Mtools. Настройка Samba.