Почему люди все еще беспокоятся о них?

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

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

Командная строка когда-то была единственным вариантом

Когда-то, если вы хотели взаимодействовать с компьютером, вы печатали. Вот и все. Больше ничего не было. Это может показаться ограничительным и архаичным, но как шаг вперед от необходимости использовать перфокарты или перфорированные бумажные ленты, набор текста был радикальным и преобразующим. И переход от телетайпов с рулонами бумаги к терминалам с электронно-лучевая трубка (ЭЛТ) экраны были еще одним фундаментальным сдвигом во взаимодействии человека и компьютера.

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

Достаточно честно, но это было тогда, это сейчас. Вычислительная техника — это совсем другая игра. Не считая очевидных случаев блокировки, таких как использование компьютера, на котором не установлена ​​графическая среда рабочего стола, или использование удаленного компьютера через SSH через соединение с низкой пропускной способностью или контролируя Обезглавленный или же встроенный система, зачем использовать командную строку поверх графического рабочего стола?

Объяснение жаргона

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

Окно терминала — это окно в графическая среда рабочего стола который запускает эмуляцию терминала телетайпа.

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

Командная строка — это то место, где вы печатаете. Это приглашение, которое оболочка выдает, когда ожидает ввода каких-либо инструкций. Термин «командная строка» также используется для обозначения фактического содержания набранного вами текста. Например, если вы поговорите с другим пользователем компьютера о трудности, с которой вы столкнулись при попытке запустить программу, он может спросить вас: «Какую командную строку вы использовали?» Они не спрашивают, какую оболочку вы использовали; они хотят знать, какую команду вы набрали.

Вместе они образуют Интерфейс командной строки (CLI).

Зачем использовать командную строку в 2019 году?

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

Да, графический интерфейс существует уже несколько десятилетий. Первая версия Microsoft Windows была выпущен еще в 1985 году и стал нормой для настольных ПК с выпуском Windows 3.0 в 1990 году.

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

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

Итак, ipso facto, CLI может все. Графический интерфейс по-прежнему не может делать все, что может сделать интерфейс командной строки. И даже для тех частей, которые он может выполнять, интерфейс командной строки обычно быстрее, гибче, может быть написан сценариями и масштабируем.

И есть стандарт.

Они стандартизированы благодаря POSIX

POSIX — это стандарт для Unix-подобных операционных систем— в основном все, что не является Windows. И даже в Windows есть подсистема Windows для Linux (WSL). Откройте окно терминала в любой POSIX-совместимой (или близкой к соответствующей) операционной системе, и вы окажетесь в оболочке. Даже если оболочка или дистрибутив предоставляют свои собственные расширения и улучшения, при условии, что они предоставляют базовую функциональность POSIX, вы сразу сможете использовать их. И ваши скрипты запустятся.

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

Но откройте окно терминала, и вы почувствуете себя как дома.

Команды созданы для совместной работы

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

Это настолько полезно, что Microsoft изо всех сил старалась добавить поддержку полной командной строки Linux в Windows 10!

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

Взгляните на следующий пример. Для вывода списка файлов в текущем каталоге используется команда ls. Результаты передаются в команду сортировки и отсортировано по пятому столбцу данных (размер файла). Отсортированный список затем передается в команду head, которая по умолчанию перечисляет первые десять строк его ввода.

ls -l | sort -nk5,5 | head

ls -l |  sort -nk5,5 |  заглянуть в окно терминала

Мы получаем аккуратный список самых маленьких файлов в текущем каталоге.

список десяти самых маленьких файлов в текущем каталоге

Изменяя одну команду — используя tail вместо head, — мы можем получить список из десяти самых больших файлов в текущем каталоге.

ls -l | sort -nk5,5 | tail

ls -l |  sort -nk5,5 |  хвост в окне терминала

Как и ожидалось, это дает нам список из десяти самых больших файлов.

список десяти самых больших файлов в текущем каталоге

Вывод команд может быть перенаправлен и сохранен в файлах. Обычный вывод (stdin) и сообщения об ошибках (stderr) можно записывать отдельно.

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

ls $HOME

ls $ HOME в окне терминала

Это работает из любого места в дереве каталогов.

листинг домашнего каталога в окне терминала

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

Скрипты обеспечивают автоматизацию и повторяемость

Люди склонны к ошибкам.

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

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

Сценарии PowerShell предлагают аналогичные возможности в Windows, и вы можете запланировать их запуск из Планировщика задач. Зачем выбирать 50 различных параметров каждый раз, когда вы настраиваете компьютер, если вы можете запустить команду, которая автоматически все меняет?

Лучший из двух миров

Чтобы получить максимальную отдачу от Linux или любой другой операционной системы в качестве опытного пользователя, вам действительно нужно использовать интерфейс командной строки и графический интерфейс.

Графический интерфейс пользователя не имеет себе равных в использовании приложений. Даже стойким сторонникам командной строки приходится выходить из окна терминала и время от времени использовать офисные комплекты для повышения производительности, среды разработки и программы для работы с графикой.

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

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

Существует слишком много вариантов, чтобы представить пользователю эффективный графический интерфейс. Это было бы ошеломляюще, непривлекательно и неудобно в использовании. И это полная противоположность тому, на что стремится GUI.

Это лошади для курсов. Не уклоняйтесь от лошади CLI. Часто это более быстрый и проворный конь. Заработайте шпоры, и вы никогда об этом не пожалеете.