# Композиция команд

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

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

Для отделения команд используется символ "**;**"

```
touch aaa; sleep 5; touch bbb; sleep 5; touch ccc
```

## Последовательное выполнение при успехе предыдущей операции

Последовательное выполнение команд при условии успешного завершения предыдущей.

Для отделения команд используется конструкция "**&&**"

```
python prog_1.py && python prog_2.py && python prog_3.py
```

## Вызов команды при возникновении ошибки

Выполнение команды в случае возникновения ошибки.

Если во время выполнения программ возникнет ошибка, то создаётся файл "myError.txt"

Для задания команды, выполняющейся в случае ошибки, используется конструкция "**||**"

```
python prog_1.py && python prog_2.py && python prog_3.py || touch myError.txt
```

## Передача выходных данных команды на вход другой

Создадим файл "**progA.py**" со следующим содержимым:

```python
print 64
print 123
```

Создадим файл "**progB.py**" со следующим содержимым:

```python
x = int(input())
y = int(input())
z = x + y
print z
```

Сделаем так, чтобы выходные данные одной программы шли на вход другой программы.

```
python progA.py | python progB.py
```

## Передача выходных данных в файл

Сохранить выходные данные команды в файл

```
python progA.py > my.txt
```

Сохранить названия файлов каталога в текстовый файл

```
ls -1 > kkk.txt
```

## Запись выходных данных в конец файла

Добавить текущую дату и время в конец файла

```
date >> bbb.txt
```

Добавить список названий файлов каталога к концу текстового файла

```
ls -m >> qqq.txt
```

## Использование содержимого файла в качестве входных данных

Создадим текстовый файл "**myVars.txt**" со следующим содержимым:

```
17
14
```

Сделаем так, чтобы содержимое файла шло на вход скрипта на python

```
python progB.py < myVars.txt
```

Сделать так, чтобы содержимое файла "**myVars.txt**" шло на вход скрипта на python.

Результат работы скрипта должен сохраняться в файл "**myResult.txt**".

```
python progB.py < myVars.txt > myResult.txt
```

## Одновременный вывод в файл и консоль

Вывод результата работы команды "**ls**" в консоль и в текстовый файл

```
ls | tee my.txt
```
