Упражнения в классе
Подключитесь к серверу kodomo по протоколу SSH.
Специальные символы
Создайте папку ~/term1/pr4, перейдите в нее. Не покидайте эту папку при выполнении упражнений, если в них не указано обратного.
Создайте папку a и скопируйте в нее все файлы, содержащие строчную букву a в коротком имени, из папки /P/y25/term1/Tab-and-Arrows_are_your_friends. Используйте файловую маску для копирования!
Используя команду echo и файловую маску, определите, сколько файлов в папке a имеет более одной a в коротком имени. Для этого надо составить маску, которая будет соответствовать имени, в котором есть две буквы a, до, после и между которыми может быть любое количество любых символов.
Сколько в папке a файлов, короткие имена которых заканчиваются на nine? Удалите их все одной командой.
Создайте папку you и скопируйте в нее из папки /P/y25/term1/Tab-and-Arrows_are_your_friends все файлы, содержащие в коротком имени одну из букв y, o, u.
Сколько в папке /P/y25/term1/Tab-and-Arrows_are_your_friends файлов, которые начинаются на одну из букв от r до z?
Есть ли среди файлов в папке you такие, в коротких именах которых встречаются две буквы a через один любой другой символ? А через два любых символа?
Есть ли в папке /P/y25/term1/name_your_file_in_english_and_without_spaces файлы с именем из одного символа? А из двух? А из трех?
Есть ли в папке /P/y25/term1/name_your_file_in_english_and_without_spaces файлы, кончающиеся на арабскую цифру? А на две цифры?
В папке you создайте две копии файла glycine с короткими именами ???cine и gl*e (по очереди).
Создайте папку strange и переместите в нее два файла, полученные в предыдущем пункте.
(сложно) В папке strange создайте копию gl*e c коротким именем gl'ycin'e. Переименуйте файл strange/gl*e, чтобы он имел короткое имя gl'*'e. С помощью echo и правильной файловой маски выведите имена всех файлов из папки strange, убедитесь, что все предыдущие операции прошли успешно.
С помощью одной команды, скопируйте в папку strange из папки /P/y25/term1/Tab-and-Arrows_are_your_friends все файлы, которые начинаются на gl или asp.
С помощью одной команды удалите все файлы из подпапок текущей папки, короткие имена которых начинаются на g и заканчиваются на e.
- С помощью одной команды удалите все оставшиеся файлы из подпапок, а потом еще одной командой удалите и все подпапки.
Дополнительные упражнения (на освоение необязательных тем):
(доп.) Сколько аргументов получит на вход программа ls при выполнении команды ls a{1,2,3}m. А при выполнении команд ls {a..f} и ls {a..f}{1,2,3}?
(доп.) Перейдите в домашнюю папку. Напишите команду echo с такими аргументами, чтобы в выдаче оказались короткие имена всех файлов и папок внутри домашней, включая скрытые (т.е. такие, короткие имена которых начинаются с точки). В выдаче будут отсутствовать папки . и .., это нормально. Не так давно умолчательной в bash стала настройка, которая исключает эти папки из списка подходящих даже под маски, начинающиеся на точку.
(доп.) Находясь в домашней папке, напишите команду, которая выведет через пробел (т.е. с помощью echo, а не ls) короткие имена всех скрытых файлов или папок, содержащие не более пяти символов (включая первую точку). Аккуратно выполнить это упражнение (чтобы не выводились несработавшие маски) можно только с помощью расширенных масок (extglob), которые сильно за рамками курса.
Редактирование в терминале
Перейдите в папку ~/term1/pr4. Запустите текстовый редактор nano без указания имени редактируемого файла (команда nano без аргументов).
Вызовите встроенную справку редактора (Ctrl-G) и внимательно прочитайте первые два абзаца текста. Теперь вы должны понимать обозначения сочетаний клавиш, указанных в нижнем меню окошка nano. Закройте справку (Close).
- Наберите несколько строк произвольного текста (приличного!) и попробуйте записать его в файл (Write Out).
Если вы правильно выбрали комбинацию клавиш, вы окажетесь в меню сохранения файла. В этом меню тоже есть своя справка, прочитайте первые два абзаца. Выйдите из справки и разберитесь, где указывается имя файла, который вы сохраняете. Сохраните свой текст в файл с коротким именем text.txt.
Закройте nano (Exit). С помощью пейджера less убедитесь, что файл создался и в него записан ваш текст.
Узнайте, что программа file выдает про созданный файл.
Откройте файл для редактирования с помощью nano. Программа nano принимает имя файла для редактирования первым аргументом.
Измените текст, сохраните изменения и убедитесь, что файл text.txt изменился.
Откройте файл с помощью nano, внесите какие-нибудь изменения, но теперь выйдите без сохранения этих изменений в тексте.
С помощью nano измените формат переносов строк в своем файле на DOS. Это можно сделать в меню сохранения. Если не можете сообразить как, прочитайте еще раз встроенную в nano справку по этому меню.
Что теперь выдает программа file про ваш файл? Можно ли по выдаче file определить формат переносов строк текстового файла?
Поменяйте формат переносов строк на устаревший Mac. Как изменилась выдача file? Верните файлу формат переносов строк, используемый в операционной системе kodomo.
Удаленное копирование (SFTP)
Запускать sftp нужно на локальном компьютере! Запустив SFTP-клиент на kodomo вы сможете подключиться только к какому-нибудь другому SSH-серверу (SFTP работает поверх SSH).
- Перейдите в домашнюю папку на локальном компьютере.
С помощью SFTP-клиента подключитесь к серверу kodomo от имени своего пользователя, используя порт 22221.
Скопируйте файл /etc/hostname с локального компьютера в папку /tmp/pr4 на kodomo, присвоив файлу свой логин в качестве короткого имени. Файл /tmp/pr4/hostname уже существует, и у вас не хватит прав, чтобы его заменить. Поэтому не получится сначала скопировать файл, а потом переименовать, все надо осуществить за одну операцию.
- Убедитесь, что файл появился, и завершите SFTP-сессию.
Зайдите по SSH на kodomo и посмотрите файл с помощью less.
Для выполнения упражнения из дома или с ноутбука под управлением Windows/MacOS в классе нужно предварительно вручную создать на локальном компьютере текстовый файл с коротким именем hostname, содержащий имя вашего компьютера или любую другую строчку текста, чтобы потом его копировать на kodomo.