Документ взят из кэша поисковой машины. Адрес оригинального документа : http://uneex.lorien.cs.msu.su/LecturesCMC/LinuxShell2008/CourseStructure
Дата изменения: Unknown
Дата индексирования: Sun Apr 10 04:19:37 2016
Кодировка: UTF-8
LecturesCMC/LinuxShell2008/CourseStructure - UNИX

Linux: программное окружение

Название ? калька с ?UNIX: Программное окружение? Кернигана и Пайка. Правда, объем несравненно меньший :).

При подготовке отчасти помогает учебник, а отчасти ? нет. Чтение традиционных конспектов Евгения Сыромятникова (в очередной раз выражаю ему горячую благодарность) помогает, только если вы и так знаете материал :) . Более всего помогает чтение документации и эксперименты с Linux непосредственно.

Решение задач хранения, обработки и передачи информации

Концепция

  1. Формализуется человеко-машинное взаимодействие (двусторонний обмен данными с обратной связью)

  2. Конструктор
    • Тезис: ?Все можно запрограммировать?
    • Антитезис ?все запрограммировано заранее, надо уметь находить готовое решение?
    • Синтез: утилиты + оболочка-интегратор

Требования

  1. Полнота инструментария
  2. Воспроизводимость условий и решения
  3. Формализованное пространство объектов взаимодействия
  4. Минимизация аппаратных зависимостей

Допущение и его следствия

  1. Наиболее формализуемый объект ? текст
    • ? способ управления должен быть текстовым
    • ? пространство объектов также должно быть текстовым
      • имен объектов

      • содержания объектов

Интерфейс командной строки

  1. Команда ? апелляция к имени инструмента с указанием имен объектов и операций над ними
  2. ?Принцип одного окна? :) : поток данных и поток управления имеет один и тот же интерфейс ? терминал

  3. Принцип ?все файл, все ? текст?: объекты системы ? файлы, по возможности текстовые. Пространство имен объектов ? файловая система ? текстовое дерево.
  4. Команды (инструменты) ? модификация файлов (объектов) и манипуляция ими
  5. Оболочка (shell) обеспечивает взаимодействие команд и построение решения

Терминал

  1. Управляющий символы: управлением системой напрямую
    • Передача сигналов
    • Базовое редактирование ввода
    • Управление вводом
    • Иное
  2. ESC-последовательности: управление интерфейсным устройством (терминалом)

Командная строка

  1. Формат: [<переменные окружения>] <команда> [<параметры>]

  2. Команды: встроенные и утилиты
  3. Параметры: содержательные и ключи
  4. Ключи: однобуквенные (-a) и полнословные (?all)

  5. Однобуквенные ключи: принцип аббревиативности и ?прилипания? (-a -b -c == -abc)

Файловая система Linux

  1. Типы объектов файловой системы: файлы, каталоги, сокеты, иные файлы-дырки
  2. ?Жесткие ссылки? (hardlinks), символьные ссылки
  3. FHS

Процессы и права доступа

  1. PID и PPID
  2. Порождение процесса: fork() + exec()

  3. UID и GID файла и процесса, наследование UID и GID
  4. Сигналы, утилита kill
  5. Виртуальная файловая систем /proc

  6. Чтение, запись и использование для файлов и каталогов
  7. User, Group и other; 9 атрибутов файла rwxrwxrwx

  8. Алгоритм вычисления прав доступа процесса к файлу
  9. setUID, setGID и t-BIT
  10. ACL

Shell

  1. Shell как оболочка
  2. Shell как ЯП
  3. Shell как интерфейс работы в командной строке
  4. История развития shell-ов, современное состояние
  5. Шаблоны shell, где они используются

Shell как оболочка

  1. Запуск процесса в фоне, fg, bg

Перенаправление ввода и вывода

  1. > < >> <<EOF

  2. Каналы вообще и | в частности

  3. &0, &1 и &2, зачем нужен &2

Окружение

  1. Переменные shell, закавычивание строк с разделителчми
  2. Переменные окружения; export; специальные переменные (PATH, PS1 и пр.); команда set

  3. Переменные окружения, открытые дескрипторы файлов, UID+GID; Наследование окружения

Подстановка

  1. Значения переменных: $V, ${V}, ${V:[-=?+]word}

  2. Специальные переменные: ?, !, $
  3. Значения переменных с преобразованием: ${#V}, ${V[#|##|%|%%<шаблон>}

  4. Результата работы команд: $(<команды>) (то же, что и `<команды>`)

  5. Простое арифметическое выражение: $((<выражение>))

  6. Подстановка и закавычивание

Shell как ЯП

Написание командных сценариев

Элементы классического ЯП

Shell как интерфейс работы с командной строкой

Текстовые редакторы

Просьба свериться с главой учебника, мне кажется, не все в лекции Наану прозрачно

  1. Для чего нужны и какие бывают
  2. ex ? vi ? vim
  3. vi: три режима: командной строки, командный и вставки; какой вид команд в каком режиме выполняется
  4. vi: основные команды каждого из трех режимов
  5. vi: принцип аббревиативности
  6. vi: команды перемещения и гнездовые команды
  7. vim: возможности vim

Регулярные выражения

  1. Принцип: сопоставление подстроки в строке и шаблона по правилу ?самый левый, самый длинный?

  2. Базовое и расширенное РВ
  3. РВ и поиск с заменой
  4. Утилиты, использующие РВ
  5. Как работет sed

  6. PCRE: пре- и пост-просмотр, нежадные повторители
  7. Недостатки РВ как явления: flavours, ?вечные? РВ,

Утилиты Linux

Несортированные :(

  1. Для выделения части текста
  2. Для преобразования текста
  3. Для работы с файлами (в т. ч. поиска)
  4. Для управления терминалом и работы с ним
  5. Поддержка актуальных настроек программного окружения на нескольких рабочих местах

Пакеты

  1. Монолитная, ячеистая и гибридная концепции формирования дистрибутива, их достоинства и недостатки
  2. Условия существования ?ячеистого? дистрибутива: FHS, хранилище, свободное лицензирование
  3. Пакеты в Linux
    • архив, регистрация в системе, действия при установке и удалении
    • зависимости пакетов; конфликты и альтернативы
  4. Функции установщика пакетов
  5. Функции диспетчера пакетов
  6. Linux и вирусы

RMS

  1. Кто такой, чем занима{л|ет}ся

LecturesCMC/LinuxShell2008/CourseStructure (последним исправлял пользователь eSyr 2009-02-14 11:51:23)