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

### Вывод текста

`echo` - выводит строк текста

### Очистка экрана

`clear` - очищает экра (Ctrl + L)

### История

`history` - выводит содержимое истории команд

История команд хранится в фале `.bash/history`

### Перенаправление стандартного вывода

`команда > файл` - вывод результата команды в файл

**Пример:**

```bash
[andrey@fedora ~]$ ll /usr/ > out.txt
[andrey@fedora ~]$ cat out.txt 
итого 4
dr-xr-xr-x. 1 root root 33038 мая 20 14:54 bin
drwxr-xr-x. 1 root root     0 янв 20 06:04 games
drwxr-xr-x. 1 root root  2114 мая 15 16:21 include
dr-xr-xr-x. 1 root root   796 мая 15 20:06 lib
dr-xr-xr-x. 1 root root 98588 мая 20 14:24 lib64
drwxr-xr-x. 1 root root  9548 мая 20 14:23 libexec
drwxr-xr-x. 1 root root    90 янв 20 06:04 local
dr-xr-xr-x. 1 root root 12858 мая 20 14:54 sbin
drwxr-xr-x. 1 root root  4806 мая 17 20:44 share
drwxr-xr-x. 1 root root    24 янв 20 06:04 src
lrwxrwxrwx. 1 root root    10 янв 20 06:04 tmp -> ../var/tmp
```

### Перенаправление стандартного вывода ошибок

`команда 2> файл` - вывод ошибок в файл

**Пример:**

```bash
[andrey@fedora ~]$ ll /usr2/ 2> out.txt
[andrey@fedora ~]$ cat out.txt 
ls: невозможно получить доступ к '/usr2/': Нет такого файла или каталога
```

### Перенаправление стандартного вывода и стандартного вывода ошибок в один файл

`команда &> файл` - перенаправляет стандартный вывод и стандартный вывод ошибок с в файл

`команда &>> файл` - перенаправляет стандартный вывод и стандартный вывод ошибок с добавлением в конец одного и того же файла

**Пример:**

```bash
[andrey@fedora ~]$ ll test/ &>> out.txt 
[andrey@fedora ~]$ ll test1/ &>> out.txt 
[andrey@fedora ~]$ cat out.txt 
итого 0
drwxrwxr-x. 1 andrey andrey 0 мая 20 16:00 dir1
drwxrwxr-x. 1 andrey andrey 0 мая 20 16:00 dir2
d---------. 1 andrey andrey 0 мая 20 16:06 dir3
ls: невозможно получить доступ к 'test1/': Нет такого файла или каталога
```

### **Удаление нежелательного вывода**

`команда 2> /dev/null` - удалит нежелательный вывод переслав его на специальное системное устройство ***битоприемник (bit bucket)*** /dev/null

**Пример:**

```bash
[andrey@fedora ~]$ ll test1/ 2> /dev/null
```

### Перенаправление стандартного ввода

`cat [файл...]` - читает содержимое одного или нескольких файлов и копирует его в стандартный вывод

`cat` - начнет читать ввод  с клавиатуры

`cat > файл` - запишет ввод с клавиатуры в файл (для окончания ввода необходимо нажать Ctrl + D)

Пример:

```bash
[andrey@fedora ~]$ cat > in.txt
Строка текста введенная с клавиатуры и записанная в файл
[andrey@fedora ~]$ cat in.txt 
Строка текста введенная с клавиатуры и записанная в файл
```

### Конвейеры

`команад1 | команда2` - стандартный вывод одной команды связывает со стандартным вводом другой

```bash
[andrey@fedora ~]$ ls -l /usr/bin/ | less
```

```bash
[andrey@fedora ~]$ ls -l test/ test/dir1 | cat
test/:
итого 0
drwxrwxr-x. 1 andrey andrey 48 мая 20 17:01 dir1
drwxrwxr-x. 1 andrey andrey  0 мая 20 16:00 dir2
d---------. 1 andrey andrey  0 мая 20 16:06 dir3

test/dir1:
итого 12
-rw-rw-r--. 1 andrey andrey 878 мая 20 17:00 out1.txt
-rw-rw-r--. 1 andrey andrey 878 мая 20 17:00 out2.txt
-rw-rw-r--. 1 andrey andrey 878 мая 20 17:00 out3.txt
```

### Фильтры

#### Сортировка

`sort` - сортировка

```bash
[andrey@fedora ~]$ ls test/ | sort | cat
dir1
dir2
dir3
```

`sort -r` - сортировак в обратном порядке

```bash
[andrey@fedora ~]$ ls test/ | sort -r | cat
dir3
dir2
dir1
```

#### Поиск или удаление повторяющихся строк

```bash
[andrey@fedora ~]$ cat in.txt 
Строка1
Строка2
Строка2
Строка3
```

`uniq` - удаление повторяющихся строк

```bash
[andrey@fedora ~]$ cat in.txt | uniq | cat
Строка1
Строка2
Строка3
```

`uniq -d` - поиск повторяющихся строк

```bash
[andrey@fedora ~]$ cat in.txt | uniq -d | cat
Строка2
```

### Вывод числа строк, слов, байт

`wc [файл...]` - (word count - счетчик слов) подсчитывает число строк, слов, байт

```bash
[andrey@fedora ~]$ wc out.txt in.txt 
  5  40 289 out.txt
  4   4  56 in.txt
  9  44 345 итого
[andrey@fedora ~]$ cat in.txt | uniq | cat 
Строка1
Строка2
Строка3
[andrey@fedora ~]$ cat in.txt | uniq | cat | wc
      3       3      42
[andrey@fedora ~]$ # Количество строк
[andrey@fedora ~]$ cat in.txt | uniq | cat | wc -l
3
[andrey@fedora ~]$ # Количество символов
[andrey@fedora ~]$ cat in.txt | uniq | cat | wc -m
24
[andrey@fedora ~]$ # Количество байт
[andrey@fedora ~]$ cat in.txt | uniq | cat | wc -c
42
```

при отсутствии аргументов читает данные из стандартного потока ввода (клавиатуры)

```bash
[andrey@fedora ~]$ wc
1234
5678
9101
      3       3      15
```

### Поиск строк соответствующих шаблону

`grep шаблон [файл...] - находит в файле совпадение с "шаблоном" и выводит строки с найденным совпадением`

```bash
[andrey@fedora ~]$ cat out.txt 
zip1
zip2
cat1
cat2
zip3cat3
[andrey@fedora ~]$ cat out.txt | grep zip
zip1
zip2
zip3cat3
[andrey@fedora ~]$ cat out.txt | grep cat
cat1
cat2
zip3cat3
[andrey@fedora ~]$ cat out.txt | grep -v cat
zip1
zip2
```

ключ -v выводит строки где совпадений с шаблоном не найдено

ключ -i игнорирует регистр символов в процессе сравнения

### Вывод первых/последних строк из файла

`head [файл...]` - выводит первые 10 строк из файла&#x20;

`head -n N [файл...]` - выводит первые N строк из файла

`tail [файл...]` - выводит последние 10 строк из файла&#x20;

`tail -n N [файл...]` -  выводит последние N строк из файла

```bash
[andrey@fedora ~]$ cat in.txt 
Строка1
Строка2
Строка2
Строка3
[andrey@fedora ~]$ head -n 3 in.txt 
Строка1
Строка2
Строка2
[andrey@fedora ~]$ tail -n 3 in.txt 
Строка2
Строка2
Строка3
```

Команда `tail` позволяет наблюдать, как изменяетcя содержимое файла в режиме реального времени

```bash
[andrey@fedora ~]$ tail -f /var/log/messages
```

### Чтение со стандартного ввода и запись в стандартный вывод и в файл

`tee [файл...]` - копирует стандартный ввод в каждый ФАЙЛ, а также в стандартный вывод

```bash
[andrey@fedora ~]$ ll test/
итого 0
drwxrwxr-x. 1 andrey andrey  0 мая 20 18:51 cat4zip
drwxrwxr-x. 1 andrey andrey 48 мая 20 17:01 dir1
drwxrwxr-x. 1 andrey andrey  0 мая 20 18:42 dir1zip
drwxrwxr-x. 1 andrey andrey  0 мая 20 16:00 dir2
drwxrwxr-x. 1 andrey andrey  0 мая 20 18:40 dir2zip
drwxrwxr-x. 1 andrey andrey  0 мая 20 18:41 dir3
d---------. 1 andrey andrey  0 мая 20 18:40 dir3zip
[andrey@fedora ~]$ ll test/ | tee full_list.txt | grep zip | tee zip_list.txt | grep cat
drwxrwxr-x. 1 andrey andrey  0 мая 20 18:51 cat4zip
[andrey@fedora ~]$ cat full_list.txt 
итого 0
drwxrwxr-x. 1 andrey andrey  0 мая 20 18:51 cat4zip
drwxrwxr-x. 1 andrey andrey 48 мая 20 17:01 dir1
drwxrwxr-x. 1 andrey andrey  0 мая 20 18:42 dir1zip
drwxrwxr-x. 1 andrey andrey  0 мая 20 16:00 dir2
drwxrwxr-x. 1 andrey andrey  0 мая 20 18:40 dir2zip
drwxrwxr-x. 1 andrey andrey  0 мая 20 18:41 dir3
d---------. 1 andrey andrey  0 мая 20 18:40 dir3zip
[andrey@fedora ~]$ cat zip_list.txt 
drwxrwxr-x. 1 andrey andrey  0 мая 20 18:51 cat4zip
drwxrwxr-x. 1 andrey andrey  0 мая 20 18:42 dir1zip
drwxrwxr-x. 1 andrey andrey  0 мая 20 18:40 dir2zip
d---------. 1 andrey andrey  0 мая 20 18:40 dir3zip
[andrey@fedora ~]$ 
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://andrey-ivantsov.gitbook.io/linux/komandy/perenapravlenie-i-vyvod.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
