Раздел 1. Bash
Bash – разновидность командой оболочки UNIX, наиболее используемая в операционных системах типа Linux.
Данный раздел посвящен общим теоретическим моментам: потокам и перенаправлениям потоков в Bash.
Следует отметить, что на этой странице не рассматриваются стандартные команды, необходимые для работы с Bash, их можно изучить с помощью любого источника – литературы по UNIX. Наиболее важные команды можно посмотреть на сайте Kodomo в справке по UNIX.
I. Потоки
В системах типа UNIX и других существуют стандартные потоки ввода-вывода. Это потоки процесса, имеющие способность выполнять «стандартные» функции. Иначе говоря, стандартные потоки – это воображаемые файлы, с помощью которых происходит запись в файлы и чтение последних, т.е. осуществление взаимодействия с пользователем.
Стандартный поток ввода – stdin – служит для выполнения чтения текста, вводимого пользователя (в типичном случае – чтение с клавиатуры). Т.е. поток включает все вводимые человеком команды.
Данные других потоков можно перенаправлять в stdin, используя символ “<”.
Файл, из которого осуществляется чтение, называется стандратным потоком ввода.
Стандартный поток вывода – stdout – служит для вывода данных на устройство отображения (в типичном случае – на монитор). Т.е. поток включает результаты выполнения команд, заданных пользователем. Не содержит информации об ошибках (т.е. не выполняет ее вывод).
Данные других потоков можно перенаправлять в stdout, используя символы “>”, “>>”.
Файл, в который осуществляется запись, называется стандартным потоков вывода.
Отметим также, что помимо информации об ошибках указанный поток не выводит информацию о результатах выполнения команд с “- help”.
Например, мы можем записать в файл информацию, выведенную после использования команды
тогда полученные данные можно увидеть в файле seq.txt. Но при попытке дополнительно записать в этот же файл информацию о команде “infoseq” с помощью “infoseq -help >> seq.txt” ничего не выйдет, и содержимое файла останется прежним.
Стандартный поток ошибок – stderr – служит для вывода всех сообщений об ошибках и ту информацию о ходе работы программы, которые не могут быть выведены в stdout. Содержание потока по умолчанию отображается в консольном окне.
Различить stdout и stderr нельзя. Возможно перенаправление потоков ввода и вывода в другие программы и файлы. При этом поток ошибок будет продолжать выводится на экран.
Каждая программа, с которой можно работать с помощь консоли (командной строки), имеет дело с перечисленными тремя стандартными потоками.
В устаревших операционных системах типа DOS имели место дополнительные потоки вывода: stdprn и stdaux:
- stdprn – может служить для вывода информации на принтер;
- stdaux – может служить для вывода символов на некоторое вспомогательное устройство, после достижения последним готовности к получению информации.
II. Операторы перенаправления потоков
Операторы перенаправления позволяют перенаправлять стандартные потоки в определенное пользовательское место (файл и т.п.), подключать потоки к программам и устройствам.
Перенаправление стандартных потоков stdin и stdout
1) Выполнение команды с использованием в качестве источника информации некоторый файл:
2) Выполнение команды с использованием в качестве места записи результата некоторый файл:
3) Выполнение команды с использованием в качестве источника файл 1 и места записи –файл 2:
Символ “>” создает файл для записи, если он еще не создан, или перезаписывает информацию в уже существующем файле.
Для добавления информации в существующий файл можно использовать двойной символ “>>”.
.Перенаправление стандартного потока stderr
Для перенаправления stderr существуют следующие операторы:
1)2> (или 2>>) – направляет stderr в файл
2)(<&) – направляет stderr вместе с stdout в файл.
Перенаправление потоков с помощью конвейера
Конвейер – способ перенаправления поток stdout одной команды на поток stdin другой команда. Синтаксис включает в себя символ “|” (pipe).
Пример использования.Узнаем, сколько всего известных видов рода Bacillus имеет белок PDXS. Команда
дает 3 числа: первое – количество найденных строк из базы данных (это и есть искомое число), второе – количество слов, третье – общее число символов. Результат команды
можно увидеть в файле 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. Справочник.
3) Ресурс Википедия:
4) Статья «Стандартные потоки ввода/вывода»
Раздел 2. EMBOSS
Можно обращаться к отдельной странице, посвященной командам пакета EMBOSS.
– команда биоинформатического пакета EMBOSS (European Molecular Biology Open Software Suite).
Команда
выводит в консольное окно информацию о возможностях infoseq. Результат указанной команды – англоязычное описание различных параметров (или квалификаторов) для infoseq.
В файле infoseq_help.txt находится это описание. Отметим, что, т. к. информация о командах с –help выводится в стандартном потоке ошибок, получить ее можно с помощью команды
которая выводит информацию и stdout, и stderr.
Различные параметры команды infoseq будут рассмотрены далее.
I. Стандартные (или обязательные) параметры.
В данном случае это параметр “-sequence”. Вывод информации с этим параметром аналогичен выводу информации без него. То есть равносильны команды
и их результат есть информация SwissPtrot о белке PDXS_BACSU в файле seq.txt.
II. Продвинутые параметры.
1. “-columns” – параметр, представляющий информацию в виде таблицы с колонками, как в файле seq.txt.
2. “-no” – параметр пишется слитно c другим. На экран выводится отрицание последнего. Так команда
дает результат из файла nocolumns_seq.txt.
3. “delimiter” – параметр, с помощью которого данные разделяются заданным символом (символ задается после параметра в двойных кавычках). Например, результатом команды
будет файл delimiter_seq.txt
4. “(no)heding” – параметр с (no), с использованием которого информация о последовательности выводится в виде таблицы без заголовков. Например, с помощью команды
можно получить результат из файла 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), то можно воспользоваться командой
результат в файле only_seq.txt
III. Опциональные (или дополнительные) параметры.
1. “-outfile” – записывает информацию о последовательностях в заданный файл.
2. “-html” - выводит html-код, при записи которого на web-сайт получается следующая таблица:
USA | Database | Name | Accession | Type | Length | Organism | Description |
---|---|---|---|---|---|---|---|
sw-id:PDXS_BACSU | sw | PDXS_BACSU | P37527 | P | 294 | Bacillus subtilis (strain 168) | Pyridoxal biosynthesis lyase PdxS (4.-.-.-) (Superoxide-inducible protein 7) (SOI7) |
IV. Общие параметры.
1. “-help” – выводит на экран некоторые параметры для командной строки;
2. “-verbose” – выводит на экран подробную информацию о параметрах для командной строки (больше, чем “-help”).
Использование этих команд приведено выше.
С помощью команды infoseq можно получать информацию сразу о многих последовательностях.
Пример. При желании узнать описание (в которое включены функции) белка PDXS у всех известных видов бактерий рода Bacillus, можно воспользоваться командой
результат – таблица в файле decr_pdxs.txt. Правда, описание белка везде одинаковое, что не удивительно.
То же можно использовать при поиске информации о всех белках, имеющихся в базе данных, одной бактерии и т.п.
– команда биоинформатического пакета EMBOSS.
Аналогичный для infoseq синтаксис имеет команда entret. Entret прежде всего используется для быстрого получения информации о последовательностях из различных баз данных. Так, например, с помощью команды
можно получить информацию о белке PDXS_BACSU из базы данных Swiss-Prot. Команда по умолчанию запрашивает у пользователя полное имя файла, в который необходимо поместить информацию. В консольном окне это будет выглядеть следующим образом:
В квадратных скобках при этом указывается имя в файла, в которой будет загружена информация, если пользователь не укажет другое название. Так в данном случае описание белка PDXS_BACSU можно увидеть в файле pdxs_bacsu.entret