Огляд
Викладання: хв
Вправи: хвПитання
Цілі
Попередні знання
Люди та комп’ютери зазвичай взаємодіють багатьма різними способами, наприклад за допомогою клавіатури та миші, сенсорного екрану або системи розпізнавання мови. Найбільш поширений спосіб взаємодії з персональними комп’ютерами називається графічний інтерфейс користувача (GUI - graphical user interface). За допомогою такого інтерфейсу ми надаємо комп’ютеру інструкції, обираючи дію у меню за допомогою миші.
Хоча візуальна допомога графічного інтерфейсу користувача робить інтуітивним його вивчення, такий спосіб надсилання інструкцій до комп’ютера дуже погано масштабується. Уявіть наступну задачу: для бібліографічного пошуку вам необхідно скопіювати третю строку з тисячі вхідних файлів з тисячі різних директорій та вставити в один файл. Використовуючи графічний інтерфейс, ви б не тільки клікали на свому робочому місці декілька годин, але й могли б потенційно також внести помилку в процесі виконання монотоної задачі. Ось де ми скористаємося перевагами терміналу Unix. Термінал Unix - це одночасно інтерфейс командного рядка (англ. “Command-Line Interface”, CLI) та скриптова мова програмування, яка дозволяє подібні повторювальні задачі виконувати автоматично та швидко. За допомогою відповідних команд термінал може повторювати задачі із певними змінами або без них стільки разів, скільки ми бажаємо. Із використанням терміналу приклад задачі з бібліографічним пошуком може бути вирішений за секунди.
Термінал
Термінал - це програма, де користувач може вводити команди. За допомогою терміналу можна запускати як складні програми, такі як програмне забезпечення для моделювання клімату, так і прості команди, які створюють пустий каталог, лише одним рядком коду. Найбільш популярним терміналом є Bash (the Bourne Again SHell, який отримав таку назву, тому що був розроблений на основі терміналу, написаного Стівеном Борном). Bash є терміналом за замовчуванням в більшості сучасних реалізацій Unix та в більшості пакетів, що надають Unix-подібні інструменти для Windows.
Використання оболонки потребує певних зусиль і часу для вивчення. У той час як графічний інтерфейс надає вам можливість вибору, команди терміналу не надаються автоматично, тому вам доведеться вивчити кілька команд, як нову лексику у мові, яку ви вивчаєте. Однак, на відміну від розмовної мови, невелика кількість “слів” (тобто команд) допоможе вам пройти довгий шлях, і сьогодні ми розглянемо кілька найважливіших з них.
Граматика терміналу дозволяє комбінувати наявні інструменти у потужні конвеєри та автоматично обробляти великі обсяги даних. Послідовності команд можуть бути записані у “скрипт”, покращуючи відтворюваність послідовностей дій.
На додаток, командний рядок часто є найпростішим способом взаємодії з віддаленими машинами та суперкомп’ютерами. Ознайомлення з терміналом є майже необхідним для запуску різноманітних спеціалізованих інструментів і ресурсів в тому числі надпродуктивних комп’ютерних систем. Оскільки кластери та хмарні обчислювальні системи стають все більш популярними для обробки наукових даних, вміння взаємодіяти з терміналом стає необхідною навичкою. Ми можемо розвивати навички роботи з командним рядком, описані тут, для вирішення широкого кола наукових питань і обчислювальних проблем.
Отже, почнемо.
Коли термінал тільки відкрито, вам пропонується запрошення (англ. “prompt”), яке вказує на те, що термінал очікує на введення команд.
$
Термінал зазвичай використовує символ $
як запрошення, але може використовувати й інші символи.
У прикладах до цього уроку ми використовуватимемо запрошення $
.
Найважливіше:
під час введення команд з цих уроків або з інших джерел,
запрошення вводити не треба, а треба вводити тільки команди, що йдуть за ним.
Також зауважте, що після введення команди, вам потрібно натиснути клавішу Enter для її виконання.
За запрошенням йде текстовий курсор - символ, який позначає позицію, де з’являться наступні введені вами символи. Курсор зазвичай блимає або є суцільним блоком, але він також може бути підкресленням або вертикальною рискою. Ви могли його бачити, наприклад, в текстових редакторах.
Давайте спробуємо нашу першу команду, ls
(походить від англійського слова “listing”).
Ця команда покаже зміст поточного каталогу:
$ ls
Desktop Downloads Movies Pictures
Documents Library Music Public
Команду не знайдено
Якщо термінал не може знайти програму, назву якої ви ввели, він виведе на екран наступну помилку:
$ ks
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
,
використовуючи цикли для автоматизації повторюваних кроків введення імен,
отже її комп’ютер може працювати в той час, коли вона пише свою статтю.
В якості бонуса, як тільки вона налаштує конвеєр, вона буде взмозі використати його повторно в будь-який час, коли вона збере більше даних.
Для того, щоб досягти своєї мети, Неллі необхідно знати, як:
- перейти до файла/каталогу
- створити файл/каталог
- перевірити довжину файлу
- з’єднати команди разом
- отримати набір файлів
- перебрати файли
- запустити скрипт, що містить розроблений нею конвеєр
[workshop-repo]: [yaml]: http://yaml.org/
Ключові моменти