Знайомство з терміналом

Last updated on 2024-12-05 | Edit this page

Estimated time: 5 minutes

Overview

Questions

  • Що таке командний термінал і навіщо його використовувати?

Objectives

  • Пояснити, як термінал пов’язаний з клавіатурою, екраном, операційною системою та програмами користувача.
  • Пояснити, коли та чому інтерфейси командного рядка слід використовувати замість графічних інтерфейсів.

Попередні знання

Люди та комп’ютери зазвичай взаємодіють багатьма різними способами, наприклад за допомогою клавіатури та миші, сенсорного екрану або системи розпізнавання мови. Найбільш поширений спосіб взаємодії з персональними комп’ютерами називається графічний інтерфейс користувача (GUI - graphical user interface). За допомогою такого інтерфейсу ми надаємо комп’ютеру інструкції, обираючи дію у меню за допомогою миші.

Хоча візуальна допомога графічного інтерфейсу користувача робить інтуїтивним його вивчення, такий спосіб надсилання інструкцій до комп’ютера дуже погано масштабується. Уявіть наступну задачу: для бібліографічного пошуку вам необхідно скопіювати третій рядок з тисячі вхідних файлів з тисячі різних директорій та вставити усе це в один файл. Використовуючи графічний інтерфейс, ви б не тільки клацали мишею на свому робочому місці декілька годин, але й могли б потенційно також внести помилку в процесі виконання монотонної задачі. Саме тут ми й скористаємося перевагами терміналу Unix. Термінал Unix - це одночасно інтерфейс командного рядка (англ. “Command-Line Interface”, CLI) та скриптова мова програмування, яка дозволяє виконувати подібні повторювані задачі автоматично та швидко. За допомогою відповідних команд термінал може повторювати задачі із певними змінами або без них стільки разів, скільки ми бажаємо. З використанням терміналу приклад задачі з бібліографічним пошуком може бути вирішений за секунди.

Термінал

Термінал - це програма, де користувач може вводити команди. За допомогою терміналу можна запускати складні програми, такі як програмне забезпечення для моделювання клімату, або прості команди, які створюють пустий каталог, командами, які займають лише один рядок. Найбільш популярним терміналом є Bash (the Bourne Again SHell, який отримав таку назву, тому що був розроблений на основі терміналу, написаного Стівеном Борном). Bash є терміналом за замовчуванням у більшості сучасних реалізацій Unix та у більшості пакетів, які надають Unix-подібні інструменти для Windows. Зауважте, що ‘Git Bash’ — це частина програмного забезпечення, яка дозволяє користувачам Windows використовувати інтерфейс, подібний до Bash, при взаємодії з Git.

Щоб користуватися терміналом, потрібно докласти певних зусиль і витратити час на його вивчення. У той час як графічний інтерфейс надає вам можливість вибору, команди терміналу не надаються автоматично, тому вам доведеться вивчити кілька команд, як нову лексику у мові, яку ви вивчаєте. Однак, на відміну від розмовної мови, невелика кількість “слів” (тобто команд) принесе вам неймовірну користь, і сьогодні ми розглянемо кілька найважливіших з них.

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

Крім того, командний рядок часто є найпростішим способом взаємодії з віддаленими машинами та суперкомп’ютерами. Ознайомлення з терміналом є майже необхідним для запуску різноманітних спеціалізованих інструментів і ресурсів, у тому числі надпродуктивних обчислювальних систем. Оскільки кластери та хмарні обчислювальні системи стають все більш популярними для обробки наукових даних, вміння взаємодіяти з терміналом стає необхідною навичкою. Ми можемо розвивати навички роботи з командним рядком, описані тут, для вирішення широкого спектра наукових питань і обчислювальних проблем.

Отже, почнемо.

Коли термінал тільки відкрито, вам пропонується запит (англ. prompt), яке вказує на те, що термінал очікує на введення команд.

BASH

$

Термінал зазвичай використовує символ $ як запрошення, але може використовувати й інші символи. У прикладах до цього уроку ми використовуватимемо запрошення $. Найважливіше: під час введення команд запрошення вводити не треба. Треба вводити тільки команди, що йдуть за ним. Це правило діє як на цих уроках, так і на уроках з інших джерел. Також зауважте, що після введення команди, вам потрібно натиснути клавішу Enter для її виконання.

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

Зверніть увагу, що ваше запрошення може виглядати дещо інакше. Зокрема, більшість популярних середовищ оболонки за замовчуванням вказують ваше ім’я користувача та ім’я хоста перед ‘$’. Таке запрошення може виглядати, наприклад, так:

BASH

nelle@localhost $

Запрошення може містити навіть ще більше інформації. Не хвилюйтеся, якщо ваше запрошення - це не просто коротке ’\('. Цей урок не залежить від цієї додаткової інформації, та вона також не повинна вам заважати. Єдиним важливим елементом, на якому слід зосередитися, є сам символ `\)`, і ми побачимо пізніше, чому.

Отже, спробуймо нашу першу команду, ls (походить від англійського слова “listing”). Ця команда покаже зміст поточного каталогу:

BASH

$ ls

OUTPUT

Desktop     Downloads   Movies      Pictures
Documents   Library     Music       Public

Команду не знайдено

Якщо термінал не може знайти програму, назву якої ви ввели, він виведе на екран наступне повідомлення про помилку:

BASH

$ ks

OUTPUT

ks: command not found

Це може трапитися, якщо при наборі команди була допущена помилка або якщо програма, що відповідає набраній команді, не встановлена.

Конвеєр Неллі: Типова Проблема


Неллі Немо (Nelle Nemo), морський біолог, щойно повернулась із шестимісячного дослідження Північного тихоокеанського кругообігу (North Pacific Gyre), де вона збирала зразки драглистих морських організмів у Великій тихоокеанській сміттєвій плямі. Вона має 1520 зразків, які вона пропускає через аналізатор, щоб виміряти відносну кількість 300 білків. Їй потрібно запустити ці 1520 файлів через уявну програму goostats.sh, яку вона успадкувала. Окрім цього величезного завдання, вона має написати результати до кінця місяця, щоб її робота могла з’явитися у спеціальному випуску Aquatic Goo Letters.

Якщо Неллі вирішить запустити goostats.sh вручну за допомогою графічного інтерфейсу, їй доведеться вибирати та відкривати файли 1520 разів. Якщо обробка одного файлу програмою goostats.sh триватиме 30 секунд, загальний процес вимагатиме більше ніж 12 годин уваги Неллі. За допомогою терміналу, Неллі може замість цього доручити своєму комп’ютеру цю рутинну роботу в той час, коли вона фокусує свою увагу на написанні статті.

У наступних кількох уроках будуть розглянуті шляхи, яким чином Неллі може цього досягти. Зокрема, на уроках пояснюється, як вона може використовувати термінал для запуску програми goostats.sh, використовуючи цикли для автоматизації повторюваних кроків введення імен файлів, щоб її комп’ютер міг працювати, поки вона пише свою наукову роботу.

Як бонус, після того, як вона створить конвеєр, вона зможе використовувати його повторно, коли вона збере більше даних.

Для того, щоб досягти своєї мети, Неллі необхідно знати, як:

  • перейти до файла/каталогу
  • створити файл/каталог
  • перевірити довжину файлу
  • з’єднати команди разом
  • отримати набір файлів
  • по черзі виконати дії над кожним файлом з набору
  • запустити скрипт, що містить розроблений нею конвеєр

Key Points

  • Термінал - це програма, основним призначенням якої є читання команд і запуск інших програм.
  • У цьому уроці використовується Bash. Це термінал за замовчуванням у багатьох реалізаціях Unix.
  • Програми можна запускати у Bash шляхом введення команд у вікні командного рядка.
  • Основними перевагами терміналу є високе співвідношення кількості дій до кількості натискань клавіш, підтримка автоматизації повторюваних завдань, а також можливість доступу до віддалених машин.
  • Дуже важлива навичка при використанні оболонки - це вміння доречно використовувати текстові команди.