Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Последовательное выполнение



Команды выполняются одна за другой, не зависимо от результата их исполнения. В качестве разделителя выступает символ точки с запятой («;»).

В качестве примера можно рассмотреть составную команду du -sh; date, которая выводит на экран содержимое домашней директории, а затем текущие дату и время.

Условное выполнение (И)

Проверяется код завершения первой программы, если он равен 0, производится выполнение второй программы, и так далее. Таким образом, последняя команда выполнится только при успешном завершении всех предыдущих. В качестве разделителя выступают два амперсанда («&&»).

В качестве примера можно рассмотреть составную команду test -r /tmp/txt && cp /tmp/txt, которая проверяет возможность чтения файла /tmp/txt и в случае успеха, копирует этот файл в локальную директорию.

Условное выполнение (ИЛИ)

Проверяется код завершения первой программы, если он не равен 0, производится выполнение второй программы, и так далее. Последняя команда будет запущена только если ни одна из предыдущих не закончилась успешно. В качестве разделителя выступают две вертикальный черты («||»).

В качестве примера можно рассмотреть составную команду test -d /tmp/dir || mkdir /tmp/dir, которая проверяет существование директории /tmp/dir и если её нет, создаёт её.

Конвейер

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

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

В качестве разделителя используется символ вертикальный черты («|»).

Рассмотрим пример команды cat file.txt | uniq | sort, которая читает содержимое файла file.txt, удаляет из него повторяющиеся строки и сортирует оставшиеся строки по алфавиту. Результат выводится на экран.

 

Современные командные оболочки позволяют строить более гибкие условные выражения (с использованием скобок и знака отрицания) из выполняющихся команд.

Служебные символы

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

Рассмотрим основные группы служебных символов командной оболочки:

Символы-разделители

Используются для отделения частей команды или нескольких команд. К ним относятся: пробел, табуляция. По умолчанию команды разделяются символом перевода строки. При использовании символа пробела в именах файлов необходимо заключать параметр в кавычки или предварять пробел символом обратной косой («\»).

Символы пути

Используются для разделения элементов пути. Сюда можно отнести символ корня («/») и символ домашней директории («~») – в командной строке он автоматически заменяется на полный путь к домашней директории. При этих символов в именах файлов необходимо предварять их символом обратной косой («\»).

Символы команд

Применяются в аргументах команд, для отделения нескольких команд, для запуска процессов на заднем фоне и т.п. К таким символам можно отнести: «*», «&», «<», «>», «;», «(», «)», «|», «"». При этих символов в именах файлов необходимо предварять их символом обратной косой («\»).

Символ параметров команды

Символ «-» используются для задания параметров команд. Проблемы могут возникнуть, если имя файла начинается с этого символа – в этом случае командная оболочка может принять такой аргумент за набор параметров. Стандартным выходом из этой ситуации является явное указание окончания списка параметров с «--», например:

user@desktop ~ $ ls -l -- -test-file-rw-r--r-- 1 user users 90 Сен 19 00:20 -test-file

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.