Разработчики любят использовать Shell — вот почему

Разработчики любят использовать Shell — вот почему

6 января 2023 г.

Приступая к программированию, вы можете быть удивлены тем, как много людей используют инструменты командной строки. Использование командной строки определенно выглядит круто, но есть ли какие-то ощутимые преимущества, кроме большего уважения со стороны коллег?

Текст везде

В интерфейсе командной строки (CLI) почти весь вводимый вами текст — это текст, что позволяет вводить только команды и их параметры. Печатание — это быстрый и точный метод ввода, если сравнивать его с щелчком мыши по экрану.

Когда люди создают программы, которые используют графический интерфейс пользователя (GUI) в качестве основного ввода, они ограничены тем, что умещается на экране. Они могут расширить свои возможности, добавив множество уровней вложенных меню или многоэкранных форм, но даже у этого решения есть свои ограничения, если интерфейс должен быть простым в использовании. К текстовой программе всегда можно добавить еще один флаг, и единственным эффектом для других пользователей будет то, что страница справки станет немного длиннее.

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

Все легко интегрируется

Обычный текст – это формат, который позволяет беспрепятственно интегрировать различные программы с момента появления оператора канала | в 1970-х годах. Он на несколько десятилетий старше XML (1999 г.) или различных подходов к веб-API:

* REST — определено в 2000 г., * GraphQL — опубликован в 2015 г.

Что еще лучше, так это то, что в то время как другие форматы приходят и уходят (вы слышали о SOAP?), простой текст останется. Нет ничего проще, чем выводить текст на стандартный вывод; и ваша операционная система позволяет передать вывод из одной программы в другую. Вы можете быть уверены, что люди создадут новые инструменты, которые впишутся в этот рабочий процесс, независимо от того, какие другие стандарты появятся и исчезнут в это время.

Шелл будет рядом

Большинство людей воспринимают графические интерфейсы как нечто само собой разумеющееся — они стали стандартом де-факто в бытовой электронике с 1990 года. Но работая программистом, вам придется иметь дело с машинами, которые не оптимизированы для простоты использования, например:

* облачные машины, используемые в качестве серверов, * агенты непрерывной интеграции (CI), * старые компьютеры с «голыми» операционными системами, которые до сих пор используются для экономии средств, и * другие нестандартные настройки, такие как Raspberry Pi и смарт-устройства.

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

Основные инструменты отрасли

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

* Гит * компиляторы * Докер * почти все, что вы могли бы запустить в своем CI

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

Компоненты знаний Shell

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

* ls — показать файлы * grep — для поиска текста * cat — показать содержимое одного или нескольких файлов. * xargs — для запуска команды с большим количеством аргументов. * less — для отображения содержимого в виде прокручиваемого текста на экране. * wc — подсчет символов, слов или строк

Все меняется, когда вы понимаете, что каждый инструмент дополняет имеющийся у вас набор инструментов, поэтому вы можете

* получить все файлы, содержащие строку (например, class) с помощью grep и отобразить их содержимое на экране с помощью xargs, cat и, возможно, меньше, а также * перечислите все файлы с помощью ls, отфильтруйте их до тех, которые заканчиваются на .spec.js с помощью grep и подсчитайте с помощью туалет.

Независимо от того, какой инструмент CLI вы изучите, вы сможете комбинировать его со всеми другими, которые вы уже знаете. Возможности взаимодействия ограничены только вашим творчеством — вы не зависите от третьих сторон в поддержке API друг друга. Все просто работает вместе.

Скрипт

Текстовые инструменты отлично подходят для автоматизации. Как минимум, вы можете легко написать список различных команд, которые нужно запускать одну за другой. Если вы готовы принять вызов, вы даже можете использовать некоторые условные операторы (if, switch). Синтаксис сценариев оболочки быстро усложняется, но в любом случае это проще, чем автоматизация щелчков курсором.

Вечный набор инструментов

Несмотря на то, что командная строка напоминает ретро, ​​это надежное и долгосрочное вложение. Если вы проверите, когда некоторые из широко используемых инструментов были впервые выпущены, вы можете быть уверены, что они останутся с нами еще на несколько десятилетий:

* grep — 1973 г. * Bash — 1989 г. * AWK — 1977

Большинство распространенных инструментов Unix имеют открытый исходный код, поэтому вы можете предположить, что пока есть люди, использующие их, будет и некоторая поддержка сообщества. Природа с открытым исходным кодом помогает новым инструментам опираться на старые, позволяя вещам развиваться. Отличным примером является история Neovim — в настоящее время мой любимый редактор:

* Neovim — это модернизированная, но обратно совместимая версия Вим. Neovim был создан из Vim в 2015 году. * Сам Vim означает Vi IMProved. Vim был опубликован в 1991 году. * Vi вырос из визуального режима ex, который до сих пор доступен даже в Vim и Neovim как нормальный режим. Первоначально Vi был выпущен в 1976 году. * ex был удобным для пользователя редактором, вдохновленным ed, оригинальным текстовым редактором Unix. Ex был разработан в 1973 году.

Как видите, даже когда эти инструменты заменяются чем-то более новым, их наследие часто живет в инструментах следующего поколения. Что хорошо в этом долголетии, так это то, что очень разные инструменты в конечном итоге используют одни и те же соглашения и команды. Эд вдохновил не только обычный режим Vim, но и различные инструменты:

* текстовый редактор командной строки, Sed * утилита поиска grep

Благодаря этой общей истории, когда вы узнаете что-то новое в одном месте, вы также можете использовать это в связанных инструментах.

Хотите узнать больше?

Надеюсь, я убедил вас приступить к изучению основ командной строки! Я буду публиковать статьи об основах CLI; если вам интересно узнать больше об этой теме, зарегистрируйтесь здесь.


Также опубликовано здесь


Оригинал