Раздел 1. Bash

Bash – разновидность командой оболочки UNIX, наиболее используемая в операционных системах типа Linux.

Данный раздел посвящен общим теоретическим моментам: потокам и перенаправлениям потоков в Bash.

Следует отметить, что на этой странице не рассматриваются стандартные команды, необходимые для работы с Bash, их можно изучить с помощью любого источника – литературы по UNIX. Наиболее важные команды можно посмотреть на сайте Kodomo в справке по UNIX.


I. Потоки

В системах типа UNIX и других существуют стандартные потоки ввода-вывода. Это потоки процесса, имеющие способность выполнять «стандартные» функции. Иначе говоря, стандартные потокиэто воображаемые файлы, с помощью которых происходит запись в файлы и чтение последних, т.е. осуществление взаимодействия с пользователем.

Стандартный поток ввода – stdin – служит для выполнения чтения текста, вводимого пользователя (в типичном случае – чтение с клавиатуры). Т.е. поток включает все вводимые человеком команды.

Данные других потоков можно перенаправлять в stdin, используя символ “<”.

Файл, из которого осуществляется чтение, называется стандратным потоком ввода.

Стандартный поток вывода – stdout – служит для вывода данных на устройство отображения (в типичном случае – на монитор). Т.е. поток включает результаты выполнения команд, заданных пользователем. Не содержит информации об ошибках (т.е. не выполняет ее вывод).

Данные других потоков можно перенаправлять в stdout, используя символы “>”, “>>”.

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

Отметим также, что помимо информации об ошибках указанный поток не выводит информацию о результатах выполнения команд с “- help”.

Например, мы можем записать в файл информацию, выведенную после использования команды

infoseq sw:PDXS_BACSU > seq.txt

тогда полученные данные можно увидеть в файле seq.txt. Но при попытке дополнительно записать в этот же файл информацию о команде “infoseq” с помощью “infoseq -help >> seq.txt” ничего не выйдет, и содержимое файла останется прежним.

Стандартный поток ошибок – stderr – служит для вывода всех сообщений об ошибках и ту информацию о ходе работы программы, которые не могут быть выведены в stdout. Содержание потока по умолчанию отображается в консольном окне.

Различить stdout и stderr нельзя. Возможно перенаправление потоков ввода и вывода в другие программы и файлы. При этом поток ошибок будет продолжать выводится на экран.


Каждая программа, с которой можно работать с помощь консоли (командной строки), имеет дело с перечисленными тремя стандартными потоками.

В устаревших операционных системах типа DOS имели место дополнительные потоки вывода: stdprn и stdaux:


II. Операторы перенаправления потоков

Операторы перенаправления позволяют перенаправлять стандартные потоки в определенное пользовательское место (файл и т.п.), подключать потоки к программам и устройствам.

Перенаправление стандартных потоков stdin и stdout

1) Выполнение команды с использованием в качестве источника информации некоторый файл:

«команда < файл»;

2) Выполнение команды с использованием в качестве места записи результата некоторый файл:

«команда > файл»;

3) Выполнение команды с использованием в качестве источника файл 1 и места записи –файл 2:

«команда 1 < файл 1 > файл 2».

Символ “>” создает файл для записи, если он еще не создан, или перезаписывает информацию в уже существующем файле.

Для добавления информации в существующий файл можно использовать двойной символ “>>”.

.

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

Для перенаправления stderr существуют следующие операторы:

1)2> (или 2>>) – направляет stderr в файл

2)(<&) – направляет stderr вместе с stdout в файл.

Перенаправление потоков с помощью конвейера

Конвейер – способ перенаправления поток stdout одной команды на поток stdin другой команда. Синтаксис включает в себя символ “|” (pipe).

Пример использования.Узнаем, сколько всего известных видов рода Bacillus имеет белок PDXS. Команда

infoseq sw:PDXS_BAC* | wc

дает 3 числа: первое – количество найденных строк из базы данных (это и есть искомое число), второе – количество слов, третье – общее число символов. Результат команды

infoseq sw:PDXS_BAC* | wc > pdxs_bac.txt

можно увидеть в файле pdxs_bac.txt.


III. Спецсимволы

Спецсимволы – множество символов, которые воспринимаются интерпретатором командной строки bash как указания произвести определенные операции. Некоторые спецсимволы и соответствующие им операции приведены ниже. Также указаны наиболее не очевидные примеры применения некоторых спецсимволов.

1) Пробел и знак табуляции (Tab) позволяют отделять параметры друг от друга.

2) Обратная косая черта (backslash) “\”. Используется для экранирования спецсимволов, т.е. для их буквального восприятия интерпретатором. В использовании с буквой может кодировать так называемые символьные классы.

Например:

\s – пробельный символ

\S – непробельный символ

\d – цифра

\D – любой символ, кроме цифры.

Пример использования. Символные классы зачастую удобны в использовании для поиска конкретных строк в больших по объему информации файлах и т.п.

3) Одинарные кавычки ‘ ‘. Спецсимволы в одинарных кавычках воспринимаются интерпретатором буквально.

4) Двойные кавычки “ “. Выражение в двойных кавычках интерпретируется целиком. Следует отметить, что в двойных кавычках символы небуквенные и нецифровые символы (например $, ‘) воспринимаются как спецсимволы, тогда при необходимости их используют в сочетании с “\”.Кавычки используются для сообщения команде параметров, включающих спецсимволы.

5) Символы “>, <, |” используются для перенаправления потоков информации (примеры рассмотрены выше).

6) Символ “;” используется для записи последовательности из нескольких команд в одной строке.

7) Символ “*” используется в качестве заменяя любого количества любых символов.

8) Символ “?” используется в качестве замены одного любого символа.

9) Символ “~” обозначает домашнюю директорию.

10) Символ “$” используется для вызова переменной.

11) Квадратные скобки [] – обозначают некоторое множество символов.

Пример: [1-10] воспринимается интерпретатором как множество символов натуральных чисел от 1 до 10 в естественном порядке.

12) Фигурные скобки {} – обозначают один символ из заданного множества.

Пример: {1-10} воспринимается как одно из натуральных чисел от одного до 10. Зачастую используется в поиске различных данных.

13) Символ “!” используется для вызова команды из журнала.

Пример: для выполнения 10-ой по счету записанной в журнале команды можно использовать команду “!10”. Сам журнал команд можно вызвать командой “history”.


Источники информации:

1) Скловская С. Л. – Команды Linux. Справочник.

2) Материалы по UNIX c Kodomo

3) Ресурс Википедия:

4) Статья «Стандартные потоки ввода/вывода»



Раздел 2. EMBOSS

Можно обращаться к отдельной странице, посвященной командам пакета EMBOSS.

Infoseq

– команда биоинформатического пакета EMBOSS (European Molecular Biology Open Software Suite).

Команда

infoseq -help -verbose

выводит в консольное окно информацию о возможностях infoseq. Результат указанной команды – англоязычное описание различных параметров (или квалификаторов) для infoseq.

В файле infoseq_help.txt находится это описание. Отметим, что, т. к. информация о командах с –help выводится в стандартном потоке ошибок, получить ее можно с помощью команды

infoseq -help &> infoseq_help.txt,

которая выводит информацию и stdout, и stderr.

Различные параметры команды infoseq будут рассмотрены далее.

I. Стандартные (или обязательные) параметры.

В данном случае это параметр “-sequence”. Вывод информации с этим параметром аналогичен выводу информации без него. То есть равносильны команды

infoseq -sequence sw:pdxs_bacsu > seq.txt и infoseq sw:pdxs_bacsu > seq.txt,

и их результат есть информация SwissPtrot о белке PDXS_BACSU в файле seq.txt.

II. Продвинутые параметры.

1. “-columns” – параметр, представляющий информацию в виде таблицы с колонками, как в файле seq.txt.

2. “-no” – параметр пишется слитно c другим. На экран выводится отрицание последнего. Так команда

infoseq –nocolumns sw:pdxs_bacsu > nocolumns_seq.txt

дает результат из файла nocolumns_seq.txt.

3. “delimiter” – параметр, с помощью которого данные разделяются заданным символом (символ задается после параметра в двойных кавычках). Например, результатом команды

infoseq –nocolumns –delimiter “_” sw:pdxs_bacsu > delimiter_seq.txt

будет файл delimiter_seq.txt

4. “(no)heding” – параметр с (no), с использованием которого информация о последовательности выводится в виде таблицы без заголовков. Например, с помощью команды

infoseq -noheading sw:pdxs_bacsu > noheading_seq.txt

можно получить результат из файла noheading_seq.txt.

5. “-only” – параметр, с помощью которого можно выбрать для вывода на экран определенные данные о последовательностях белка.

Используется со следующими параметрами:

“-database” – название базы данных, из которой берется информация;

“-name” – имя объекта (белка);

“-accession” или “AC” – код доступа;

“-gi” – особый номер, который присваивается последовательностям из баз данных NCBI (National Center for Biotechnology Information);

“-type” – тип белка;

“-length” – количество аминокислотных остатков;

“-pgc” (percent G-C content) – процент G-C пар оснований;

“-organism” – организм, которому принадлежит белок;

“-description” – описание.

Например, если необходимо получить информацию только о названии белка и его коде доступа (accession number), то можно воспользоваться командой

infoseq -only -name -AC sw:pdxs_bacsu > only_seq.txt,

результат в файле only_seq.txt

III. Опциональные (или дополнительные) параметры.

1. “-outfile” – записывает информацию о последовательностях в заданный файл.

Пример: команда “infoseq -outfile pdxs.txt sw:pdxs_bacsu”, файл pdxs.txt.

2. “-html” - выводит html-код, при записи которого на web-сайт получается следующая таблица:

USADatabaseNameAccessionTypeLengthOrganismDescription
sw-id:PDXS_BACSUswPDXS_BACSUP37527P294Bacillus subtilis (strain 168)Pyridoxal biosynthesis lyase PdxS (4.-.-.-) (Superoxide-inducible protein 7) (SOI7)

IV. Общие параметры.

1. “-help” – выводит на экран некоторые параметры для командной строки;

2. “-verbose” – выводит на экран подробную информацию о параметрах для командной строки (больше, чем “-help”).

Использование этих команд приведено выше.

С помощью команды infoseq можно получать информацию сразу о многих последовательностях.

Пример. При желании узнать описание (в которое включены функции) белка PDXS у всех известных видов бактерий рода Bacillus, можно воспользоваться командой

infoseq -only -name -organism -description sw:pdxs_bac* > decr_pdxs.txt,

результат – таблица в файле decr_pdxs.txt. Правда, описание белка везде одинаковое, что не удивительно.

То же можно использовать при поиске информации о всех белках, имеющихся в базе данных, одной бактерии и т.п.



Entret

– команда биоинформатического пакета EMBOSS.

Аналогичный для infoseq синтаксис имеет команда entret. Entret прежде всего используется для быстрого получения информации о последовательностях из различных баз данных. Так, например, с помощью команды

entret sw:pdxs_bacsu

можно получить информацию о белке PDXS_BACSU из базы данных Swiss-Prot. Команда по умолчанию запрашивает у пользователя полное имя файла, в который необходимо поместить информацию. В консольном окне это будет выглядеть следующим образом:

Putty - entret

В квадратных скобках при этом указывается имя в файла, в которой будет загружена информация, если пользователь не укажет другое название. Так в данном случае описание белка PDXS_BACSU можно увидеть в файле pdxs_bacsu.entret

Последнее изменение: 10-02-2013 (pankevich-ev)