Bash
bash (акроним от Bourne Again Shell) - это командная оболочка или командный интерпретатор, используемый в операционных системах семейсва UNIX. Особенно популярна в среде Linux. Bash работает, как правило, в интерактивном режиме в текстовом окне, также может читать скрипт.
Потоки
| stdin | Входной поток. Это те команды или данные, которые мы задаем программе. |
| stdout | Стандартный выходной поток. Иными словами, это ответ программы. Например, когда мы задаем команду ls, программа выводит список содержимого именно в этот поток. |
| stderr | Выходной поток ошибок. Если произошла ошибка, то информацию об этом программа выводит в потоке stderr. |
Два потока, stdout и stderr, выводятся вместе, поэтому невозможно точно определить какой имеенно поток мы видим. Для того, чтобы отделить сообщения об ошибках от результатов программы, существуют специальные символы. Список операторов перенаправления потоков представлен ниже.
| Оператор | Пример | Описание |
| > или 1> | ls > ls.txt или ls 1> ls.txt | Происходит направления потока stdout команды ls в файл ls.txt. Если этот файл уже существует, то результат запишется вместо той информации, которая уже была в файле. |
| >> или 1>> | ls >> ls.txt или ls 1>> ls.txt | Происходит направления потока stdout команды ls в файл ls.txt. При этом, результат записывается в файл после уже имеющейся там информации. |
| 2> | ls block4 2> error.txt | Команда, указанная в примере, запишет в файл error.txt информацию об ошибке, так как директории block4 не существует. Значит, этот оператор перенаправляет выходной поток ошибок. |
| >>2 | ls block4 2>> error.txt | Если в файле error.txt уже есть информация, то перенаправление потока ошибок осуществится в этот файл с добавлением в конец. |
| &> | ls block4 2> duo.txt | Одновременно перенаправит оба выходных потока в файл duo.txt. |
| | | ls block1 | wc | Конвейер позволяет перенаправить поток stdout одной команды, в данном случае ls, в stdin другой команды, то есть wc. Команда ls block1 | wc посчитает количество элементов в директории block1. |
Спецсимволы Bash
| Спецсимвол | Пример использования | Описание |
| ~ | cd ~ | Переход в домашнюю директорию. |
| / | 1)term2/block1/credits 2)cd / | Слэш используется для перехода в корневую директорию. |
| ./ | cd ./ | Текущая директория. |
| ../ | cd ../ | Родительская директория. |
| ; | infoseq -only -name sw:urhg2_bacsu >> protein; less protein | Используется для разделения команд в одной строке. Если мы введем команду, приведенную в примере, то в консольном окне увидим запись: Name URHG2_BACSU |
| '...' | 'hello' | Все данные, находящиеся в одинарных ковычках воспринимаются буквально. |
| "..." | "hello" | Все данные, находящиеся в двойных ковычках воспринимаются буквально. |
| ! | !номер команды | Вызов команды из журнала команд. |
| ? | ls block? | Маска, используемая для задания одного произвольного символа. Пояснение примера: Появится список файлов, содержащихся в директориях, названия которых состоит из слова block и еще одного символа, например block1, block2, block3. |
| * | infoseq sw:urhg2_bac* | Маска, обозначающая любое количество символов.Пояснение примера: выходной поток будет содержать информацию о белке urhg2, содержащемся во всех видах бактерий рода Bacillus. |
| >, >>, < | Перенаправление потоков. Подробнее о них говорилось ранее. | |
| [...] | ls *[1-10] | Маска, используемая для поиска файлов, в названии которых есть какой-нибудь из символов из диапазона, указанного в скобках. Пояснения к примеру: на экран выведется список директорий названия которых заканчиваются на цифру из диапазона 1-10. |