Достоинства и недостатки интерфейса командной строки кратко

Обновлено: 06.07.2024



Интерфейс командной строки (англ. Command line interface, CLI ) — разновидность текстового интерфейса (CUI) между человеком и компьютером, в котором инструкции компьютеру даются в основном путём ввода с клавиатуры текстовых строк (команд), в UNIX-системах возможно применение мыши [1] . Также известен под названием консоль.

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

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

Содержание

Назначение

На устройстве-консоли, которое печатало текст на бумаге, интерфейс командной строки был единственным возможным. На видеотерминалах интерфейс командной строки применяется по таким причинам:

  • Небольшой расход памяти по сравнению с системой меню.
  • В современном программном обеспечении имеется большое число команд, многие из которых нужны крайне редко. Поэтому даже в некоторых программах с графическим интерфейсом применяется командная строка: набор команды (при условии, что пользователь знает эту команду) осуществляется гораздо быстрее, чем, например, навигация по меню.
  • Естественное расширение интерфейса командной строки — пакетный интерфейс. Его суть в том, что в файл обычного текстового формата записывается последовательность команд, после чего этот файл можно выполнить в программе, что возымеет такой же (не меньший) эффект, как если бы эти команды были по очереди введены в командную строку. Примеры — .bat-файлы в DOS и Windows, shell-скрипты в Unix-системах.

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

Формат команды

Наиболее общий формат команд (в квадратные скобки помещены необязательные части):

[символ_начала_команды]имя_команды [параметр_1 [параметр_2 […]]]

Параметры команд могут иметь самый разный формат. В основном применяются следующие правила:

  • параметры разделяются пробелами (и отделяются от названия команды пробелом)
  • параметры, содержащие пробелы, обрамляются кавычками-апострофами ( ' ) или двойными кавычками ( " )
  • если параметр используется для обозначения включения какой-либо опции, выключенной по умолчанию, он начинается с косой черты ( / ) или дефиса ( - )
  • если параметр используется для включения/выключения какой-либо опции, он начинается (или заканчивается) знаком плюс или минус (для включения и выключения соответственно)
  • если параметр указывает действие из группы действий, назначенных команде, он не начинается со специальных символов
  • если параметр указывает объект, к которому применяется действие команды, он не начинается со специальных символов
  • если параметр указывает дополнительный параметр какой-либо опции, то он имеет формат /опция:дополнительный_параметр (вместо косой черты также может употребляться дефис)

Например, в некоей абстрактной игре может быть такая команда:

  • / — символ начала команды
  • map — название команды (переход на другой уровень)
  • dm1 — обязательный параметр (название уровня)
  • /skill:2 — дополнительный параметр (задание уровня сложности)

Применение

Основные сферы применения интерфейса командной строки:

В операционных системах

Основное применение интерфейса командной строки — интерфейс операционной системы. В Windows язык командной строки не имеет чёткой стандартизации, однако существует стандарт командной строки POSIX и его модификация в рамках GNU.

В компьютерных играх

Изначально консоль в играх использовалась для отладки.



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

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

Во многих графических играх присутствует консоль для облегчения доступа к настройкам игры, поскольку в сложных играх реализовать все команды через систему меню неудобно. Первая такая игра — Quake. Стандартная кнопка для вызова консоли — ~ (тильда); реже ↵ Enter '. Консоль позволяет вносить изменения в настройки игры оперативнее, чем меню — например, набрать name Terminator быстрее, чем найти то меню, в котором вводится имя игрока, и ввести Terminator.

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

Интерфейс, который предоставляется моддерам, не всегда позволяет менять меню; но он всегда позволяет добавлять свои консольные команды. Например, в DotA (карте для игры Warcraft III) режим игры задаёт участник, играющий синими, через консоль.

В других программах

    — расширение для браузера Firefox, позволяющее управлять им, как редактором Vim

Достоинства

Недостатки

См. также

Примечания

  • Текстовый интерфейс
  • Интерфейс пользователя

Wikimedia Foundation . 2010 .

Полезное

Смотреть что такое "Интерфейс командной строки" в других словарях:

интерфейс командной строки — Разновидность текстового интерфейса (CUI) между человеком и компьютером, в котором инструкции компьютеру даются в основном путём ввода с клавиатуры текстовых строк (команд), в UNIX системах возможно применение мыши. Также известен под названием… … Справочник технического переводчика

ИНТЕРФЕЙС КОМАНДНОЙ СТРОКИ — Разновидность текстового интерфейса (CUI) между человеком и компьютером, в котором инструкции компьютеру даются в основном путем ввода с клавиатуры текстовых строк (команд), в UNIX системах возможно применение мыши. Также известен под названием… … Словарь бизнес-терминов

Интерфейс (вычислительная техника) — Интерфейс (от англ. interface поверхность раздела, перегородка) совокупность средств и методов взаимодействия между элементами системы. В зависимости от контекста, понятие применимо как к отдельному элементу (интерфейс элемента), так и к… … Википедия

Интерфейс (информатика) — Интерфейс (от англ. interface поверхность раздела, перегородка) совокупность средств и методов взаимодействия между элементами системы. В зависимости от контекста, понятие применимо как к отдельному элементу (интерфейс элемента), так и к… … Википедия

Интерфейс (компьютеры) — Интерфейс (от англ. interface поверхность раздела, перегородка) совокупность средств и методов взаимодействия между элементами системы. В зависимости от контекста, понятие применимо как к отдельному элементу (интерфейс элемента), так и к… … Википедия

Интерфейс (программирование) — Интерфейс (от англ. interface поверхность раздела, перегородка) совокупность средств и методов взаимодействия между элементами системы. В зависимости от контекста, понятие применимо как к отдельному элементу (интерфейс элемента), так и к… … Википедия

Интерфейс системный — Интерфейс (от англ. interface поверхность раздела, перегородка) совокупность средств и методов взаимодействия между элементами системы. В зависимости от контекста, понятие применимо как к отдельному элементу (интерфейс элемента), так и к… … Википедия

Интерфейс — У этого термина существуют и другие значения, см. Интерфейс (значения). Интерфейс (англ. interface сопряжение, поверхность раздела, перегородка) граница раздела двух систем, устройств или программ, определённая их… … Википедия

Интерфейс пользователя — Возможно, эта статья содержит оригинальное исследование. Добавьте ссылки на источники, в противном случае она может быть выставлена на удаление. Дополнительные сведения могут быть на странице обсуждения. (25 мая 2011) … Википедия

4. Создать список фамилий студентов группы, используя пример 1. Отсортировать список в алфавитном порядке и сохранить его в новом файле.

5. Создать текстовый файл, содержащий справочные сведения по командам DIR, COPY и XCOPУ


6. Вывести содержимое указанного в табл.2 каталога по указанному формату на экран и в файл.





Достоинства и недостатки интерфейса командной строки.

Преимущества командного интерфейса Очень низкие требования к аппаратным средствам — минимально для работы требуется клавиатура и символьное устройство вывода или терминал, соединённый с машиной. Высокая степень унификации — всё взаимодействие обеспечивается через две функции: ввод и вывод символов, часто реализуемые через файловый ввод-вывод. Широкая возможность интеграции программ — посредством использования командного интерпретатора и перенаправления ввода-вывода. Недостатки командного интерфейса Плохая наглядность интерфейса — необходимо помнить команды или пользоваться справочником. Ограниченные возможности вывода информации — отсутствие графики

Инструменты командной строки для автоматизации работы в ОС Microsoft Windows.

Создание скриптов. Точно так же, как и bat-файлы, скрипты сохраняются как обычные текстовые файлы, которые можно редактировать с помощью Notepad или другим редактором текстовых файлов. Чтобы создать файл скрипта, выберите для него понятное описательное имя, что-то типа WorkSummaryReport, и добавьте к нему расширение, которое соответствует используемому Вами языку. Скрипт, написанный на языке VBScript, должен иметь расширение файла *.vbs.

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

3. Настраиваемые свойства интерпретатора.

Шрифт, цвет, размер.

4. Различие между внутренними и внешними командами. Примеры внешних и внутренних команд.

Некоторые команды распознаются и выполняются непосредственно самим командным интерпретатором — такие команды называются внутренними (например, COPY или DIR).

Другие команды ОС представляют собой отдельные программы, расположенные по умолчанию в том же каталоге, что и Cmd.exe, которые Windows загружает и выполняет аналогично другим программам. Такие команды называются внешними (например, MORE или XCOPY).

5. Структура команды интерпретатора.

6. Получение информации о конкретной команде. /?

7. Групповые символы (шаблоны) и их использование. *?

8. Перенаправление ввода/вывода и конвейеризация команд

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

. 9. Условное выполнение и группировка команд.

В командной строке Windows можно использовать специальные символы, которые позволяют вводить несколько команд одновременно и управлять работой команд в зависимости от результатов их выполнения

Условная обработка команд в Windows осуществляется с помощью символов && и || следующим образом. Двойной амперсанд && запускает

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

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

10. Назначение символов &, &&, || и () .

Используя символ амперсанда &, можно разделить несколько утилит в одной командной строке, при этом они будут выполняться друг за другом.

11. Команды для работы с файловой системой – названия и возможности.

Команда CD Текущий каталог можно изменить с помощью команды CD [диск:][путь\].

Команда COPY [/A|/B] источник [/A|/B] [+ источник [/A|/B] [+ . ]] [результат [/A|/B]]

Команда XCOPY источник [результат] [ключи]

12. Достоинства и недостатки команд COPY и XCOPY.

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

Необходимо отметить, правда, что XCOPY может работать только с файлами и каталогами, но не с устройствами. Синтаксис

13. Назначение команды ECHO и примеры ее использования.

14. Команда DIR и ее возможности.

Команда: DIR [диск:][путь][имя_файла] [ключи] используется для вывода информации о содержимом дисков и каталогов

15. В какой кодировке интерпретатор выводит информацию и как получить читаемую твердую копию?

Наиболее старым интерфейсом является командный интерфейс (интерфейс командной строки), который был наиболее распространен в период расцвета больших многопользовательских систем с алфавитно-цифровыми дисплеями. Для командного интерфейса характерно взаимодействие пользователя с ЭВМ с помощью командной строки, в которую вводятся команды определенного формата, а затем передаются к исполнению.

Командный интерфейс реализован в виде пакетной технологии и технологии командной строки.

Для ввода информации пользователь использует клавиатуру или другое символьное устройство ввода. Пользователь получает информацию в виде текста посредством дисплея или печатающего устройства (довольно редко).

Пример командного интерфейса

Рисунок 1. Пример командного интерфейса

Работа с командным интерфейсом заключалась в следующем:

  • пользователь вводил команду с помощью последовательности символов (командной строки);
  • компьютер сопоставлял поступившую команду с имеющимся в его памяти набором команд;
  • выполнялось действие, которое соответствовало поступившей команде.

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

К преимуществам интерфейса командной строки относят:

  • низкие требования к аппаратным средствам – минимальным набором для работы является клавиатура и символьное устройство вывода или терминал;
  • высокая степень унификации – взаимодействие обеспечивается через ввод и вывод символов, который часто реализуется через файловый ввод-вывод;
  • широкая возможность интеграции программ – посредством использования командного интерпретатора и перенаправления ввода-вывода.

Готовые работы на аналогичную тему

Недостатками командного интерфейса считают:

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

Наиболее часто командный интерфейс используется при работе с командным интерпретатором, который используется как интерфейс управления операционной системой (Linux, xBSD, QNX, MS-DOS и др.).

Графический интерфейс пользователя

Графический интерфейс, WIMP-интерфейс (Window Image Menu Pointer) является неотъемлемым компонентом большинства современного программного обеспечения, которые ориентированы на работу конечного пользователя. Диалог пользователя с ПК в графическом интерфейсе ведется при помощи графических объектов: меню, значков и других элементов.

Основные достоинства графического интерфейса:

  • наглядность объектов;
  • обеспечение понятности для пользователя;
  • схожесть интерфейсов программ, которые написаны специально для использования в графической среде.

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

Пример графического интерфейса

Рисунок 2. Пример графического интерфейса

Речевой интерфейс

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


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

  • указывает пользователю ошибки в работе и находит пути их решения;
  • сообщает о ситуациях, которые нуждаются в исправлении;
  • осуществляет поиск справок из информационно-поисковых систем.

Современные операционные системы поддерживают командный, графический и речевой интерфейсы.

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


Сегодня мы поговорим о том, зачем учить операционную систему GNU/Linux, о преимуществах работы в командной строке и о том, как это все связано с философией Unix.

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

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

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

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

“Как я запущу Фотошоп на этом вашем Линуксе? Мне же нужно работать, а не заниматься ерундой.”

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

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

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

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

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

Если бы систему Unix создавали сегодня, я полагаю, такой подход просто не одобрили бы. К примеру, ввели бы систему объектов, как это сделано Майкрософтом в PowerShell, либо навязали бы использовать для обмена данными некий сериализованный формат данных, вроде JSON или YAML. Несомненно, использовали бы шифрование, сертификаты для подписывания пакетов данных, протокол был бы бинарным и не читаемым без использования специальных утилит. А работа с файловой системой и с ядром из пространства пользователя напоминала бы работу с базой данных.

Однако, на наше счастье, все эти традиции к переусложнению появились гораздо позже, и отцы-основатели системы Unix этим не слишком грешили. И, конечно, поступили мудро.

“Я вообще Python учу, за ним будущее, а этот ваш баш - это какая-то устаревшая жесть”

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

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

“Линукс нужно допиливать напильником, чтобы выглядел достойно. Вот мои конфиги.”

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

Доведя этот процесс до предела, ваше виртуальное рабочее место по навороченности и технологичности может напоминать кабину космического аппарата из научно-фантастического фильма.

“И это правильно, я меньше чем с тремя экранами не работаю. И только с механической клавиатурой.”

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

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

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

“А я работаю с Remote Desktop к моей рабочей машине и пишу код. Все шустро работает.”

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

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

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

"Все же как-то странно в 21-м веке пялиться в черный экран, графический интерфейс лучше”

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

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

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

“Мне достаточно Windows. Много лет с ним работаю и меня все устраивает. А для игр у меня PlayStation”

Понятно, что если вы используете компьютер для развлечений, то, скорее всего, вы используете операционную систему, вроде Microsoft Windows или MacOS, и вполне довольны этим. Если ваша профессия просто не оставляет иного выбора, вы будете использовать то программное обеспечение, что используют ваши коллеги и никаких проблем при этом не испытывать.

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

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

Поэтому сама постановка вопроса “что лучше” лишена смысла. Для решения тех задач, которые ставит перед нами профессия в ранее перечисленных специальностях, командная строка - это лучший возможный интерфейс, который за счет своей простоты может использоваться в любых приложениях даже для решения тех задач, для которых не создавался.

“Да кто вообще использует эту операционную систему. Мак лучше”

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

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

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

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

“Я вообще писатель и зачем мне может потребоваться погружаться во все это?”

Даже если вы не инженер и непосредственно с вашей деятельностью это перекликается слабо, у операционной системы GNU/Linux в запасе много интересных и полезных инструментов, которые имеют не только специфичное “айтишное” применение, но и являются частью всемирного наследия. К таковым, например, можно отнести систему контроля версий Git и систему компьютерной верстки текста TeX.

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

“Линукс полностью устарел, и все нужно переписывать. Там вообще весь код из семидесятых, максимум девяностых.”

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

К сожалению, такой подход часто можно встретить в различных обсуждениях, а значит подобное убеждение плотно засело в головах у множества людей. Нет ничего проще, чем выдрать из исторического контекста некоторое утверждение и возвести его в абсолют. Что же, позвольте продолжить такую линию рассуждений и поговорить о том, что и само ядро Linux полностью устарело хотя бы потому, что является монолитным. Давайте перепишем и его и перейдем на более “прогрессивную” микроядерную архитектуру, как это сделано, например, в операционной системе Minix.

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

На все это потребуется в лучшем случае сотни миллиардов долларов и годы усилий на международном уровне. Но что это по сравнению с мнением некоторых экспертов, правда?

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

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

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

Читайте также: