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.

© Evstafyeva Diana, 2012