Kodomo

Пользователь

Учебная страница курса биоинформатики,
год поступления 2018

Практикум 6. Bash

Задания в финальном варианте, можете приступать к выполнению.

Формат отчета: текстовый файл на kodomo ~/term2/linux/hw_pr6.txt (~ – ваша домашняя директория) (задания 1-4) и html страничка на сайте в произвольном формате (задание 5).

Файл будет проверяться автоматически (ну или полуавтоматически). Поэтому любая опечатка в названии файла, директорий и команд приведет к отсутствию зачета за практикум.

Обязательно запишитесь в очередь, номер практикума – 6, адрес файла в форме указывать не надо.

Дедлайны: 02:00 a.m. 27 марта (мягкий) и 02:00 a.m. 03 апреля (жесткий).

Выполнение команд bash

0. Подключитесь к серверу kodomo.fbb.msu.ru

Для подключения к серверу kodomo.fbb.msu.ru из:

Windows:

Воспользуйтесь программой PuTTY.

Host Name: kodomo.fbb.msu.ru
Port: 22
Connection type: SSH

Дальше надо будет ввести логин и пароль Вашего аккаунта на kodomo.

GNU/Linux, Mac OS, etc:

Есть версии PuTTY и для операционных систем семейства Unix. Кроме того, можно воспользоваться встроенным клиентом ssh:

ssh <username>@kodomo.fbb.msu.ru

1. Создайте директорию ~/term2/block2/pr6 и перейдите в нее

Сначала осмотритесь. Команда pwd покажет вам, в какой вы директории. Команда ls покажет список файлов и поддиректорий в этой директории.

Используйте команды mkdir и cd. Например, так:

   1 mkdir term2  # в текущей директории создаем поддиректорию term2
   2 ls           # проверяем, что получилось
   3 cd term2     # переходим в term2; т.е., делаем term2 текущей (рабочей) директорией
   4 pwd          # проверяем, что получилось
   5 mkdir block2 # и так далее
   6 ...

Чтобы не тратить время на набор лишних символов, чаще используйте клавишу <Tab> и стрелочки вверх и вниз. Можно создать все нужные директории за один раз, для этого изучите man mkdir и обратите внимание на опцию -p.

2. Скопируйте файлы с расширением txt из директории /P/y18/term2/block2/some_f1les_192918763481 в директорию pr6

Для копирования файлов воспользуйтесь командой cp. Названия файлов и директорий преднамеренно сделаны нечитаемыми, чтобы вы научились использовать <Tab> и маски имен файлов.

В простейшем виде синтаксис команды выглядит следующим образом:

   1 cp <файл> <имя копии файла>

Но есть и второй вариант, который вам больше подойдет:

   1 cp <файл1> <файл2> ... <файлn> <целевая папка>

Опять же, сначала изучите man cp, чтобы не делать много нудной ненужной работы. Более того, вводить имена по одному очень неудобно. Оптимизируйте работу при помощи файловых масок.

Проверьте, что получилось (команды ls и less).

Если случайно вы скопировали не то, что нужно, то удалите лишние файлы при помощи команды rm. Не используйте опцию -r без необходимости! И в целом будьте осторожны, корзины и операций восстановления в файлов в GNU/Linux нет. Для перестраховки можете использовать rm -i или rm -I, предварительно изучив, что эти опции означают (ага, man rm).

3. Определите уникальные строки файлов из предыдущего задания

В задании подразумевается, что вы должны написать команду, которая выведет все строки, хоть раз встретившиеся хоть в одном из этих файлов, притом каждую строку по одному разу. Все это можно сделать с помощью одной команды. Однако интуитивно проще использовать конвейер из трех команд: cat, sort, uniq. Конвейер, он же "пайп (pipe)" создается с помощью символа |, например так:

   1 cat filename.txt | sort

Это перенаправление STDOUT команды слева от | в STDIN команды справа от этого символа.

Разберитесь, зачем здесь вообще sort (подсказка, без него у вас ничего не получится). То есть да, опять man, особое внимание обратите на man uniq (внимательно дочитайте до конца).

4. Создайте файл с отчетом hw_pr6.txt

Файл отчета должен содержать следующие строки:

Первая строка: "Absolute path to pr6:" (без кавычек)

Используйте команду echo или printf, чтобы вывести заданную строку в консоль, и перенаправлением STDOUT в заданный файл символом ">", например:

   1 echo "строка" > filename.txt

Вторая строка: сам абсолютный путь в папку pr6.

Используйте pwd для получения пути, находясь в нужной папке, и перенаправление ">>" для дописывания в конец файла.

Третья строка: команда, которую вы использовали для копирования файлов по маске. Проще всего это сделать, долистав в истории команд до нужной и отредактировав её, чтобы вместо исполнения записать её в файл. Например, если вы исполняли команду

   1 cp very_long_path_to_files target_dir

то можно быстро отредактировать её, превратив в

   1 echo 'cp very_long_path_to_files target_dir' > filename.txt

Четвертая строка: команда, при помощи которой вы получили уникальные строки

Пятая строка и далее: сами эти уникальные строки в том виде, в котором вам их выдала предыдущая команда.

Проверьте содержимое файла командой less (выход из просмотра файла – клавиша "q"). Если что-то получилось неправильно, придется переделать сначала =( Конечно, можете контролировать заполнение файла с помощью less по ходу дела.

Для штатного выхода из bash выполните команду exit

Если команда exit не выполнена, а вы закрываете окно, то список выполненных за сеанс команд не запоминается. Значит, при следующем заходе команда history не вспомнит об этих командах.

Изучение руководств команд bash

С помощью команды man изучите руководства одной или нескольких команд из списка: ls, cut, tr, paste. Можете выбрать любую другую команду, про которую не рассказывали на занятии, и которой нет в домашних заданиях. Не берите grep, sed и команды из EMBOSS.

Результатом изучения должна быть страничка на сайте с описанием 5 любых опций (всего, не для каждой команды) в произвольной форме. Постарайтесь найти опции, которые покажутся Вам интересными или полезными. Нельзя описывать опции, которые Вы и так должны знать: ls -l -a -A.

Прежде, чем описывать опции команд, надо написать, что эта команда вообще делает, и для чего может быть полезна (за исключением ls, про нее и так должны знать), это описание засчитывается за одну опцию. У команды paste, на мой взгляд, нет полезных для Вас опций, для нее можно просто привести описание.

Опции, которые Вы опишите на станичке, могут быть использованы против Вас: про них могут спросить на коллоквиуме в конце блока!