- •Unix-подобные операционные системы
- •Часть 1. Введение в операционные системы unix 10
- •Часть 2. Использование unix 44
- •Unix-подобныеОс
- •Термин «unix-подобный» и торговая марка unix
- •Категории
- •История развития ос unix
- •Часть 1. Введение в операционные системы unix
- •Основные концепции операционных систем Обзор компьютерных систем
- •Назначение операционной системы
- •Операционная система как виртуальная машина
- •Операционная система как менеджер ресурсов
- •Архитектура операционной системы
- •Монолитная операционная система
- •Микроядерная операционная система
- •Классификация операционных систем по назначению
- •Архитектура unix. Файлы и устройства Особенности архитектуры unix
- •Два объекта unix: файлы и процессы
- •Беглый взгляд на архитектуру unix
- •Ядро unix
- •Файловая система unix
- •Особенности файловой системы
- •Виртуальная файловая система
- •Дерево каталогов
- •Устройства и драйверы
- •Архитектура unix. Процессы
- •Управление памятью
- •Управление процессами
- •Контекст процесса
- •Планирование процессов
- •Создание новых процессов
- •Процессы и потоки
- •Межпроцессное взаимодействие
- •Разделяемая память
- •Переменные окружения
- •Сигналы
- •Часть 2. Использование unix Терминал и командная строка
- •Терминал
- •Управляющие символы
- •Одновременный доступ к системе
- •Командная строка
- •Командная оболочка
- •Приглашение
- •Команды
- •Параметры
- •Шаблоны
- •Перенаправление ввода и вывода
- •Программное окружение
- •Стандартные переменные окружения
- •Служебные символы
- •Процесс выполнения команды
- •Возвращаемое значение
- •Эффективное использование командной строки
- •Редактирование командной строки
- •История команд
- •Автодополнение
- •Средства объединения команд
- •Справочная подсистема
- •Страницы руководства
- •Поиск по руководствам
- •Программа info
- •Документация, поставляемая с программой
- •Интегрированные системы документации
- •Введение в безопасность unix
- •Основы информационной безопасности
- •Политика безопасности
- •Управление доступом
- •Аутентификация и авторизация
- •Концепции безопасности unix
- •Пользователи и группы
- •Права доступа
- •Разделяемые каталоги
- •Подмена идентификатора процесса
- •Ограничения базовой модели доступа и её расширения
- •Суперпользователь
- •Аутентификация пользователей
- •Управление пользователями и правами доступа База данных пользователей системы
- •Изменение базы данных пользователей
- •Изменение прав доступа
- •Ограничения сеанса пользователя
- •Литература
Эффективное использование командной строки
Рисунок 2.13. возможности командной оболочки

При первом знакомстве командная строка может производить впечатление сложного и неудобного интерфейса. При более внимательном изучении и использовании выясняется, что в этом принципе построения интерфейса есть внутренние ресурсы, позволяющие строить эффективную и удобную рабочую среду. В этом разделе мы кратко обсудим два принципиальных способа достижения эффективности.
Во-первых, поскольку командная строка — основной интерфейс взаимодействия с системой в UNIX-подобных операционных системах, пользователь значительную часть времени работает с командной строкой. Поэтому для пользователя очень важны средства экономии усилий, позволяющие свести к минимуму число интерфейсных жестов (в случае командной строки в качестве жестов выступают главным образом нажатия на клавиши). Современные командные оболочки UNIX-систем включают целый ряд средств для экономии нажатий, основные мы перечислим ниже.
Второй путь к эффективному использованию командной строки заложен в самой природе командного языка как типа интерфейса. Так, язык любой командной оболочки UNIX предоставляет гибкие средства объединения команд, которые позволяют запрограммировать логику взаимодействия нескольких программ в виде одной, пусть сложной, команды в командной строке. Дополнительной особенностью UNIX являются гибкие возможности объединения ввода/вывода разных команд. Так, одной командой могут быть описаны весьма сложные многоступенчатые действия, вовлекающие произвольное количество объектов, например, сотни файлов. Таким образом, одна команда способна заменить сотни монотонных повторений однотипных действий.
По существу, все средства интеграции команд — операторы циклов, условные операторы, присваивания переменных — в совокупности составляют полноценный язык программирования, интерпретатором которого и является командная оболочка. А все утилиты, имеющиеся в системе, можно считать его операторами. Так, последовательность команд shell, записанная в файл при соблюдении определённых правил представляет собой готовую к выполнению самостоятельную программу — командный сценарий (в обиходе именуемый калькой с английского скрипт).
Программирование на shell выходит за рамки данного курса, однако ниже будут рассмотрены основные средства связывания команд, необходимые любому пользователю.
Редактирование командной строки
Вводимую команду можно редактировать с помощью клавиш Backspace и Delete, перемещаться стрелками по всей строке. При редактировании полезны функции Ctrl-W — удаление слова перед курсором и Ctrl-U — удаление всей строки.
История команд
Двумя другими клавишами со стрелками — вверх и вниз — задействуется весьма мощный механизм bash — работа с историей команд. Все команды, набранные пользователем, командная оболочка запоминает и позволяет обращаться к ним впоследствии. По стрелке вверх, список поданных команд «прокручивается» от последней к первой, а по стрелке вниз — обратно. Соответствующая команда отображается в командной строке, как только что набранная, её можно отредактировать и подать оболочке (подгонять курсор к концу строки при этом необязательно).
Чтобы история команд могла сохраняться между сеансами работы пользователя, bash записывает ее в файл .bash_history, находящийся в домашнем каталоге пользователя. Делается это в момент завершения оболочки: накопленная за время работы история дописывается в конец этого файла. При следующем запуске командной оболочки считывает .bash_history целиком. История хранится не вечно, количество запоминаемых команд в .bash_history ограничено (обычно сохраняется 500 команд, но это можно и перенастроить).
