#pragma css /css/2024.css
<<BI>>

= Упражнения в классе =

Подключитесь к серверу kodomo по протоколу SSH.

== Специальные символы ==

 1. Создайте папку `~/term1/pr4`, перейдите в нее. Не покидайте эту папку при выполнении упражнений, если в них не указано обратного.
 1. Создайте папку `a`, из папки `/P/y24/term1/Tab-and-Arrows_are_your_friends` скопируйте все файлы, содержащие строчную букву `a` в коротком имени, в новую папку. Используйте файловую маску для копирования!
 1. Используя команду `echo` и файловую маску, определите, сколько файлов в папке `a` имеет более одной `a` в коротком имени. Для этого надо составить маску, которая будет соответствовать имени, в котором есть две буквы `a`, до, после и между которыми может быть любое количество любых символов.
 1. Сколько в папке `a` файлов, короткие имена которых заканчиваются на `nine`? Удалите их все одной командной.
 1. Создайте папку `you` и скопируйте в нее из папки `/P/y24/term1/Tab-and-Arrows_are_your_friends` все файлы, содержащие в коротком имени одну из букв `y`, `o`, `u`.
 1. Сколько в папке `/P/y24/term1/Tab-and-Arrows_are_your_friends` файлов, которые начинаются на одну из букв от `r` до `z`?
 1. Есть ли среди файлов в папке `you` такие, в коротких именах которых встречаются две буквы `a` через один любой другой символ? А через два любых символа?
 1. Есть ли в папке `/P/y24/term1/name_your_file_in_english_and_without_spaces` файлы с именем из одного символа? А из двух? А из трех?
 1. Есть ли в папке `/P/y24/term1/name_your_file_in_english_and_without_spaces` файлы, кончающиеся на арабскую цифру? А на две цифры?
 1. В папке `you` создайте две копии файла `glycine` с короткими именами `???cine` и `gl*e` (по очереди).
 1. Создайте папку `strange` и переместите в нее два файла, полученные в предыдущем пункте.
 1. (сложно) В папке `strange` создайте копию `gl*e` c коротким именем `gl'ycin'e`. Переименуйте файл `strange/gl*e`, чтобы он имел короткое имя `gl'*'e`. С помощью `echo` и правильной файловой маски выведите имена всех файлов из папки `strange`, убедитесь, что все предыдущие операции прошли успешно.
 1. С помощью '''одной команды''', скопируйте в папку `strange` из папки `/P/y24/term1/Tab-and-Arrows_are_your_friends` все файлы, которые начинаются на `gl` или `asp`.
 1. С помощью одной команды удалите все файлы из подпапок текущей папки, короткие имена которых начинаются на `g` и заканчиваются на `e`.
 1. С помощью одной команды удалите все оставшиеся файлы из подпапок, а потом еще одной командой удалите и все подпапки.
 1. (доп.) Сколько аргументов получит на вход программа `cp` при выполнении команды `cp a{1,2,3}m`. А при выполнении команд `cp {a..f}` и `cp {a..f}{1,2,3}`?
 1. (доп.) Перейдите в домашнюю папку. Напишите команду `echo` с такими аргументами, чтобы в выдаче оказались короткие имена всех файлов и папок внутри домашней, включая скрытые (т.е. такие, короткие имена которых начинаются с точки).
 1. (доп.) Находясь в домашней папке, напишите команду, которая выведет через пробел короткие имена всех скрытых файлов или папок, содержащие не менее трех символов (т.е. все, кроме `.` и `..`).

== Редактирование в терминале ==

 1. Перейдите в папку `~/term1/pr4`. Запустите текстовый редактор `nano` без указания имени редактируемого файла (команда `nano` без аргументов).
 1. Вызовите встроенную справку редактора (`Ctrl-G`) и внимательно прочитайте первые два абзаца текста. Теперь вы должны понимать обозначения сочетаний клавиш, указанных в нижнем меню окошка `nano`. Закройте справку (Close).
 1. Наберите несколько строк произвольного текста (приличного!) и попробуйте записать его в файл (Write Out).
 1. Если вы правильно выбрали комбинацию клавиш, вы окажетесь в меню сохранения файла. В этом меню тоже есть своя справка, прочитайте первые два абзаца. Выйдите из справки и разберитесь, где указывается имя файла, который вы сохраняете. Сохраните свой текст в файл с коротким именем `text.txt`.
 1. Закройте `nano` (Exit). С помощью пейджера `less` убедитесь, что файл создался и в него записан ваш текст.
 1. Узнайте, что программа `file` выдает про созданный файл.
 1. Откройте файл для редактирования с помощью `nano`. Программа `nano` принимает имя файла для редактирования первым аргументом.
 1. Измените текст, сохраните изменения и убедитесь, что файл `text.txt` изменился.
 1. Откройте файл с помощью `nano`, внесите какие-нибудь изменения, но теперь выйдите без сохранения этих изменений в тексте.
 1. С помощью `nano` измените формат переносов строк в своем файле на DOS. Это можно сделать в меню сохранения. Если не можете сообразить как, прочитайте еще раз встроенную в `nano` справку по этому меню.
 1. Что теперь выдает программа `file` про ваш файл? Можно ли по выдаче `file` определить формат переносов строк текстового файла?
 1. Поменяйте формат переносов строк на устаревший Mac. Как изменилась выдача `file`? Верните файлу формат переносов строк, используемый в операционной системе kodomo.

== Удаленное копирование (SFTP) ==
 1. Перейдите в домашнюю папку на локальном компьютере.
 1. С помощью SFTP-клиента подключитесь к серверу kodomo от имени своего пользователя, используя порт `22221`.
 1. Скопируйте файл `/etc/hostname` '''с локального компьютера''' в папку `/tmp/pr4` на kodomo, присвоив файлу свой логин в качестве короткого имени. Файл `/tmp/pr4/hostname` уже существует, и у вас не хватит прав, чтобы его заменить. Поэтому не получится сначала скопировать файл, а потом переименовать, все надо осуществить за одну операцию.
 1. Убедитесь, что файл появился, и завершите SFTP-сессию.
 1. Зайдите по SSH на kodomo и посмотрите файл с помощью `less`.

= Обязательные задания =

Мягкий дедлайн – 01:00 AM 4 октября, жесткий дедлайн – 01:00 AM 11 октября. 
Проверять буду файлы в папке `~/term1/credits`, при записи на проверку вместо URL указывайте прочерк.

== 1. Копирование файлов на удаленный компьютер ==

Цель задания: научиться использовать SFTP (или SCP) клиент.

Вам нужно загрузить в папку `~/term1/credits` свою фотографию в формате JPEG с домашнего компьютера. Назвать файл нужно Xxxxxx_photo.jpg, где Xxxxxx -- ваша фамилия латинскими буквами. Фотография не будет общедоступной, её смогут увидеть только преподаватели. Нужно это для увеличения вероятности того, что мы начнем узнавать вас в лицо. Но если вы все-таки по какой-то причине не хотите нам показывать свою фотографию, то можете положить любую (в рамках приличия :) ) картинку в формате JPEG. Баллы снимать за это не будем.

== 2. Копирование файлов с удаленного компьютера ==

Цель задания: научиться использовать SFTP (или SCP) клиент.

 i. В папке `/P/y24/term1/images` найдите файл, названный вашим пользовательским именем, и скопируйте его в директорию `~/term1/pr4`. 
 i. Переименуйте его в `aminoacid_formula.png`. Можно задать новое имя сразу во время копирования, т.е. в предыдущей команде.
 i. Переместите переименованный файл в директорию `~/term1/credits`.
 i. Cкопируйте файл на свой компьютер с помощью SFTP или SCP клиента.
 i. Откройте файл на своём компьютере какой-нибудь программой просмотра изображений, определите, формула какой аминокислоты изображена.

== 3. Редактирование файлов ==

Цель задания: научиться использовать консольный текстовый редактор.

Вам нужно создать файл `~/term1/credits/aminoacid_description.txt` с помощью консольного текстового редактора (рекомендую `nano`, но можете использовать `mcedit` или `vim`). Файл должен быть сохранен с использованием переносов строк в формате Unix, используемом во всех Unix-подобных операционных системах, включая Linux, MacOS, BSD и т.д. (т.е. с помощью одного байта LF).

В файле должно быть указано русское и английское название аминокислоты, изображенной на скопированной вами картинке; её трехбуквенное и однобуквенное обозначения (на английском). Далее должно следовать краткое описание физико-химических свойств аминокислоты и/или её биологических особенностей. Много текста писать не нужно, 2-3 предложения. Но это должны быть предложения, а не куски фраз!

== 4. Использование файловых масок ==

Цель задания: научиться составлять маски имен файлов и экранировать специальные символы. И еще раз потренировать операции с файлами и автодополнение имен.

Сначала определите, какие пять разных букв встречаются в вашем логине раньше остальных по тем же правилам, что в [[../pr3|практикуме 3]].
Вам нужно скопировать все файлы, короткие имена которых содержат любую из этих букв (не обязательно одну) до символа `*`, сама звездочка в коротком имени тоже обязательно должна быть. Файлы надо копировать из папки `/P/y24/term1/do-NOT-type-Without_autocomplete` в папку `~/term1/credits/strange_files` (папку предварительно нужно создать).

{{{#!wiki note orange
Настоятельно рекомендую все проделать честно и самостоятельно, чтобы действительно разобраться в файловых масках. Аналогичное задание будет на мини-контрольной в начале следующего занятия и в большой контрольной в конце блока.
}}}