Новый семестр

Главная Семестры Проекты Заметки О себе Полезные ссылки


РАЗДЕЛ BASH

Стандартные потоки ввода и вывода в UNIX/Linux наряду с файлами являются одним из наиболее распространённых средств для обмена информацией процессов с внешним миром. Процесс взаимодействия с пользователем выполняется в терминах записи и чтения в файл. То есть вывод на экран представляется как запись в файл, а ввод - как чтение файла. Файл, из которого осуществляется чтение, называется стандартным потоком ввода, а в который осуществляется запись - стандартным потоком вывода. Стандартные потоки - воображаемые файлы, позволяющие осуществлять взаимодействие с пользователем как чтение и запись в файл. Кроме потоков ввода и вывода, существует еще и стандартный поток ошибок, на который выводятся все сообщения об ошибках и те информативные сообщения о ходе работы программы, которые не могут быть выведены в стандартный поток вывода.
Стандартные потоки привязаны к файловым дескрипторам с номерами 0, 1 и 2. (Файловый дескриптор - это неотрицательное целое число).

Стандартный поток ввода (stdin) - 0;
Стандартный поток вывода (stdout) - 1;
Стандартный поток ошибок (stderr) - 2.

Вывод данных на экран и чтение их с клавиатуры происходит потому, что по умолчанию стандартные потоки ассоциированы с терминалом пользователя. Это не является обязательным - потоки можно подключать к чему угодно - к файлам, программам и даже устройствам. В командном интерпретаторе bash такая операция называется перенаправлением.[1]
Потоки
stdin Стандартный ввод. Зарезервирован для чтения команд пользователя или входных данных, т.е. содержит то, что пользователь набирает на компьютере. Командная оболочка UNIX позволяют изменять цель этого потока с помощью символа "<".[2]
stdout Стандартный вывод. Зарезервирован для вывода данных, как правило (хотя и не обязательно) текстовых. Командная оболочка UNIX позволяют изменять цель этого потока с помощью символа ">".[2]
stderr Стандартный вывод ошибок. Зарезервирован для вывода диагностических и отладочных сообщений в текстовом виде. Чаще всего цель этого потока совпадает с stdout, однако, в отличие от него, цель потока stderr не меняется при ">" и создании конвейеров ("|"). То есть, отладочные сообщения процесса, вывод которого перенаправлен, всё равно попадут пользователю. Командная оболочка UNIX позволяет изменять цель этого потока с помощью конструкции "2>".[2]


Операторы перенаправления потоков
Символы Описание Примеры
> Для перенаправления стандартного вывода команды в файл. Команда: infoseq -only -length sw:mrga_bacsu > 1.infoseq записывает в файл 1.infoseq длину белка mrga_bacsu. Если файл, в который направляется информация не существует, то он создается. В данном случае он создается в текущей папке.
>> Дописывает стандартный вывод команды в файл Команда infoseq -only -name sw:mrga_bacsu > 2.infoseq дописывает в файл 2.infoseq название белка (при этом в файле уже имеется его длина)
2> Дописывает в файл стандартный вывод ошибок команды Команда find /P/ -name '*protein.*' > stdout.txt ищет на диске P файлы, имеющие в своем названии protein и перенаправляет стандартный вывод команды в файл stdout.txt. Команда find /P/ -name '*protein.*' 2> stderr.txt ищет на диске P файлы, имеющие в своем названии protein и перенаправляет стандартный поток ошибок в файл stderr.txt
&> Перенаправление вывода и ошибок в файл Команда find /P/ -name '*protein.*' &> derrdout.txt ищет на диске P файлы, имеющие в своем названии protein и перенаправляет вывод и ошибки в файл derrdout.txt


Спецсимволы
Символ Описание Пример
Пробел и символ табуляции Пробел и символ табуляции отделяют параметры друг от друга Команда wc -l -w file.txt считает число строк и слов в file.txt
/ Разделитель, используемый в указании пути к каталогам и файлам. Отделяет элементы пути к каталогам и файлам. /home/students/y12/fedorovaad1995 - путь к папке fedorovaad1995
~ Используется для перехода в домашнюю директорию. Если слово начинается с символа тильды ('~'), все символы до первого слэша (или все символы, если слэша нет) трактуются как имя пользователя (login name). Если вслед за знаком тильды (до слэша) стоит слово, совпадающее с именем одного из легальных пользователей, тильда и имя пользователя заменяются полным именем домашнего каталога этого пользователя. Если слово, следующее за тильдой, не является именем пользователя (и не пусто), то оно остается неизменным. Команда cd ~ перходит в домашнюю директорию. Команда ~fedorovaad1995/ выдает -bash: /home/students/y12/fedorovaad1995: Is a directory
" " Символы в кавычках воспринимаются буквально, кроме ", ' и $. Если перед ними поставить обратный слэш (\), то они тоже будут читаться буквально Команда find /P/ -name "*fasta.*" >> "A protein.txt" не будет выполняться без кавычек.
' ' Символы в одиночных кавычках воспринимаются буквально, кроме ' Команда less 'A protein.txt" не будет выполняться без кавычек, причем пробел - часть имени файла.
; Исполнение одной строкой последовательности из двух или более команд - этот символ разделяет строку на последовательно выполняемые команды. mkdir termka; find /P/ -name "*fasta.*"
| Конвейер. Для направления stdout одной команды на вход (stdin) другой команды Команда ls */* | wc -l считает строки в списке всех директорий, поддиректорий и файлов в них в текущей директории
# Строки, начинающиеся с символа # (за исключением комбинации #!) являются комментариями. Комментариям могут предшествовать пробелы Команда 'echo "Далее следует комментарий." # Это комментарий' выводит на экран "Далее следует комментарий"
. Может являться частью имени файла . Если имя файла начинается с точки, то это "скрытый" файл, т.е. команда ls при обычных условиях его не отображает.
Если подразумевается имя каталога, то одна точка означает текущую директорию и две точки директорию уровнем выше, или родительскую директорию.
При выполнении поиска по шаблону , в регулярных выражениях, символ "точка" обозначает одиночный символ.
Создадим скрытый файл: touch .hidden-file. Попробуем найти его в директории с помощью команды ls: Результат команды ls
Скрытый файл отображается только с помощью команды ls -a Результат команды ls -a.
Чтобы перейти в родительскую директорию, воспользуемся командой: cd ..
{} Все, что записано в фигурных скобках, интерпретируется как выбор из нескольких вариаций (причем эти вариации разделены точкой с запятой) Команда: echo {file1,file2}\ :{\ x,' y'}
Файл с результатом команды.
Ctl-Z Приостановка процесса
Ctl-U Стирание строки ввода
Ctl-D Выход из командного интерпретатора (log out) (аналог команды exit).
Маски поиска
* Соответствует произвольной строке символов, включая пустую строку. mrga_bac* будет заменено на mrga_bacsa, mrga_bacsdf (если такие файлы существуют), а *.txt соответствует всем файлам с расширением txt в указанном каталоге
? Соответствует любому одиночному символу. Вместо шаблона file?.txt будут подставлены имена file1.txt и filex.txt, но не file10.txt
[...] Соответствует любому символу из числа символов, указанных в скобках. Пары символов, разделенные знаком минуса, обозначают интервал; любой символ стоящий лексически между этими двумя символами, включая и символы, задающие интервал, соответствует шаблону. Если первым символом внутри скобок является ! или ^, то считается, что шаблону (в данной позиции) соответствуют все символы, не указанные в скобках [0-9] - любое число из этого диапазона, [xyz] - любая из трех букв.


РАЗДЕЛ EMBOSS

INFOSEQ

Команда infoseq применяется для вывода информации о белке. Ее можно применять, используя различные квалификаторы, чтобы выводить определенную информацию. Синтаксис команды на примере: infoseq -qualifier sw:mrga_bacsu, где sw - сокращенное название базы данных SwissProt, а mrga_bacsu - идентификатор последовательности в этой базе данных, а -qualifier - один из квалификаторов, список которых приведен в таблице ниже.
Описание команды infoseq
Опция Описание Пример
Стандартный (обязательный) квалификатор
-sequence показывает имя последовательности, а также ее параметры и примечания Команда infoseq -sequence sw:mrga_bacsu выдает тот же результат, что и команда infoseq sw:mrga_bacsu
Файл:mrga.infoseq
Дополнительный (необязательный) квалификатор
-outfile Если ввести имя файлa, то эта программа будет запишет детали последовательности в файл Команда: infoseq sw:mrga_bacsu -outfile outinfo.txt
Файл: outinfo.txt
-html Выводит результат в виде html-таблицы Команда: infoseq -html sw:rs3_bac* > html.txt
Файл: html.txt
Остальные квалификаторы
-[no]columns Если использовать с no, то информация будет разделена с помощью символа |.
Если использовать без no, то информация будет выдана в виде колонок.
Команда infoseq -nocolumns sw:rs3_bac* > nocolumns.txt
Файл: nocolumns.txt
Команда infoseq -columns sw:rs3_bac* > columns.txt
Файл: columns.txt
-delimiter Разделяет слова в файле. Разделителями могут служить пробел, табулятор, | и другие символы, строки Команда infoseq -delimiter sw:mrga_bacsu > delimiter.txt
Файл: delimiter.txt
-only Способ сокращения вывода информации. Заменяет такие специфичные опции, как -nohead -noname -noacc -notype -nopgc -nodesc Команда:infoseq -only -name sw:mrga_bacsu > only.txt
Файл:only.txt
-[no]heading Показывает/не показывает названия колонок Команда:infoseq -noheading sw:mrga_bacsu > noheading.txt
Файл:noheading.txt
-usa Употребляетя только с -only. Показывает id белка (Uniform Sequence Address - USA, полный адресс последовательности) Команда:infoseq -only -usa sw:mrga_bacsu > usa.txt
Файл:usa.txt
-database Употребляется только с -only. Показывет колонку database (база данных, в которой хранится эта последовательность) Команда:infoseq -only -database sw:mrga_bacsu > database.txt
Файл:database.txt
-name Употребляется только с -only. Показывет колонку name (название последовательности) Команда:infoseq -only -name sw:mrga_bacsu > name.txt
Файл:name.txt
-accession Употребляется только с -only. Показывет колонку accession (совпадает с идентификатором последовательности в базе данных Uniprot, по определению - уникальный идентификатор полной последовательности какой-либо базы данных, если я правильно перевела) Команда:infoseq -only -accession sw:mrga_bacsu > accession.txt
Файл:accession.txt
-gi Употребляется только с -only. Показывет колонку gi - номер, который является просто набором цифр, которые присваиваются к каждой последовательности из баз данных NCBI. Число GI не имеет никакого сходства с accession number. Команда:infoseq -only -gi sw:mrga_bacsu > gi.txt
Файл:gi.txt
-seqversion Употребляется только с -only. Показывет колонку version (версия состоит из accession number, затем следует точка и номер версии (и поэтому иногда называется "accession.version"), возможно, тоже какой-то идентификатор последовательности Команда:infoseq -only -seqversion sw:mrga_bacsu > seqversion.txt
Файл:seqversion.txt
-type Употребляется только с -only. Показывет колонку type (тип последовательности, в данном случае белок (protein), т.е. P Команда:infoseq -only -type sw:mrga_bacsu > type.txt
Файл:type.txt
-length Употребляется только с -only. Показывет колонку length (длина последовательности) Команда:infoseq -only -length sw:mrga_bacsu > length.txt
Файл:length.txt
-pgc Употребляется только с -only. Показывет колонку percent GC content (содержание гуанина/цитозина) Команда:infoseq -only -pgc sw:mrga_bacsu > pgc.txt
Файл:pgc.txt
-organism Употребляется только с -only. Показывет колонку organism (организм, из которого выделена эта последовательность) Команда:infoseq -only -organism sw:mrga_bacsu > organism.txt
Файл:organism.txt
-description Употребляется только с -only. Показывет колонку description (описание последовательности) Команда:infoseq -only -description sw:mrga_bacsu > description.txt
Файл:description.txt
Главный квалификатор
-help Показывает квалификаторы и синтаксис комнады infoseq Команда:infoseq -only -help sw:mrga_bacsu 2> help.txt
Файл:help.txt