Описание программ



bash

Существует три потока:
0 - stdin - "стандартный поток ввода", содержит введенные нами команды. Также мы можем направить в него содержимое какого-либо файла и т. д. Для того, что бы перенаправить данные другого потока в stdin, используется символ "<".
1 - stdout - "стандартный поток вывода", содержит все результаты выполнения команд, то есть выводящиеся данные, кроме информации об ошибках и результатов выполнения команд с -help. Для того, чтобы перенаправить данные с других поток в этот, используются символы ">" (="1>") и ">>" (="1>>"):
При введении команды ls > iiii.txt (находясь в директории ~/Term2/Block1/Practices/Pr1, что мы проверили ранее pwd) мы записываем результаты команды ls в файл iiii.txt. Проверим содержимое файла командой less iiii.txt:


 YABJ.info
 aaa.txt 
  iiii.txt 
  infoseq.txt 

Команда была выполнена верно. Если мы хотим дописать результат выполнения какой-нибудь команды в тот же файл, используем символ ">>": Sequence (.fasta)


echo "Linux <3" >> iiii.txt
 less iiii.txt
 YABJ.info
 aaa.txt
 iiii.txt
 infoseq.txt
 Linux <3        

Но если мы захотим, к примеру, перейти из текущей директории в несуществующую директорию oops и перенаправить результат выполнения этой команды в файл, у нас ничего не выйдет:


cd /oops >> iiii.txt
-bash: cd: /oops: No such file or directory

То же самое произойдет, если мы захотим перенаправить, к примеру, результаты команды infoseq –help.
2 - stderr Это происходит потому, что ошибки и результаты подобных команд выводятся через третий поток – stderr. Для перенаправления инфомрации на этот поток используются команды “2>” и “2>>” соответственно (или >& в tcsh как для потока stdout, так и для stderr):


cd /oops 2> iiii.txt
more iiii.txt
-bash: cd: /oops: No such file or directory

Мы можем убедиться, что команды работают верно.

Для того, чтобы перенаправить поток stdout одной команды на stdin другой, можно использовать символ “|”:


 ls -l | find *.txt
aaa.txt
iiii.txt
infoseq.txt

Так мы из списка всех файлов данной директории выбрали командой find только те, которые имеют расширение txt.

Команда find:


Находясь в домашней директории, попытаемся найти все файлы, которые содержат в своем названии строчку “bash_history”. Мы выполняем поиск по имени и не знаем, в начале, конце или середине встречается эта строчка, поэтому команда будет выглядеть так:


find –name “*bash_history*”
./.bash_history


То есть файл находится по адресу …/taisniqm/.bash_history.
С помощью команды man ls изучив команду ls, мы увидим, что по умолчанию команда не выводит некоторые имена файлов, в том числе те, имена которых начинаются с точки. Чтобы отобразить и такие файлы, выполним такую команду:


ls –a
.              .lesshst          AtmProps.sk  gegl-0.0      public_html
..             .mailboxlist      Term1        grstyles.stl  template.cfg
.bash_history  .profile          Term2        iiii.txt      video
.bash_logout   .ssh              UserStl.sk   mail
.bashrc        Application Data  desktop.ini  music

Команда выполнена верно.

Для того, чтобы найти у себя файлы с пробелом в имени, воспользуемся практически такой же командой:


find –name “* *”
./video/Sample Pictures.lnk
./Application Data

Нашлись два таких файла. Переименуем их командой mv так, чтобы в названии не было пробела (пример для одного файла):


mv "Application Data" ApplicationData
find -name "* *"
./video/Sample Pictures.lnk

Некоторые команды

pwd сообщает полное имя текущей директории
ls показывает содержимое текущей директории
cp <имя файла 1> <имя файла 2> копирует файл 1 в файл 2
mv <имя файла 1> <имя файла 2> переименовывает файл
mv <имя файла> <имя поддиректории> перемещает файл в поддиректорию
rm <имя файла> уничтожает файл
mkdir <имя поддиректории> создает поддиректорию
cd <имя поддиректории> переход в поддиректорию
cd .. выход из поддиректории (переход в родительскую директорию)
more <имя файла> просмотр содержимого файла (клавишами "пробел" и "Enter")
man <команда> выдает подробную информацию о команде


Спецсимволы

Существуют символы, которые могут использоваться в ряде команд и поэтому воспринимаются интерпретатором командной строки bash :не буквально:

Для того, чтобы сообщить команде параметры, содержащие спецсимволы, используют кавычки.
‘ – в одинарных кавычках все спецсимволы воспринимаются буквально и не нуждаются ни в каком обозначении;
“ – в двойных кавычках символы только $ и ` воспринимаются как спецсимволы и их надо обозначать \$ и \` соответственно.




Infoseq

  1. Командой infoseq sw:yabj_bacsu > YABJ.info запишем информацию о нашем белке в одноименный файл. Содержимое файла:

    USA               Database Name        Accession  Type 
    sw-id:YABJ_BACSU  sw       YABJ_BACSU  P37552     P 
       
    Length Organism            Description 
    125    Bacillus subtilis   RutC family protein yabJ

  2. Командой infoseq –help >& infoseq.txt запишем информацию о команде в файл, причем выводится информация с двух потоков: stdout и stderr.
  3. Попробуем найти белки с тем же названием у других видов рода Bacillus: infoseq sw:yabj_bac*.
    Таких не оказалось. Результат для примера rs3 (infoseq sw:rs3_bac*) в файле rs3.txt. Результаты вывода информации при помощи «1>», «2>» и «>&» находятся в том же файле.
  4. Информация о команде infoseq представлена в виде следующей таблицы:

    -outfile

    outfile

    аналогична символу “>”, записывает результаты команды в файл, имя которого идет после (stdout)

    infoseq sw:yabj_bacsu –outfile outfile.txt

    Display basic information about sequences

    -html

    boolean

    дает возможность вывести результаты в виде html-таблицы

    infoseq sw:yabj_bacsu –html >& html.txt

    -[no]columns

    boolean

    представляет информацию в виде аккуратных столбцов

    infoseq sw:yabj_bacsu –columns >& columns.txt

    infoseq sw:yabj_bacsu –nocolumns >& nocolumns.txt

    -delimiter

    string

    разделяет данные введенным разделителем

    infoseq sw:yabj_bacsu -nocolumns –delimiter “(_)” >& delimiter.txt

    -only

    boolean

    выводит только те данные, которые мы говорим

    см. ниже

    -[no]heading

    boolean

    [не] показывать заголовки столбцов

    infoseq sw:yabj_bacsu –heading >& heading.txt

    infoseq sw:yabj_bacsu –noheading >> heading.txt

    -usa

    boolean

    только с –only (USA последовательности)

    infoseq sw:yabj_bacsu –only –usa >& only.txt

    -database

    boolean

    только с –only (база данных)

    infoseq sw:yabj_bacsu –only –database >> only.txt

    -name

    boolean

    только с –only (имя)

    infoseq sw:yabj_bacsu –only –name >> only.txt

    -accession

    boolean

    только с –only

    infoseq sw:yabj_bacsu –only –accession >> only.txt

    -gi

    boolean

    показать колонку gi

    infoseq sw:yabj_bacsu –gi >& gi.txt

    -seqversion

    boolean

    показать колонку версии секвенирования

    infoseq sw:yabj_bacsu –seqversion >& seq.txt

    -type

    boolean

    только с –only (тип)

    infoseq sw:yabj_bacsu –only –type >> only.txt

    -length

    boolean

    только с –only (длина)

    infoseq sw:yabj_bacsu –only –length >> only.txt

    -pgc

    boolean

    только с –only

    infoseq sw:yabj_bacsu –only –pgc >> only.txt

    -organism

    boolean

    только с –only (организм)

    infoseq sw:yabj_bacsu –only –organism >> only.txt

    -description

    boolean

    только с –only (описание)

    infoseq sw:yabj_bacsu –only –description >> only.txt

    -help

    boolean

    вызов информации о команде

    infoseq –help

    infoseq.info