Средства объединения команд
Рисунок 2.14. средства объединения команд
Существует возможность объединять несколько команд в одной командной строке. Это можно делать несколькими способами:
Последовательное выполнение
Команды выполняются одна за другой, независимо от результата их исполнения. В качестве разделителя выступает символ точки с запятой («;»).
В качестве примера можно рассмотреть составную команду mkdir /tmp/test; cd /tmp/test, которая сначала создает каталог /tmp/test, а затем делает его текущим.
Условное выполнение (И)
Проверяется код завершения первой программы, если он равен 0, производится выполнение второй программы, и так далее. Таким образом, последняя команда выполнится только при успешном завершении всех предыдущих. В качестве разделителя выступают два амперсанда («&&»).
Например, команда mkdir /tmp/test && cd /tmp/test создает каталог /tmp/test, но переход в этот каталог будет выполнен только в том случае, если при выполнении первой части не возникло ошибки (например, каталог может уже существовать, и создать его невозможно).
Условное выполнение (ИЛИ)
Проверяется код завершения первой программы, если он не равен 0, производится выполнение второй программы, и так далее. Последняя команда будет запущена, только если ни одна из предыдущих не закончилась успешно. В качестве разделителя выступают две вертикальные черты («||»).
В качестве примера можно рассмотреть составную команду test -d /tmp/test || mkdir /tmp/test, которая проверяет существование директории /tmp/test и, если её нет, создаёт её.
Конвейер
При выполнении списка команд, объединённых в конвейер, стандартный вывод команды направляется на стандартный ввод следующей за ней команды в конвейере напрямую. Передаваемые данные рассматриваются как текстовые, передача производится построчно. Таким образом возникает поток данных, проходящих через несколько команд последовательно, как по конвейеру. Этот механизм является одной из самых фундаментальных особенностей UNIX и широко используется при работе в командной стоке.
Все программы могут быть запущены одновременно, так чтобы обеспечить интерактивность вывода при прохождении данных через цепочку программ. Если одна из программ в цепочке конвейера завершится (например, в случае ошибки), остальным будет отправлен специальный сигнал (SIGPIPE).
В качестве разделителя команд в конвейере используется символ вертикальный черты («|»).
Рассмотрим пример команды cat file.txt | uniq | sort, которая читает содержимое файла file.txt, удаляет из него повторяющиеся строки и сортирует оставшиеся строки по алфавиту. Результат выводится на экран.
Современные командные оболочки позволяют строить более гибкие условные выражения (с использованием скобок и знака отрицания) из выполняющихся команд.
- 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
- Пользователи и группы
- Права доступа
- Разделяемые каталоги
- Подмена идентификатора процесса
- Ограничения базовой модели доступа и её расширения
- Суперпользователь
- Аутентификация пользователей
- Управление пользователями и правами доступа База данных пользователей системы
- Изменение базы данных пользователей
- Изменение прав доступа
- Ограничения сеанса пользователя
- Литература