Главная | Семестры | Проекты | Заметки | О себе | Полезные ссылки |
РАЗДЕЛ 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 |