Kodomo

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

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

Задания практикума 3

Окончательная версия заданий, можно приступать к выполнению.

Будьте внимательны при записи в очередь! Номер практикума 3. Есть ощущение, что некоторые продолжают выбирать номер наугад).

И да, записываться в очередь можно только после выполнения всех обязательных заданий.

Мягкий дедлайн – 23:59 24 сентября, жесткий дедлайн – 01:00 1 октября. После мягкого дедлайна штраф 0.5 балла, после жесткого – 2 балла.

0. Создание wiki-страницы с отчетом

Отчет за практикум 3 должен располагаться на отдельной странице в системе wiki на kodomo. Это должна быть страница с адресом https://kodomo.fbb.msu.ru/wiki/Users/<your_login>/pr3 .

Чтобы создать новую страницу вики, введите в браузер адрес несуществующей страницы. В появившемся диалоге выберите "создать новую страницу". Что делать дальше вы уже знаете. Не забудьте предварительно залогиниться в систему wiki!

Для порядка неплохо было бы поставить ссылку на новую страницу со своей домашней страницы. Для этого в коде домашней страницы напишите [[/pr3|текст ссылки]].

1. Получение справки

Цель задания: познакомиться с форматом справочных страниц man, начать понимать язык, которым эти страницы написаны.

Прочитать, перевести, понять и пересказать своими словами главу DESCRIPTION из справочной страницы man одной из команд на выбор: bash, rm, ls (до начала описания опций + 3 любые опции на выбор), cp (до опций + описание -R, -u, -t), mv (до опций + -u, -t, -v).

Вы должны понимать значение каждого слова, которое написали! Если не получается разобраться с какой-либо командой – спрашивайте преподавателей.

Ваш пересказ описания выбранной команды нужно поместить на страницу отчета (см. задание 0) под подходящим заголовком. Копировать английскую версию не нужно!

Чтобы получить справку, используйте команду man. Она принимает первым аргументом название команды и выдает про нее справку. Выйти из просмотра справки можно на q. Перемещаться можно с помощью стрелок, пробела, Enter, Page Up, Page Down и т.д. На самом деле man открывает справку в просмотрщике less, поэтому работают все его фичи (поиск и перемещение, нумерация строк и т.д.).

Полезно знать, что у man тоже есть справочная страница, так что man man вполне работает.

Справка написана весьма специфическим языком. Сначала вам, скорее всего, будет довольно трудно её понимать. Но когда вы поймете её структуру и нахватаетесь терминов, то станет намного проще. Это приходит с опытом, поэтому читайте больше справочных страниц man. Если не получается разобраться со значением каких-то фраз – спрашивайте преподавателей!

2. Операции с файлами

Цель задания: освоить основные операции с файлами, понять базовую структуру файловой системы.

Задание включает несколько этапов:

  1. Создать папки ~/term1/pr3 и ~/term1/credits .

  2. Из папки /P/y21/term1/strange_f1les скопировать в папку ~/term1/pr3 файлы, названия которых начинаются на строчную латинскую букву.

  3. Определить размер каждого файла, а потом переименовать файлы таким образом, чтобы самый маленький по размеру файл назывался file1.txt, следующий по размеру file2.txt, и т.д.
  4. Переместить полученные файлы в ~/term1/credits .

Предполагается, что каждый файл копировать/перемещать/переименовывать вы будете по отдельности (про файловые маски расскажу на следующем занятии). Упражнение умышленно нудное и однообразное. Оно рассчитано на то, что вы начнете вырабатывать привычку использования клавиши Tab и стрелочек.

На странице с отчетом можете никак не отражать это задание, проверять будем только наличие файлов в нужном месте.

Команда для копирования cp, для перемещения и переименовывания mv. Определить размер файла вам поможет du или ls. Как получать справку по командам вы уже знаете.

Крайне рекомендую пользоваться автоподстановкой названий файлов и команд на Tab и Tab Tab, обязательно разберитесь, как это работает! Кроме того, очень полезным бывает подстановка предыдущих команд из истории с помощью стрелок вверх и вниз. Набранную/подставленную команду можно редактировать. Но курсор при редактировании можно перемещать только с помощью клавиатуры (стрелки влево и вправо, Home, End и некоторые другие). Мышка вам не поможет, можете про нее временно забыть.

3. Поведение команд cp и mv

Цель задания: разобраться, как ведут себя cp и mv в зависимости от количества и типа аргументов.

Вы уже знаете (если были на занятии), что у cp и mv есть два режима работы. В первом режиме команды получают 3 и более аргументов (если не считать arg0). Если последний аргумент является именем существующей папки, то файлы (и папки в случае mv), соответствующие всем остальным аргументам, копируются/перемещаются в эту папку. В противном случае программа завершается с ошибкой. Во втором режиме команды получают 2 аргумента (опять без arg0), и их поведение зависит от того, чем эти аргументы являются. Каждый из аргументов может быть либо именем существующего файла, либо именем существующей папки, либо не является именем существующего файла/папки. Ваша задача – экспериментальным путем установить поведение программ в каждом из 3*3=9 вариантов. Для экспериментов советую создать папку ~/term1/pr3/test, перейти в неё и все эксперименты проводить только внутри этой папки. Пустые папки вы создавать уже умеете, а файлы можете скопировать из предыдущего задания. После завершения экспериментов папку ~/term1/pr3/test следует удалить вместе со всем содержимым. Папки ~/term1/pr3 и ~/term1 удалять не надо!

По результатам эксперимента вам нужно создать на страничке с отчетом таблицу следующего вида (одну ячейку я уже заполнил):

mv arg1 arg2

arg1 файл

arg1 папка

arg1 не существует

arg2 файл

arg2 папка

arg2 не существует

ошибка

Достаточно привести в отчете только таблицу для программы mv. Но провести эксперименты советую с обеими программами.

Далее следует wiki-код, который позволяет вставить на страничку таблицу необходимого вида. Как заполнять в ней ячейки, догадаетесь самостоятельно)

|| `mv arg1 arg2` || `arg1` файл || `arg1` папка || `arg1` не существует ||
|| `arg2` файл || || || ||
|| `arg2` папка || || || ||
|| `arg2` не существует || || || ошибка ||

2021/1/pr3 (последним исправлял пользователь is_rusinov 2021-09-17 20:11:56)