Учебная страница курса биоинформатики,
год поступления 2021
Упражнения для выполнения в классе
Упражнения обязательно нужно выполнить полностью. Если не успели в классе, то проделайте дома. Но в отчете их отражать не нужно.
Создать папку ~/term1/pr4, дальше все делайте в этой папке.
Скопировать файл /mnt/data/y21/text, который находится на удаленной машине calc.kodomo.fbb.msu.ru, в папку ~/term1/pr4 на kodomo. У вас есть доступ к calc.kodomo.fbb.msu.ru по протоколам SSH (SFTP и SCP) с теми же логином/паролем, что и на kodomo. Но имя calc.kodomo.fbb.msu.ru знают только некоторые компьютеры внутри сети факультета. Поэтому подключиться с нему вы сможете только через kodomo.
- Определить размер этого файла в байтах.
- Убедиться, что это текстовый файл. Определить, каким образом закодированы концы строк в файле.
- Просмотреть содержимое файла.
С помощью текстового редактора nano поменять кодировку концов строк на родную для kodomo и убедиться, что это сработало.
С помощью nano создать файл text.txt, содержащий несколько любых строк текста. Сохранить файл с кодировкой строк в формате Windows. Убедиться, что кодировка концов строк действительно правильная.
Создать папку temp и скопировать в неё файлы из /P/y21/term1/strange_f1les, короткие имена которых содержат либо строчную m, либо заглавную Z, либо цифру 6 (одной командой).
- Перейти в папку и посмотреть сколько файлов скопировалось. Должно быть 6. Удалите папку temp вместе с содержимым, если все прошло успешно.
С помощью echo определить, во что bash превращает {a,b,c} внутри аргументов перед запуском программы.
Сколько аргументов получит программа echo при выполнении команды echo 1{a..f}2?
Как сделать так, чтобы команда echo {1,2,3} вернула просто {1,2,3}? Сколько символов для этого нужно добавить в команду? Можно ли обойтись одним символом?
Как с помощью команды echo вывести короткие имена файлов и папок внутри текущей директории?
- А теперь то же самое, но вместе со скрытыми файлами и папками (их имена начинаются на точку).
- А как вывести только те короткие имена, которые не короче 4 символов? (надо чуть-чуть подумать)
После выполнения упражнений можете переходить к домашним заданиям.
Задания практикума 4
Не нужно делать wiki-страницу с "отчетом". Проверять буду только файлы на kodomo. При записи в очередь вместо URL указывайте прочерк.
Внимание, некоторые пункты заданий (все, где это возможно) будут проверяться автоматически! Поэтому внимательно отнеситесь к именам, расположению и содержанию файлов. Если автоматические тесты не будут пройдены, придется переделывать с потерей баллов. Содержательная часть проверяется только в отчетах, прошедших автоматическую проверку.
Мягкий дедлайн – 23:59 1 октября, жесткий дедлайн – 01:00 8 октября. После мягкого дедлайна штраф 0.5 балла, после жесткого – 2 балла.
1. Копирование файлов по сети
Цель задания: научиться использовать SFTP (или SCP) клиент.
Вам нужно загрузить в папку ~/term1/credits свою фотографию в формате JPEG с домашнего компьютера. Назвать файл нужно photo.jpg. Фотография не будет общедоступной, её смогут увидеть только преподаватели. Нужно это для увеличения вероятности того, что мы начнем узнавать вас в лицо. Но если вы все-таки по какой-то причине не хотите нам показывать свою фотографию, то можете положить любую (в рамках приличия ) картинку в формате JPEG. Баллы снимать за это не будем.
Если у вас есть доступ к какому-то компьютеру по SSH, то, как правило, доступны еще протоколы удаленного копирования файлов SCP и SFTP. Для работы с этими протоколами в Windows 10 и всех современных Unix-подобных системах существуют встроенные консольные клиенты scp и sftp.
scp работает по аналогии с cp, но понимает дополнительный вид имен файлов – имена на удаленных машинах. Пример: user@host.na.me:file1 – путь к файлу file1, который лежит в домашней папке пользователя user на удаленной машине с доменным именем domain.na.me. В качетве имени файла можно указывать любой путь относительно домашней папки пользователя, или абсолютный путь к файлу (тогда сразу после : будет /). Совет: не пытайтесь скопировать файл с одной удаленной машины на другую удаленную машину (т.е. использовать расширенный синтаксис имени файла сразу и в качестве SOURCE, и в качестве DEST). В теории это возможно, но только при подключении по SSH в режиме без паролей, а вы так не умеете.
sftp работает иначе. Это интерактивная программа. После её запуска вы окажетесь в сеансе связи по SFTP. Вам будут доступны команды для перемещения одновременно на удаленной и локальной машинах (cd и lcd), для определения текущей папки (pwd и lpwd) и получения списка файлов (ls и lls). И главное, в вашем распоряжении команды put и get. Первая позволяет скопировать файл из текущей папки на локальном компьютере в текущую папку на удаленном, а вторая – в обратном направлении. Для выхода из сеанса SFTP предусмотрена команда exit (или quit, или bye, это синонимы). А команда help выводит список доступных команд с кратким описанием, или более подробное описание конкретной команды, если указать её первым аргументом.
Советую попробовать обе программы и выбрать подход, который вам ближе. Самое важное при использовании sftp и scp – определиться, на каком из компьютеров их запускать! Помните, что вам нужна возможность подключения к удаленному компьютеру по SSH. Поэтому вы не сможете скопировать файл на kodomo со своего домашнего компьютера, запустив программу на kodomo. У вашего компьютера, скорее всего, нет доменного имени (или публичного IP), и на вашем компьютере не запущен SSH-сервер, необходимый для подключения. Поэтому для копирования файла с домашнего компьютера на kodomo запускать sftp/scp нужно на домашнем компьютере, а не на kodomo.
2. Использование файловых масок
Цель задания: научиться составлять маски имен файлов и экранировать специальные символы. И еще раз потренировать операции с файлами и автодополнение имен.
Вам нужно скопировать все файлы, короткие имена которых содержат символ *, из папки /P/y21/term1/even_m0re_strange_files в папку ~/term1/pr4. В названии папки есть несколько опечаток (даже не пытайтесь их исправлять), чтобы вы не копировали адрес, а использовали автодополнение имен на <Tab>.
Один из скопированных вами файлов содержит русскую букву у вместо английской y. Ваша задача – переместить этот файл в папку ~/term1/credits с изменением короткого имени на pr4.txt. Не нужно предварительно пытаться определить, что это за файл. Всё в этом абзаце нужно сделать одной командой (важно, что такой файл один, это гарантируется, если вы скопировали правильные файлы).
Настоятельно рекомендую все проделать честно и самостоятельно, чтобы действительно разобраться в файловых масках. Аналогичное задание будет на мини-контрольной в начале следующего занятия и в большой контрольной в конце блока.
3. Редактирование файлов
Цель задания: научиться использовать консольный текстовый редактор. А заодно познакомиться с программой file и потренироваться в чтении мануалов.
Первым делом вам нужно прочитать раздел DESCRIPTION справочной страницы man file. Но в этот раз не нужно будет пересказывать его целиком (там довольно много всяких технических деталей). Нужно будет ответить на приведенные ниже вопросы. Ответы должны быть полные, но лаконичные. Не нужно по каждому пункту писать сочинение.
Ответы нужно записать в файл ~/term1/credits/file-man.txt с помощью консольного текстового редактора (рекомендую nano, но можете использовать mcedit или vim). Файл нужно сохранить с кодировкой концов строк в формате старых Mac OS, т.е. символом CR (это будет проверено автоматически).
Ответ на каждый вопрос не должен быть больше одного абзаца текста. Ответы должны идти в том же порядке, что и вопросы. Ответы нужно разделить одной пустой строкой.
Каким образом программа file определяет формат (тип) файла?
- Как в определении формата программой участвует расширение (часть короткого имени после последней точки)?
Возможно ли научить file узнавать новые форматы файлов, или для этого придется переписывать его код?
Пытается ли file определить, на каком "человеческом" языке (например, русский, английский, клингонский) написан текстовый файл?
- (дополнительный) Умеет ли программа определять кодировку символов текстового файла, какие здесь есть ограничения?
Если чтения мануала оказалось недостаточно для ответа на эти вопросы, можете поискать информацию в других источниках. Но, на самом деле, вся необходимая информация присутствует в разделе DESCRIPTION.