Bash (акроним от "Bourne-again SHell") - это стандартный интерпретатор команд на большинстве линукс систем. В его обязанности входит обработка и исполнение команд, с помощью которых пользователь управляет компьютером.
Потоки и способы их перенаправления
Процесс взаимодействия с пользователем выполняется в терминах записи и чтения в файл. То есть вывод на экран представляется как запись в файл, а ввод — как чтение файла. Файл, из которого осуществляется чтение, называется стандартным потоком ввода, а в который осуществляется запись — стандартным потоком вывода.
Стандартные потоки привязаны к файловым дескрипторам с номерами 0, 1 и 2.
- Стандартный поток ввода (stdin) — 0;
- Стандартный поток вывода (stdout) — 1;
- Стандартный поток ошибок (stderr) — 2.
Потоки можно подключать к чему угодно: к файлам, программам и даже устройствам. Этот процесс называется перенаправлением.
Способ | Описание |
< файл | Использовать "файл" как источник данных для стандартного потока ввода. |
> файл | Направить стандартный поток вывода в "файл". Если файл не существует, он будет создан; если существует — перезаписан сверху. |
>> файл | Направить стандартный поток вывода в "файл". Если файл не существует, он будет создан; если существует — данные будут дописаны к нему в конец. |
2> файл | Направить стандартный поток ошибок в "файл". Если файл не существует, он будет создан; если существует — перезаписан сверху. |
2>> файл | Направить стандартный поток ошибок в "файл". Если файл не существует, он будет создан; если существует — данные будут дописаны к нему в конец. |
>& файл | Направить стандартный поток вывода и стандартный поток ошибок в "файл". |
| программа1 | Направить стандартный поток вывода в программу "программа1". |
Для управления командами в bash существуют специальные символы:
Символ | Пояснение |
> | перенаправление вывода |
< | перенаправление ввода |
&1 | указатель на поток 1(stdout). Если после >& ничего не стоит, то подразумеваются оба выводных потока |
/ | корень файловой системы |
./ | текущая директория |
../ | родительская директория |
~/ | домашняя директория |
* | набор из любых символов |
Пример 1:
ls -l | wc -l > fail.txt
Вывели построчно содержимое текущей папки, посчитали количество этих строк и перенаправили результат в файл fail.txt.
Пример 2:
cd /home/work
Перешли в корень, затем в папку home, затем в папку work.