Почему терминальные консоли все еще используются?

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

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

Однако терминалы сохранялись, и не только это: есть службы, которые обычно упоминают это как функцию. Самый распространенный пример - услуги хостинга.

Конечно, это означает, что вместо нажатия кнопки и редактирования файла пользователь должен запомнить сотни или тысячи команд, а затем сделать что-то вроде

sudo nano /www/var/html/myfile.html

, а затем перейдите с помощью графического курсора, чтобы что-то изменить, а затем ctrl+X и Y и выберите файл для сохранения. Другими словами: анти-удобство в лучшем случае (худшее)

То же самое можно увидеть и для многих других команд, приведенное выше было всего лишь примером. Очень простой: WordPress 1-click install vs install WordPress из командной строки

Итак, мой вопрос: существует логическая причина, по которой терминалы все еще используются (в основном, технологическая причина или причина безопасности) или это просто культурная вещь >, который сохранялся каким-то образом, несмотря на все его проблемы?

EDIT: добавление другого случая: git . Я знаю, что есть GUI для git, и они гораздо удобнее, чем git на терминале. Тогда ... почему существует версия терминала?

109 голосов | спросил Devin 30 32016vEurope/Moscow11bEurope/MoscowWed, 30 Nov 2016 20:45:07 +0300 2016, 20:45:07

15 ответов


302

С точки зрения UX терминальные консоли имеют несколько ключевых преимуществ перед графическим интерфейсом. Эти преимущества редко относятся к конечным пользователям, поэтому CLI используются почти исключительно техническими пользователями и «властными пользователями» в наши дни.

Вещи, выполняемые в терминале, легко повторяемы.

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

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

Это также относится к документации и технической помощи. Предоставление четырех строк для копирования и вставки в терминальную консоль может заменить пара абзацев, объясняющих, как щелкнуть мышью по различным средствам администрирования (особенно, поскольку направления GUI могут быть только идеальными для одного из нескольких интерфейсов, см. «Интерфейсы GUI бесчисленны» ниже).

Отслеживание /аудит проще

Интерфейс командной строки (CLI) сохраняет запись о том, что вы сделали, что вы можете легко извлечь и сохранить. Когда что-то пойдет не так, ваш босс спрашивает: «Вы уверены, что сделали это точно?» вы можете получить доказательства, подтверждающие, что вы это сделали. Даже если вы допустили ошибку, вы можете легко увидеть ее и узнать из нее.

Скрипты /автоматизация почти так же легко, как ввод команд

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

Технологические ограничения могут по-прежнему заставлять CLI привлекать

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

CLI может использоваться для ввода /вывода

Некоторые называют этот Эпоху API , где системы построены поверх систем. CLI позволяет аналогичную функциональную совместимость. В примере вопроса о Git можно было бы подключить еще одну «корпоративную систему» ​​- например, систему отслеживания дефектов.

По сравнению с SOAP или даже Rest API, команды CLI могут быть легко разработаны и протестированы.

Есть только несколько стандартных оболочек; Интерфейсы графического интерфейса бесчисленными

Если вы входите в интерфейс администратора GUI из нескольких различных услуг веб-хостинга, вы, вероятно, увидите, что все они разные. Itâ € ™ s не hard , чтобы сориться и выяснить, где все, но это требует времени. В следующем году хозяин, возможно, обновил свое решение, и теперь все в немного другом месте - еще одна вещь, чтобы учиться.

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

ответил Tim Grant 30 32016vEurope/Moscow11bEurope/MoscowWed, 30 Nov 2016 23:25:57 +0300 2016, 23:25:57
252

Короче: командные строки язык ; язык дает выразительность.


Пример текстового интерфейса, который вы используете: Поиск Google . Представьте, если бы вы не могли вводить ваши запросы в виде текста в Google, и вам пришлось выбирать нужные вам документы из меню выбора (например, веб-каталога erstwhile Yahoo).


Якоб Нильсен, эксперт по юзабилити и опытный пользователь, написал с Доном Гентнером статью под названием «The Anti -Mac Interface ":

  

Gentner, D., and Nielsen, J .: интерфейс Anti-Mac, сообщения ACM 39 , 8 (август 1996), 70-82

В нем авторы указывают на недостатки многих принципов, которые входят в интерфейсы «GUI». Например,

  

См-и-точка

     

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

Они продолжаются:

  

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

целая статья , возможно, стоит прочитать и содержит много ответов на ваш вопрос.

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

  

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

     

- Joel Spolsky, Дизайн пользовательского интерфейса для программистов , с. 76

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

  

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

Обратите внимание, что изучение «языка командной строки» (подобная Bash оболочке в среде, подобной Unix, или, возможно, эквивалент Windows) открывает ученику сразу много потенциальных возможностей. Многие из них решили инвестировать в это обучение, и я могу сказать, что он заплатил красиво.


Наконец, чтобы ответить на ваш вопрос о том, почему сервисы (такие как услуги хостинга) рекламируют текстовые интерфейсы как функцию: представьте, что вы находитесь в чужой стране, где очень мало говорят по-английски, как-то борются с жестами и т. п., и вы видите знак в учреждении, в котором говорится: «Мы говорим по-английски». (Точно так же, в зависимости от того, где вы живете, вы могли видеть знаки «Se habla espaà ± ol».) Реклама, которую вы упоминаете, похожа: для тех, кто грамотен в командной строке «язык», это означает приглашение что они могут рассчитывать на богатый опыт выразительности, не ограничиваясь графическими интерфейсами, которые уже были придуманы и реализованы.

ответил ShreevatsaR 1 ThuEurope/Moscow2016-12-01T08:07:18+03:00Europe/Moscow12bEurope/MoscowThu, 01 Dec 2016 08:07:18 +0300 2016, 08:07:18
93

Длинная версия

Ответ в основном включен в ваш вопрос:

  

пользователю необходимо запомнить сотни или тысячи команд

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

Если вы попытались создать GUI общего назначения, чтобы охватить все задачи, которые выполняются в окне терминала, ваш графический интерфейс будет либо неприемлемо сложным, либо необычно ограниченным функциональностью для значительного подмножества ваших пользователей. Возьмите ваши примеры, например: «установить один клик» отлично, если все, что вам нужно, это настройки по умолчанию, но этого недостаточно для чего-либо еще. Редактирование одного файла в терминале может показаться сложным, но конечные пользователи обычно объединяют несколько текстовых утилит для определенных целей; работа в командной строке, как правило, намного больше похожа на написание коротких одноцелевых программ, чем на нажатие кнопки для выполнения предопределенной задачи.

Большинство задач, которые можно улучшить, перемещая их из командной строки в графический интерфейс, уже были - если вы не хотите использовать nano (или vi или emacs или что-то еще), например, нет недостатка в текстовых редакторах на основе графического интерфейса. (Хотя, если вы уже находитесь в командной строке и вам просто нужно сделать быстрые изменения, достаточно быстро набрать vi и сделать это быстрое редактирование, даже не дойдя до мыши.)

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

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

Краткая версия

Командная строка отлаживает обнаружение в обмен на эффективность и гибкость .

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

Последующие действия в ответ на комментарии

Нити комментариев в этом вопросе были отбракованы пару раз сейчас для chattiness, но, поскольку одни и те же точки, кажется, продолжают подниматься, я хотел бы обратиться к ним здесь:

  • Вам не нужны тысячи команд, двадцать или тридцать будут делать.

True! Вроде. Проблема в том, что 20 или 30 команд, которые вам нужны, не обязательно будут такими же, как и для следующего парня - упрощенный GUI, содержащий только подмножество команд, которые вы обычно используете, будет недостаточным для этого другого парня; и не будет работать для вас, в первый день вам нужно сделать что-то, что не является обычным делом.

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

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

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

True! Я прошел прямо к этому, да. Я изменил этот пример, чтобы сделать его несколько более безумно сверхспецифичным (но не менее правдоподобным).

Обертки GUI были выделены для множества задач командной строки и, конечно же, полезны (я трачу гораздо больше времени на графический интерфейс github, чем на git в командной строке, например), но каждый из них - только один подмножество многих типов задач, для которых используется командная строка; моя точка зрения заключалась в том, что разумный графический интерфейс не мог охватывать all или даже где-либо рядом с most , задачами командной строки. (Или, черт возьми, даже те, что для самого git, мне все же часто приходится отбрасывать обратно в командную строку для того, что интерфейс GUI не может обрабатывать.)

  • Обнаружение («Командная строка более открыта, чем вы думаете» /«GUI не так понятны, как вы думаете»)

Я использую термин «обнаруживаемый» в своем строгом смысле здесь: новый пользователь может понять, как использовать программу, просто используяпрограмма. т. е. если вы просто удалитесь на него достаточно долго, вы сможете выяснить, как это работает, не прибегая к внешним ресурсам. (Я определенно not говорит, что это единственный или лучший способ для пользователя научиться как-то использовать, просто это потенциальное преимущество GUI для CLI.)

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

Я не согласен с несколькими комментариями (некоторые удалены, некоторые по-прежнему актуальны), предполагая, что командная строка облегчает обнаружение в любой реальной степени. Если вам нужно прочитать страницу man, чтобы выяснить, как использовать функцию, это не способность к обнаружению; это обучение. Это здорово, но это совсем другое дело. Я не думаю, что в параметрах командной строки для различных инструментов достаточно согласования, чтобы аргумент, что изучение одного инструмента помогает вам понять других; и нет разумного способа, чтобы пользователь CLI обнаруживал наличие инструментов, о которых они даже не знают (нет, ls /usr/bin не совсем сокращает его, это более похоже на " дайте мне указатель на руководство в алфавитном порядке ».) Есть некоторые помощники и ярлыки, такие как завершение табуляции, но они более полезны в качестве напоминания после того, как вы узнали что-то, чем они являются способом обучения в первую очередь.

ответил Daniel Beck 30 32016vEurope/Moscow11bEurope/MoscowWed, 30 Nov 2016 22:23:53 +0300 2016, 22:23:53
55
  

Итак, мой вопрос: существует ли логическая причина

Люди могут печатать быстрее, чем с помощью мыши.

Анекдот:

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

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

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

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

ответил DA01 30 32016vEurope/Moscow11bEurope/MoscowWed, 30 Nov 2016 22:06:06 +0300 2016, 22:06:06
46

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

  • Программируемость. . Легче скопировать код с помощью стандартного ввода-вывода, чем программно манипулировать графическим интерфейсом, или написать индивидуальную интеграцию для бегуна макроса для каждого приложения, с которым вы хотите автоматизировать или интегрировать.
  • Эффективность. Если вы хотите отредактировать myfile.html, вы уже знаете имя файла и редактор, который хотите использовать. Достаточно часто, чтобы набирать то, что вы думаете , чем переводить то, что вы думаете, в серию скоординированных движений мыши в иерархическом графическом интерфейсе - найти ваш редактор и найдите свой файл. (Примечательно, что тенденция в графическом интерфейсе заключалась в том, чтобы предоставить мини-консоли, в которых вы можете просто ввести имя требуемой программы ...)

В вашем примере:

sudo nano /www/var/html/myfile.html

Если я уже знаю, мне нужно отредактировать myfile.html как администратор, и если я знаком с моим пользовательским интерфейсом (консолью и моим обычным редактором), для ввода требуется 2 - 3 секунды это:

sudo nano /w <tab> v <tab> h <tab> m <tab> <enter>

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

Это даже быстрее, чем когда у меня есть уже установленное решение в среде IDE - даже когда я знаю полный путь и имя файла. В графическом интерфейсе я должен визуально сканировать и перемещать алфавитную иерархию в find мой файл. Для меня это, вероятно, 5-15 секунд, в зависимости от того, насколько велика иерархия файлов.

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

ответил svidgen 1 ThuEurope/Moscow2016-12-01T03:14:00+03:00Europe/Moscow12bEurope/MoscowThu, 01 Dec 2016 03:14:00 +0300 2016, 03:14:00
38

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

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

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

В идеальном мире вы не думаете, что CLI - это ужасная антитеза к UX, но дополнение к GUI. Это не должно быть ни /или. Точно так же, как взрослый человек в чужой стране может вернуться к указанию. Вы должны иметь возможность выбрать то, что подходит для задачи.

Некоторые заблуждения

  • Командная строка требует, чтобы вы изучили тысячи команд.

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

    Знание nano - текстовый редактор, очевидно, незабываемо, так же, как знание того, что блокнот является редактором.

  • Командная строка трудно узнать

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

  • командная строка менее понятна, чем GUI

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

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

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

Является ли командная строка плохим UX?

Только если это плохо спроектировано! Командные строки и команды входят в разные пакеты, как и графические интерфейсы. Большинство из них не являются элегантными. Да, большинство приложений GUI тоже дрянные. Некоторые приложения в командной строке имеют потрясающе хороший дизайн и дают хороший UX, а другие нет.

В командной строке ничего плохого нет. Фактически, я отбросил приложения так же плохо, потому что у них не было интерфейса командной строки, чтобы говорить! Я также использовал некоторые приложения в течение многих лет, даже когда их графический интерфейс является crappy, потому что они и хороший интерфейс командной строки. YMMV.

PS : Удивительно, что вы можете сделать с циклом. То, что вы проводите в течение нескольких дней вручную, может быть сделано за несколько секунд. Если вы цените свое время, вы используете командную строку.

ответил joojaa 1 ThuEurope/Moscow2016-12-01T09:25:24+03:00Europe/Moscow12bEurope/MoscowThu, 01 Dec 2016 09:25:24 +0300 2016, 09:25:24
24

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

оболочка - это язык для композиции программы

Терминалы (и оболочки) - это то, что позволяет мне разговаривать с моими компьютер. Я не использую терминал, чтобы что-то делать; Я использую его для намерение системы и сделать это для меня.

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

# report status of service
systemctl status mariadb

# do it on foo.com
ssh foo.com "systemctl status mariadb"

# do it for bar-1.foo.com through bar-8.foo.com
for i in {1..8}; do ssh bar-$i.foo.com "systemctl status mariadb"; done

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

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

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

while true; do
    for i in {1..8}; do
        echo "==> bar-$i.foo.com"
        ssh bar-$i.foo.com "systemctl status mariadb"
    done > /tmp/services.txt
    if grep '^\s*Active:' /tmp/services.txt | grep -qv running; then
        mail -s "service failed!" [email protected] < /tmp/services.txt
    fi
    sleep 10m
done &

Прост достаточно. Теперь, потому что я не знаю, как извлечь информацию из визуализированного gui (OCR?), Я не могу сделать эквивалент с gui's.

Проблема, с которой я пытаюсь справиться, заключается в том, что я не могу сказать системные вещи, такие как for i in {1..8} или if grep ... с gui, и это действительно громоздко сказать, что «переместите мышь на эту координату, дважды щелкните, и подождите этот расчетный промежуток времени, прежде чем щелкнуть в этом новом окне ... », и это предполагает, что я могу догадаться, где появится новое окно ...

Я могу делать вещи с gui, но это не язык. Я не могу сказать, что я хочу сделать так, чтобы он мог сделать это для меня. Я должен сделать это сам.

легко общаться

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

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

сохраняемые действия

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

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

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

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

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

скроллбэк-буфер терминала и история оболочки

Я получил свой терминал, сконфигурированный для сохранения последних 100000 строк для отображения. Если я оставьте мой компьютер на некоторое время или не возвращайтесь к терминалу через какое-то время, я могу всегда прокрутите назад и посмотрите, что я сделал с помощью любой (терминальной) программы. я получил мою подсказку командной строки, чтобы отобразить временную метку до и после запуска команда. Я всегда могу сказать, как долго команда выполнялась без предварительной работы это с time. Это так просто, но как бы вы это сделали с помощьюгуй? Воплощать в жизнь какое-то воспроизведение видео для рабочего стола всегда будет записываться?

У меня также есть оболочка для сохранения последних 2000000 команд в файле истории. Если я посмотрите на файл, он не только имеет команды, у каждого есть метка времени когда я его запустил. Несколько месяцев назад мой босс попросил меня сделать некоторые задания, которые я сделал несколько месяцев после найма. Я не могу вспомнить сейчас, но я помню, что не мог помните тогда. Это были несколько сложных команд с несколькими наборами серверов. К счастью, я все еще держал команды в файле истории. Это было так безумно легко найти их и повторно запустить их. Я был так впечатлен, я увеличил свой ограничение размера истории на два порядка. Что бы вы сделали в этом если все, что вы делаете, было с gui?

проще для программирования

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

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

Программирование для терминала вместо gui также имеет другое значение: text файлы конфигурации, предназначенные для редактирования вручную. Когда вы в последний раз использовали GUI-программу и, как ожидается, настроит ее, открыв файл, отредактировав его и затем перезапустить программу? Пользователь GUI-программы ожидает, что сможет настройте его через gui.

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

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

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

одиночный вход и выход

Когда у меня возникают проблемы с какой-то программой, и сообщение об ошибке не слишком полезно, я запускаю его с помощью strace. Вывод strace и программы и я могу посмотреть, что он сделал, что вызвало ошибку непосредственно перед ней печать сообщения, которое меня беспокоит. Если программа не заканчивается после первая ошибка возникает, я также могу передать вывод в sed '/message/q' или например, чтобы он убил программу при печати сообщения.

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

ответил JoL 1 ThuEurope/Moscow2016-12-01T14:38:17+03:00Europe/Moscow12bEurope/MoscowThu, 01 Dec 2016 14:38:17 +0300 2016, 14:38:17
19

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

Конечно, с расширенным использованием я бы запомнил несколько общих значков (хотя я до сих пор не могу понять, почему они должны быть «интуитивными»), но встретить меня с новым, и еще раз я не знаю. Хуже того, нет никакого способа найти картинку **. С незнакомой командой я могу просто запустить «man strange_command», посмотреть в указателе руководства по программе или использовать поиск Google.

Люди - это, естественно, словесные существа - ведь язык - это то, что должно отличить нас от остальных животных, не так ли? Для тех из нас, кто использует алфавитные языки, хороший лексикон для чтения на нашем родном языке будет выше 50 000 слов. (Те, у кого есть несколько языков, могут легко добавить 10 тыс. Или более на язык, в зависимости от беглости.) Мы можем либо искать незнакомые слова в словаре, либо выводить их смысл из контекста. Добавление нескольких тысяч (не сотни тысяч), необходимых для использования CLI для этой базы, легко выполняется.

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

PS для @nekomatic: для доказательства, как насчет этого: http://www.pewresearch.org/fact-tank/2015/10/19/slightly-fewer-americans-are-reading-print-books -new-survey-find / Буквально первая ссылка, найденная в поисках «процентов американцев, которые в этом году не читали книгу». Из ссылки «Около 27% взрослых сказали, что они не читали книг за последний год ...» и «Среднее количество книг, прочитанных женщинами, составило пять, по сравнению с медианной из трех человек для мужчин ... «Если это не функциональная неграмотность, что такое?

* Я подозреваю, что популярность GUI идет рука об руку с увеличением функциональной неграмотности. Аналогично, входной сигнал голоса & выход.

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

ответил jamesqf 1 ThuEurope/Moscow2016-12-01T08:37:26+03:00Europe/Moscow12bEurope/MoscowThu, 01 Dec 2016 08:37:26 +0300 2016, 08:37:26
14

Возможно, я ошибаюсь, но ...

Пользовательский опыт - не единственная программа для вождения.

Создание и изменение программы намного проще, если вы имеете дело только с терминальными вводами и выводами.

Люди не являются основным пользователем терминальных программ

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

и потому, что я здесь: фокус

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

ответил user94222 1 ThuEurope/Moscow2016-12-01T03:10:08+03:00Europe/Moscow12bEurope/MoscowThu, 01 Dec 2016 03:10:08 +0300 2016, 03:10:08
8

Из-за двух простых причин

  1. Работает
  2. Это мощный

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

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

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

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

ответил Mario Chapa 1 ThuEurope/Moscow2016-12-01T03:10:18+03:00Europe/Moscow12bEurope/MoscowThu, 01 Dec 2016 03:10:18 +0300 2016, 03:10:18
8

Обратная совместимость и встроенные системы

Эта 30-летняя система, которая запускает авионику в B-52, все еще должна поддерживаться. Как и микроконтроллер в насосе, который питает водонапорную башню, или систему, которая управляет конвейерными лентами на моей фабрике.

Аварийное восстановление

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

Удаленный мониторинг, диагностика и управление

Это особенно актуально, когда вы находитесь в ситуации с ограниченной пропускной способностью. Если мои первичные, вторичные и третичные широкополосные линии связи потерпели неудачу, но у меня все еще есть модем 56k, я не собираюсь тащить эту схему, отправляя данные GUI через нее. Я собираюсь использовать CLI для удаленного входа в маршрутизаторы, чтобы я мог понять, что не так, и заставить их работать снова.

ответил John Feltz 1 ThuEurope/Moscow2016-12-01T03:20:34+03:00Europe/Moscow12bEurope/MoscowThu, 01 Dec 2016 03:20:34 +0300 2016, 03:20:34
4

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

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

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

ответил Dev 1 ThuEurope/Moscow2016-12-01T03:22:49+03:00Europe/Moscow12bEurope/MoscowThu, 01 Dec 2016 03:22:49 +0300 2016, 03:22:49
4

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

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

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

ответил Spencer Williams 3 SatEurope/Moscow2016-12-03T01:18:14+03:00Europe/Moscow12bEurope/MoscowSat, 03 Dec 2016 01:18:14 +0300 2016, 01:18:14
3

Управление и точность

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

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

ответил Alvaro 1 ThuEurope/Moscow2016-12-01T03:45:05+03:00Europe/Moscow12bEurope/MoscowThu, 01 Dec 2016 03:45:05 +0300 2016, 03:45:05
2

Некоторые ответы приблизились, но никто не попал в цель.

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

Следуя этому, что касается того, что нужно щелкнуть, способность вводить команды на человеческом языке намного превосходит силу, которую можно использовать, установив флажки или нажав кнопки. Диапазон и точность, которые можно передать лишь несколькими простыми словами, являются далеко идущими и неограниченными. Что делает, если цвет «chartreuse» не является одним из флажков, но это опция в программе?

ответил Rob 1 ThuEurope/Moscow2016-12-01T05:08:25+03:00Europe/Moscow12bEurope/MoscowThu, 01 Dec 2016 05:08:25 +0300 2016, 05:08:25

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132