1. týždeň

First Steps with Shell

Основы, Unix, редактор ViM, компиляция и запуск программы

Тема лабораторной

Вы познакомитесь с основными правилами предмета. Изучите базовый рабочий процесс работы с удаленным сервером. Используйте редактор ViM для написания программы, которую вы скомпилируете.

Objectives

  • Ознакомиться с критериями оценки на предмете.
  • Подготовить все нужное для работы на предмете.
  • Попрактиковаться в создании исполнительного файла из исходного кода, написанного на языке C в среде редактора ViM.
  • Изучить основы работы в командной строке.

Postup

Step 1: Правила

Прежде чем начать, обсудите с практикующим правила на предмете.

Step 2: Подключение на удаленный сервер

На этом этапе вы получите доступ к удаленному серверу Unix. Используя клиент ssh, подключитесь и опробуйте для начала свои первые команды.

Task 2.1

Подготовьте свой университетский логин и пароль (через который вы входите в Mais).

Comment

Если вы не помните свой университетский логин или хотите изменить свой пароль, загляните: Институт компьютерных наук.

Task 2.2

Войдите на zap.kpi.fei.tuke.sk с логином zap и паролем cvicenie2019.

  • Если вы работаете в Linux, войдите в систему, используя командную строку ssh zap@zap.kpi.fei.tuke.sk или ssh -l zap zap.kpi.fei.tuke.sk.
  • Если вы работаете на ОС Windows, войдите в систему, используя putty.

Comment

Когда вы вводите пароль, символы пароля не отображаются - вы вводите его вслепую.

Task 2.3

Активируйте свою учетную запись пользователя на zap.kpi.fei.tuke.sk, используя свой университетский логин и пароль.

Сервер запросит у вас ваш университетский логин и пароль:

  • Входные данные - те же самые, что и для входа в Mais.
  • Когда вы успешно введете свой логин и пароль, вы активируете свою учетную запись на сервере, и вам нужно будет снова войти в систему - но уже с вашей новой учетной записью.
  • С этого момента вы будете использовать для входа в систему ваш университетский логин и пароль.

Работа с сервером будем выглядеть следующим образом: то, что вводит пользователь выделено жирным шрифтом (пароль подсвечивается звездочками):

login as: zap
 __  ___ .______    __
|  |/  / |   _  \  |  |   Katedra pocitacov a informatiky
|  '  /  |  |_)  | |  |   Fakulta elektrotechniky a informatiky
|    <   |   ___/  |  |   Technicka Univerzita v Kosiciach
|  .  \  |  |      |  |   Department of computers and informatics
|__|\__\ | _|      |__|   Technical University of Kosice

UNAUTHORIZED ACCESS TO THIS NETWORK DEVICE IS PROHIBITED.
You must have explicit permission to access or configure this
device. All activities performed on this device are logged and
violations of this policy will be prosecuted under all applicable
statutes plus all applicable civil rules for damages.
Using keyboard-interactive authentication.
Password:
Using keyboard-interactive authentication.
Enter ldap login: ab123xy
Using keyboard-interactive authentication.
Enter ldap pass:

Warning

Вы можете войти на сервер zap.kpi.fei.tuke.sk.sk только из сети университета. Если вы не находитесь в сети университета, вы должны сначала подключиться к сети VPN.

Comment

Сеть Wi-Fi TUNET-guest не поддерживает соединение через ssh. Подключитесь через сеть eduroam. Больше тут.

Step 3: Первые команды

Task 3.1

Если вы еще этого не сделали, войдите в систему zap.kpi.fei.tuke.sk с помощью логина и пароля или запустите виртуальную машину.

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

login as: ab123xy
 __  ___ .______    __
|  |/  / |   _  \  |  |   Katedra pocitacov a informatiky
|  '  /  |  |_)  | |  |   Fakulta elektrotechniky a informatiky
|    <   |   ___/  |  |   Technicka Univerzita v Kosiciach
|  .  \  |  |      |  |   Department of computers and informatics
|__|\__\ | _|      |__|   Technical University of Kosice

UNAUTHORIZED ACCESS TO THIS NETWORK DEVICE IS PROHIBITED.
You must have explicit permission to access or configure this
device. All activities performed on this device are logged and
violations of this policy will be prosecuted under all applicable
statutes plus all applicable civil rules for damages.
Using keyboard-interactive authentication.
Password:
Welcome to Ubuntu 18.04.1 LTS (GNU/Linux 4.15.0-34-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

ab123xy@zap:~$

Task 3.2

Осмотритесь в домашнем каталоге. Узнайте, что находится в корневом каталоге и какое имя несет домашний каталог.

Вы можете использовать следующие команды:

  • ls выписать содержимое каталога
  • pwd выписать путь настоящего каталога
  • mkdir имя_каталога создаст новый каталог
  • cd имя_каталога изменит текущий каталог на другой (подкаталог)
  • rmdir имя_каталога удаляет каталог (для пустого каталога)
  • rm -r имя_каталога удаляет каталог (для непустого каталога)

В качестве аргументов для команд можете использовать специальные каталоги, например:

  • / главная директория
  • ~ домашний каталог
  • . текущий каталог
  • .. каталог выше

Task 3.3

Учитесь работать с историей.

  • Никакую из команд не нужно вводить дважды! Несмотря на то, что так возможно не кажется на первый взгляд, работа в командной строке проста, быстра и интуитивна.
  • Нажмите стрелка вверх и стрелка вниз, чтобы просмотреть список последних команд, которые вы использовали. Вы можете вызвать предыдущую команду и изменить ее на другую.
  • Команда history содержит список всех последних использованных команд.

Task 3.4

Как называлась та двухбуквенная команда на букву l? И какой был каталог, который был выше? Узнайте, как работать с именами команд и файлов.

  • TAB часто может вам подсказать и предложить варианты, которые у вас есть.
  • Введите начальную букву команды или файла и используйте TAB, чтобы добавить полное имя.
  • Например:. l + TAB предложит все команды, которые начинаются с l и предложит самый первый, cd /home/ + TAB перечислит все каталоги в /home и предложит первый. Повторное нажатие TAB предложит другой вариант.

Task 3.5

Узнайте, как получить помощь в командной строке.

  • Каждая команда содержит встроенную справку.
  • Если в командной строке вы введёте man команда, откроется справка к команде, которая описывает работу команды и ее аргументы.
  • Чтобы выйти со страницы руководства, нажмите q.
  • Вы можете часто использовать аргумент --help или -? для отображения краткой справки.

Task 3.6

Что делать, если вы в отчаянии и не знаете, что делать?

Вы можете использовать следующие процедуры восстановления:

  • Ctrl + C завершает команду, которую вы сейчас выполняете.
  • Ctrl + D завершает запись или выходит из системы.
  • Ctrl + Z оставит команду выполнятся в фоновом режиме.
  • fg 1 может вернуть команду из фонового режима.
  • Google может знать ответ на любой вопрос (также у вашего товарища или у практикующего).

Step 4: Директории и файлы

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

  • mkdir каталог создаст новый каталог
  • rmdir каталог удаляет каталог (для пустого каталога)
  • rm -r каталог удаляет каталог (для непустого каталога)

Каждая команда принимает имя каталога в качестве аргумента. Имейте в виду, что есть специальные имена для вашего домашнего каталога, текущего каталога и каталога выше.

Task 4.1

Создайте каталог ~/labs, где вы сможете работать с упражнениями.

Хорошо, если ваша работа организована, чтобы проверить:

  • Проверьте наличие нового каталога с помощью ls и перейдите в новый каталог с помощью cd.
  • Проверьте текущий каталог с помощью pwd.

Task 4.2

Для порядка в вашем каталоге labs создайте каталог, в котором вы сможете сохранять результаты упражнений на этом уроке.

  • В каталоге labs создайте каталог lab01 и войдите в него.
  • Не забывайте использовать историю и дополнение.
  • Убедитесь, что вы действительно находитесь в каталоге с помощью pwd.

Step 5: Текстовый редактор ViM и первая программа

Мы можем представить исходный код как рассказ на специальном языке. Текстовый редактор используется для создания и изменения текстовых файлов.

Task 5.1

Запустите текстовый редактор ViM и создайте пустой файл hello.c.

vim hello.c

Task 5.2

Загляните во встроенную справку и выйдите из редактора.

ViM Editor работает в разных режимах. Режим, который вы вошли после открытия редактора, - это командный режим, в котором вы вводите команды, нажимая клавиши. Поэтому не удивляйтесь, если он не ведет себя, как предполагаете.

  • Вы можете запустить интерактивный учебник с помощью :tutorial. Взгляните на учебник и опробуйте перемещение в тексте, используя hjklwb.
  • Используйте команду :help для отображения справки для введенной команды.
  • Например. :help h - помощь для h.
  • Выйдите из текстового редактора с помощью Shift + Z + Z или :q.

Task 5.3

Напишите свой первый код, который выпишет на экран Hello world!

  • Перезапустите редактор и создайте hello.c.
  • Вы можете ввести режим ввода с помощью команды i или A (вставка в конец строки).
  • Вы всегда можете вернуться в командный режим, используя ESC.
  • Введите код в файл:
#include <stdio.h>

int main() {
    printf("Hello world!\n");
    return 0;
}

Comment

Мы настоятельно рекомендуем переписать этот текст, а не копировать его. Вам неоходимо работать с редактором, и важно знать о расположении специальных символов на клавиатуре (например, #).

Comment

Если вы потерялись при вводе и не знаете, в каком вы режиме редактора находитесь, нажмите ESC и снова перейдите в режим ввода с помощью i.

Comment

Сохранить файл с помощью :w. Сохранить файл и выход - :wq. Выйти из файла без сохранения :q!.

Warning

Не используйте цифровую клавиатуру!

Warning

Используйте английскую раскладку - легче писать специальные символы.

Step 6: Компиляция и запуск программы

Попробуйте скомпилировать и запустить первую программу на C.

Task 6.1

Скомпилируйте вашу программу.

  • Сначала используйте ls и pwd, чтобы проверить текущий каталог и его содержимое. hello.c должен быть там.
  • С помощью cat вы можете выписать содержимое текстового файла.
  • Компиляция программы с помощью gcc:
gcc hello.c
  • Компилятор берет исходный код и переводит его в исполняемую форму.
  • Узнайте, как называется полученный исполняемый файл.

Task 6.2

Если вы ошиблись при написании кода, компилятор выпишет сообщение об ошибке. Сообщение об ошибке состоит из номера строки, где находится ошибка, и описания ошибки. Попытайтесь понять сообщение, откройте исходный код, найдите ошибку и исправьте ее.

Task 6.3

Скомпилируйте программу и назовите её.

  • Вы должны сообщить компилятору, как назвать исполняемый файл, используя аргумент -o.
  • Если ваш исходный код в порядке, скомпилируйте его выбрав исполнительному файлу подходящее имя (например, hello).
  • В Unix исполняемые файлы не различаются по расширению, поэтому имя будет без типичного расширения .exe:
gcc hello.c -o hello
  • Если компиляция прошла успешно, исполняемый файл hello был добавлен в каталог.
  • Запустите полученную программу с помощью команды:
./hello

Additional Tasks

Task A.1

Редактируйте код и упростите процесс компиляции непосредственно в ViM Editor.

Отредактируйте исходный код, например, изменив текст для вывода на экран. Сохраните файл:

:w

Для работы с командной строкой не нужно выходить из VIM. В редакторе вы можете работать с командной строкой, используя :!. Скомпилируйте программу непосредственно из редактора в командном режиме:

:!gcc hello.c -o hello

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

:!ls

Выпишутся файлы текущего каталога. Чтобы запустить программу, введите:

:!./hello

Comment

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

Task A.2

Ознакомьтесь Problem Set 0 для настройки виртуальной среды на вашем компьютере. Речь идет о работе под ОС Linux, которая содержит настройки, необходимые для успешного окончания этого предмета.

Task A.3

Установите плагин для расширения возможностей редактора ViM для работы с GIT. Плагин можно найти по адресу https://github.com/tpope/vim-fugitive. Вам это пригодится, когда вы будете выполнять некоторые задания.

Task A.4

Создайте свой собственный файл конфигурации ViM. Вы можете создать файл конфигурации в виде примера Файл конфигурации от Томаша или Файл конфигурации от Даниела.

Additional Resources

  1. ViM игра https://vim-adventures.com/
  2. Online ViM интерактивная обучалка http://www.openvim.com/
  3. Интерактивная обучалка: Команда :tutor
  4. ViM Quick Reference Card (.pdf)
  5. Файл конфигурации от Томаша
  6. Файл конфигурации от Даниела

Video