Командні рядки: чому люди все ще турбуються з ними?

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

Фактично, командний рядок стає все більш шанованим, ніж будь-коли, оскільки Microsoft створює нову потужну програму Windows Terminal. Середовище PowerShell в Windows 10 напрочуд потужне, але Microsoft все ж доклала всіх зусиль, щоб додати підтримку в основному повного середовища командного рядка Linux до Windows 10.

Колись командний рядок був єдиним варіантом

У свій час, якщо ви хотіли взаємодіяти з комп’ютером, ви вводили текст. Це було все. Більше нічого не було. Це може здатися обмежуючим і архаїчним, але як крок уперед від необхідності використовувати перфокартки або перфоровані паперові стрічки, набір тексту був радикальним і трансформуючим. І мігруючи від телетайпів з їхніми рулонами паперу до терміналів з електронно-променева трубка (ЕПТ) екрани були ще одним зрушенням у взаємодії людини та комп’ютера.

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

Досить справедливо, але це було тоді, це зараз. Комп’ютери – це зовсім інша гра з м’ячем. Окрім очевидних заблокованих випадків, як-от використання комп’ютера, на якому не встановлено графічне середовище робочого столу, або використання віддаленого комп’ютера через SSH через з’єднання з низькою пропускною здатністю або керування a безголовий або вбудований системі, навіщо використовувати командний рядок над графічним робочим столом?

Пояснення жаргону

Деякі такі терміни, як командний рядок, вікно термінала та оболонка, використовуються майже як синоніми. Це неправильний жаргон. Всі вони досить різні. Вони пов’язані, але це не одне й те саме.

Вікно терміналу — це вікно в a графічне середовище робочого столу який запускає емуляцію терміналу телетайпу.

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

  Знайдіть, хто живе у вашому районі?

Командний рядок є місцем, де ви вводите текст. Це підказка, яку представляє оболонка, коли вона чекає на введення деяких інструкцій. Термін «командний рядок» також використовується для позначення фактичного вмісту того, що ви ввели. Наприклад, якщо ви поговорите з іншим користувачем комп’ютера про труднощі, які виникли при спробі запустити програму, вони можуть запитати вас: «Який командний рядок ви використовували?» Вони не запитують, яку оболонку ви використовуєте; вони хочуть знати, яку команду ви ввели.

Разом вони об’єднуються, утворюючи інтерфейс командного рядка (CLI).

Навіщо використовувати командний рядок у 2019 році?

CLI може здатися ретроградним і заплутаним для тих, хто не знайомий з ним. Невже в сучасній операційній системі немає місця для такого застарілого та вигадливого способу використання комп’ютера? Хіба ми не відмовилися від усього цього десятиліття тому, коли з’явилися вікна, значки та миші та графічні середовища робочого столу з графічні інтерфейси користувача (GUI) стали доступними?

Так, GUI існує протягом десятиліть. Перша версія Microsoft Windows була випущений у далекому 1985 році і став нормою для настільних комп’ютерів з випуском Windows 3.0 у 1990 році.

Система X Window, яка використовується в Unix і Linux, була введений у 1984 році. Це принесло графічні середовища робочого столу до Unix та його багатьох похідних, клонів та відгалужень.

Але випуск Unix передує цим подіям a більше десятиліття. І оскільки іншого варіанту не було, все мало бути можливим через командний рядок. Вся людська взаємодія, всі налаштування, кожне використання комп’ютера повинні були здійснюватися за допомогою скромної клавіатури.

Отже, Ipso facto CLI може робити все. GUI все ще не може робити все, що може зробити CLI. І навіть для тих частин, які він може виконувати, CLI зазвичай швидший, гнучкіший, може бути написаний сценаріями та масштабований.

І є стандарт.

Вони стандартизовані завдяки POSIX

POSIX – це a стандарт для Unix-подібних операційних систем— по суті, все, що не є Windows. І навіть у Windows є підсистема Windows для Linux (WSL). Відкрийте вікно терміналу на будь-якій операційній системі, сумісній з POSIX (або близькій до неї), і ви опинитеся в оболонці. Навіть якщо оболонка або дистрибутив забезпечують власні розширення та покращення, якщо вони забезпечують основну функціональність POSIX, ви зможете використовувати їх одразу. І ваші сценарії будуть працювати.

  Як увімкнути підтримку Dropbox у файловому менеджері Dolphin

Командний рядок є найменшим загальним знаменником. Дізнайтеся, як ним користуватися, і, незалежно від дистрибутива Linux і графічного середовища робочого столу, ви зможете виконувати всі необхідні завдання. Різні настільні комп’ютери мають свій спосіб робити речі. Різні дистрибутиви Linux об’єднують різні утиліти та програми.

Але відкрийте вікно терміналу, і ви відчуєте себе як вдома.

Команди створені для спільної роботи

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

Це настільки корисно, що Microsoft зробила все, щоб додати підтримку повного командного рядка Linux до Windows 10!

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

Подивіться на наступний приклад. Це використовує команду ls для переліку файлів у поточному каталозі. Результати передаються в команду сортування і відсортовано в п’ятому стовпці даних (це розмір файлу). Відсортований список потім передається в команду head, яка за замовчуванням відображає список перші десять рядків його введення.

ls -l | sort -nk5,5 | head

Ми отримуємо акуратний список найменших файлів у поточному каталозі.

Змінивши одну команду — використовуючи tail замість head — ми можемо отримати список з десяти найбільших файлів у поточному каталозі.

ls -l | sort -nk5,5 | tail

Це дає нам наш список з десяти найбільших файлів, як і очікувалося.

Результати команд можна перенаправляти та записувати у файли. Звичайний вихід (stdin) і повідомлення про помилки (stderr) можна записувати окремо.

Команди можуть включати змінні середовища. Наступна команда покаже вміст вашого домашнього каталогу:

ls $HOME

Це працює з будь-якого місця в дереві каталогів.

  Інтерфейс стрічки, кілька вкладок, розділене редагування тощо

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

Скрипти забезпечують автоматизацію та повторюваність

Люди схильні до помилок.

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

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

Скрипти PowerShell пропонують подібну потужність у Windows, і ви можете запланувати їх запуск із планувальника завдань. Навіщо натискати 50 різних параметрів щоразу, коли ви налаштовуєте комп’ютер, якщо ви можете запустити команду, яка автоматично змінює все?

Найкраще з обох світів

Щоб отримати максимальну віддачу від Linux — або будь-якої операційної системи як досвідченого користувача — вам справді потрібно використовувати інтерфейс командної команди та графічний інтерфейс.

GUI є неперевершеним для використання програм. Навіть завзяті прихильники командного рядка змушені час від часу виходити з вікна терміналу й використовувати офісні набори продуктивності, середовища розробки та програми для графічних маніпуляцій.

Прихильники командного рядка не ненавидять GUI. Вони лише віддають перевагу використання CLI — для відповідних завдань. Для адміністрування CLI перемагає. Ви можете використовувати CLI, щоб вносити зміни в один файл, один каталог, вибір файлів і каталогів або повністю глобальні зміни з однаковою кількістю зусиль. Спроба зробити це за допомогою графічного інтерфейсу часто потребує довготривалих і повторюваних дій клавіатури та миші, оскільки кількість уражених об’єктів зростає.

Командний рядок забезпечує найвищу точність. Вам доступний кожен варіант кожної команди. І багато команд Linux мають багато варіантів. Щоб взяти лише один приклад, розглянемо команду lsof. Подивіться на його сторінка людини а потім подумайте, як ви обернете це в графічний інтерфейс.

Є занадто багато варіантів, щоб представити користувачеві в ефективному графічному інтерфейсі. Це було б непосильним, непривабливим і незграбним у використанні. І це повна протилежність тому, яким має бути графічний інтерфейс.

Це коні на курси. Не цурайтеся коня CLI. Часто це швидший і спритніший скакун. Заробляйте свої шпори, і ви ніколи про це не пошкодуєте.