Linux and Terminal

Навіщо розробнику знати Linux#

Безкоштовна ОС#

На базі ядра Linux побудовано багато безкоштовних дистрибутивів операційних систем. Вони використовуютья як на серверах, так на робочих станціях (ПК). В нас в компанні силами TSD (Technical Support Department) підтримуються дестрибутив Ubuntu.

Інструменти розробника#

Багато ключових для розробника інструментів не мають графічного інтерфейсу. Вони поставлються у вигляді виконуємих, программм що запускаються в консолі (терміналі). Розуміння того, як запустити програму та передати необхідні параметри є ключовим у виріщенні задач кожного дня.

Автоматизація#

Unix-подібні операційі системи та програми, що виконуються на них, слідують філософії побудови модульних програмного забезпечення, що сприяє його повторнуму використанню. Ось як філософія Unix була задокументована в Bell System Technical Journal за 1878 рік:

  1. Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new "features".
  2. Expect the output of every program to become the input to another, as yet unknown, program. Don't clutter output with extraneous information. Avoid stringently columnar or binary input formats. Don't insist on interactive input.
  3. Design and build software, even operating systems, to be tried early, ideally within weeks. Don't hesitate to throw away the clumsy parts and rebuild them.
  4. Use tools in preference to unskilled help to lighten a programming task, even if you have to detour to build the tools and expect to throw some of them out after you've finished using them.

Такий підхід в побудові програм зробив можливим автоматизацію складних процесів через використання мінімалісичних, проте гнучких програм, що добре виконують одну задачу.

Для розробника, це в першу чегру автоматизація зборки пробрами, перевірка її автотестами та автоматичний деплой на сервер. Сам процес розгортання на сервері теж складна может бути складною процедурою в десяток кроків. Автоматизація таких операція мінімізує вплих людського фактору та можливість винекнення помилки по-неуважністі.

Робота з віддаленими серверами#

Здебільшого сервери, на яких ми розгортаємо наші сервіси, працють на ядрі Linux. Розгортання нових версій додатку та діагностики їхроботи потребує навіків роботи з Linux. Варто зазначити, що на тиких среверах немає графічного інтерфейсу користувачав. Всі операції з ОС та нашим сервісом (перезапуск, перегляд логів, робота з базою даних) необхідно виконувати через інтерфейс командного рядку (Command Line Interface, скорочено CLI).

Linux distros#

OS для робочих станцій на базі ядра Linux додатково укомплектовані варіантом графічної оболонки (Gnome, KDE, Unity, Xfce) та сумісним з ним набором програм з графічним інтерфейсом.

В InterLink ми викорустовуємо дестрибутив Ubuntu.

Terminal#

Багато ключових для розробника інструментів не мають графічного інтерфейсу. Вони поставлються у вигляді виконуємих, программм що запускаються в консолі (терміналі). Розуміння того, як запустити програму та передати необхідні параметри є ключовим у виріщенні задач кожного дня.

Terminal start on Ubuntu#

Запустити тірмінал можна одним з наступних варіантів:

  1. Клікнути Activities або натиснути Win , ввести terminal, натиснути Return
  2. Клікнути Show Applications, знайти і клікнути Terminal
  3. Control + Alt + T
  4. Alt + F2, ввети gnome-terminal, натиснути Return

Для Windows#

Windows 10#

Старіші версії Windows#

Основні команди Bash#

Команди#

  • cd – перейти в каталог
    • cd .. – на рівень вище
    • cd / – в кореневий
    • cd ~ – в домашній
    • сd - – в попередній
  • mkdir – строрити каталог
    • mkdir -p –строврити повний шлях
  • ls – переглянути список файлів і каталогів
  • pwd – вивести повний шлях до поточного каталогу
  • rm – видалити вайл
    • rm -rf – рекурсивно видалити всі каталоги та файли

"Гарячі клавіщі"#

  • Crlt + c – зупинити виконання поточної програми (надіслити sig term)
  • Alt + . – підставити останній аргумент (рекурсивно)
  • Ctrl + a – перевести курсор на початок командного рядка
  • Ctrl + e – перевести курсор в кінець командного рядка
  • Ctrl + w – видалити слово зліва від курсору

Додаткові матеріали#

Для ознайомлення з основними командами Linux пройде наступный туторіал: https://ubuntu.com/tutorials/command-line-for-beginners#1-overview. По завершеню тоторіалу приготуйтеся показати історію команд в терміналі та здобуті знання.

👨‍💻 Repo setup script#

Задание#

Написать скрипт для создания и настройки Git репозитория. Скрипт должен выполнять последовательно следующие действия:

  1. Новый репозиторий
    1. Создает новый репозиторий в папке с указанным именем
    2. Если указанной папки нет, выводит предупреждение и создает ее
  2. Автор коммитов
    1. Для этого репозитория предлагает указать и пишет в локальные настройки имя и email автора коммитов
    2. Предлагая ввести новые имя и email, указывает текущие глобальные значения этих параметров
  3. Конвертация символов перевода строки
    1. Создает фаил с настройками конвертации символов перевода строки
    2. Коммитит его с сообщением "Initial setup"

Вопросы#

  1. Как проверить наличие параметров командной строки?
  2. Как задать и прочитать значение переменной в Bash?
  3. Как получить (записать в переменную) результат выполнения команды с параметрами?
  4. Как установить права на выполнение файла?
  5. Как в начале скрипта указать программу интерпретатор?