Комментарии 434
Почему работать в консоли настолько приятно? Так задумано отцами-основателями UnixМне вот не приятно работать в консоли, и километровые маны и треды на Лоре читать не приятно. Напротив, дабы получить результат, приятно нажимать на кнопочки, при наведении на которые мне ещё и подсказку напишут. Ах да, ещё люблю стабильный API, а не набор случайных программ и хидеров, которые прикидываются им.
Собственно статья в типичном стиле «только UNIX», вида — терминал правильно, все остальные подходы — для пользователей.
Особая философия Unix настолько глубока и фундаментальна, что породила целые классы Unix-подобных систем, к числу которых относятся BSD, macOS и Linux. Все они построены на этой философии. А побочный эффект работы в такой системе — чувство правильности и цельности. Что так всё и должно работать: из кирпичиков, маленьких строительных блоков, которые сцепливаются в конвейеры любой сложности. Это же гениально.Особенно люблю, когда начинающему разработчику, который ещё «hello world» не научился писать(на любом языке), вместо помощи, или хотябы игнорирования, вбивают в голову философию и какой дистрибутив Arch(ведь стабильная Ubuntu тоже для пользователей, а не профессионалов) следуют поставить. Часто заканчивается тем, что человек бросает это сложное и непонятное программирование, так и не узнав что существуют IDE, а не только лишь Vim, да и программировать можно не только в никсах.
Выпиливание из FireFox-а FTP клиента, со словами «пользуйтесь отдельной программой» видимо тоже часть философии, класс, это же гениально!
А просто прочитать 10 абзацев и просмотреть парочку картинок с информативной и исторической точки зрения, радоваться жизнью и продолжать клацать по кнопочкам, а не ныть, слабо? Тем более что в статье не нашел призыва пересесть на консоль.
Кроме того, если оформить всё это в GUI, внезапно окажется, что не так уж там много возможных действий. Чем GUI и выигрывает — не надо на каждое действие делать отдельную кнопку, всё можно разумным образом сгруппировать.
Тогда посоветуйте такой GUI к ffmpeg. Я не знаю, какая самая труЪ программа для конвертации видео, каждый раз страдаю: их выше крыши, они предоставляют различные ~ненужные~ функции, не предоставляют нужные, зачастую платные итп итд.
Недавно я искал конвертер, скачал какой-то из поисковой выдачи. Оказалось, уменьшить разрешение можно, а увеличить (растянув) нет. Выбрать всю папку можно, несколько файлов из папки нет.
Пришел к выводу, что быстрее было бы сдеалть с помощью ffmpeg (который, к к тому же, уже стоит или ставится за 15 секунд через apt/pacman/etc), чем перебирать GUI-шные проги и читать обзоры вида "Топ 10 бесплатных видеоконвертеров".
Тогда посоветуйте такой GUI к ffmpeg.
HandBrake
И небольшая цитата из статьи habr.com/ru/post/400251
Можно сказать, что это идеальная графическая оболочка для ffmpeg (кстати, команды ffmpeg можно изучать по логам HandBrake, это лучше мануала).
Первый же комментарий: "С другой стороны, некоторые настройки в нём намертво прибиты гвоздями и не настраиваются."
За четыре года, может, что-то и изменилось, конечно.
Если не изменяет память, это и есть герой моего комментария. Увеличить нельзя, обработка нескольких файлов как-то через задницу. Не исключено, что не осилил. Или спутал.
apt show handbrake-cli
[...]
Description: Versatile DVD ripper and video transcoder (command line)
HandBrake is a versatile, easy-to-use tool for converting DVDs and other
videos into H.264, XViD, or OGG formatted media. It's particularly useful
for making videos that are compatible with portable video devices such as
the Apple iPod/iPhone or Sony PSP.
.
This package contains the command-line variant, HandBrakeCLI.
Хотя несомненно Photoshop является удобной программой, возможно лучшей в своем роде.
Что касается MSOffice — попробуйте решить следующую задачу в Excel не используя код\формулы: есть два набора данных, где есть ключ (id), который совпадает и некий набор данных.
Например:
«somekey»;«mistergrim»;«05:04»,«somekey»;«MSOffice»;«GUI»;
А на выходе нужно получить следующее:
«somekey»;«mistergrim»;«05:04»;«MSOffice»;«GUI»;
Естественно таких строк очень много и разбросаны они в произвольном порядке.
С использованием формул или скриптом на VBA это делается довольно просто, получится ли у вас это сделать используя только GUI?
Но речь всё же немножко не о том, а о том, что в упомянутых программах возможностей на порядок больше, чем в ffmpeg, но! на нас не вываливают их все кучей. И основные, наиболее часто используемые — все на виду. Ресайз картинки в фотошопе любой школьник может сделать, который даже его в глаза не видел. А вот как сегодня называется команда ресайза в ffmpeg? MAN FFMPEG и поехали.
И логичнее сравнивать с Premiere Pro: обрезать видео там действительно любой сможет и это интуитивно понятно, а что-нибудь посложнее?
Буквально на днях у меня был в точности такой случай, и решился четырьмя кликами в GUI.
Контрпример — Blender. Уйма настроек. Практически всё доступно в GUI(за исключением, например, "отрендерить вьюпорт в картинку вместо экрана", это надо делать через Python, смотри далее), разбитом на режимы и закладки, плюс он ещё и конфигуриуется. И не перегружен, и доступен.
Скриптинг через Python, включая как построение сцены/анимирование/композитинг, так и команды запуска рендера и подачу скрипта на автоисполнение.
И сверх того команды для консольного запуска, вплоть до "взять ту сцену, запустить вот этот скрипт, отрендерить результат вот туда, GUI при этом всём не включать", что позволяет поставить его в планировщики и всякие автоматизированные системы распределённого рендера "кадр тут, кадр здесь" без задействования оператора.
То есть вполне можно сделать нормальный GUI. И сделать доступным примерно всё. И не перегрузить пользователя. Одновременно.
И при этом предусмотреть "расширенный режим" для тех, кому не обязательно нужен GUI.
Тут возникает вопрос: а не потребует ли разработка/имплементация адекватного гуя больше человеко-часов, чем сам функционал?
Забавно, что именно Blender как раз регулярно выставляют примером неудобного и перегруженного GUI. И кому верить?
Потом они придумали ленту, которая объединила меню и тулбары, вобрав минусы обоих. Да, для людей, которым ворд — тупо текстовый редактор с минимальными функциями форматирования, стало гораздо проще. Но эффективность работы, когда ворд — это инструмент, стала хуже. Не говоря уже о необходимости держать в голове майдмап того, на какой вкладке какая функция (т.е., знать этот редактор достаточно хорошо, чтобы помнить, где находятся используемые функции).
Естественно, есть люди, которым лента нравится. Но имея опыт нечастого (раз в год) чрезвычайно активного использования ворда (вёрстка сложного документа из пачки более мелких), пришел к решению договориться со всеми кто готовит исходные доки, чтобы они при необходимости сохраняли в режиме совместимости (отдельную головную боль приносит Equation, которые мелкомягкие тоже поменяли без обратной совместимости, впрочем здесь тоже есть решение).
При чем, как с иностранным языком, есть правила, есть исключения. Но со временем они заучиваются тоже.
Язык жестов всем хорош, его даже в совершенно незнакомой стране поймутНе факт, что поймут — у жестовых языков свои разные группы и диалекты, причем географически не совпадающие с устными. К примеру, американскому глухому человеку будет затруднительно общаться с британскими глухими — это языки разной группы, они отличаются довольно таки сильно. А вот русским понять американцев и наоборот будет несколько проще, т.к. языки принадлежат французской группе.
Насколько мне память не изменяет, пока в одних сторонах кивать головой это "да", в других этот же жест означает "нет".
P.S. Погуглил — Албания, Болгария, Греция.
Программы с графическим интерфейсом разговаривают с нами практически на одном и том же языке понятий, действий, символов (привет, кнопка с дискетой!). Консольные программы — чуть ли не каждая имеет свой язык, причём основанный даже на разных принципах.
Я бы поспорил. Так же, как у GUI есть паттерны (кнопка дискеты, меню, чекбоксы, "кнопка гамбургер" итп), у консоли тоже есть свои паттерны:
- -h/--help, man xxx. Собственно, точка входа, если вы не знаете, как этим пользоваться. Есть почти везде
- длинные --long и короткие -s аргументы
- работа через stdin/stdout
Да, не везде это так (напр. не все принимают stdin), но и GUI не всегда красивый и понятный. Особенно, если его делал программист для себя/других программистов (а большинство консольных утилит — это вот такой опенсурс).
Ну и да, вы можете сказать, что этих общиъ паттернов мало, но и GUI программы не повторяют друг друга 1-в-1, а просто имеют общие паттерны, и в них все равно нужно разбираться, особенно, если функций там выше крыши.
А вот про аргументы к командам, кстати, есть вполне четкая логика, которая валидна почти везде
Отсюда проблемы так сказать с гуи. Чтоб обновить статью нужно либо переснять видео, либо по новый переделать скринов. А команды просто переписать, если там совсем кардинально не поменялось, хотя обычно команды и не меняют
хотя обычно команды и не меняют
Расскажите это админам MS Exchange, где с 2007 по 2016 версии роль PowerShell дважды менялась с "очень редкие вспомогательные операции" до "практически всё управление — только здесь" и наоборот. Соответственно, синтаксис командлетов тоже менялся, при чём весьма значительно. GUI, правда, там менялся не меньше — от чистого MMC до чистого WEB.
Столкнулся с подобным при работе с Blender. GUI очень сильно меняется из года в год. Найти актуальные скрины в инструкциях практически не возможно.
Это не говоря про косяки вида опция сейчас «включена» или «выключена», т.к. автор решил вместо однозначных чекбоксов использовать изменение цвета фона кнопки на непонятно какой оттенок.
Обладая 1) хорошим знанием клавиатуры 2) хорошим знанием системы (либо используя history — то есть разобравшись один раз и умея найти команду с помощью CTRL+R — желательно используя FZF) — решать задачи с консоли эффективней (то есть быстрее) В РАЗЫ. Если 1) или 2) пункта нет — то графический интерфейс будет, конечно, удобнее. Но если компьютер это ваша работа и с работой вы предпочитаете справляться хорошо — лучше подтянуть 1) и 2) пункты.
Скажем так, если вместо того что бы написать «cd» вам быстрее 1) взять мышку в руки 2) начать вести в сторону «мой компьютер» 3) попытаться ПОПАСТЬ в эту иконку — то есть ее можно проехать, недоехать, нужно замедлиться при приближении, и т.п. — значит у вас серьезные проблемы с клавиаутрой. Если дрессировать обезьяну на консоли и на GUI (то есть вас) — на дистанции быстрее будет «cd». Добавим что современный shell (например fish) при cd сразу предложит закончить команду той директорией, в которую вы последний раз заходили (как и с другими командами, впрочем).
Скажем так, если вместо того что бы написать «cd» вам быстрее
Win+E — открывает окно проводника
В адресной строке есть что-то похожее на completion
Никто не запрещает открыть сколько нужно окон в разных каталогах и переключаться к 1 клик мышки.
Вывод: GUI тоже можно изучить.
Чтобы без мыши перейти в директорию, надо один раз нажать Win+E, подождать пока оно откроется, потом нажать 3 раза таб (причем промахнуться легко, он подсвечивает только символ >, я промахнулся несколько раз в процессе, причем быстро это делать не получится, даже если запомнить количество нажатий, т.к. надо ждать пока окно появится), потом нажать Enter или пробел, чтобы поле ввода адреса выделилось, потом ввести нужны путь (причем аналога tab нет, нужно поставить слеш и подождать), а потом оказывается, что ширина дропдауна ограничена и ты реально не видишь окончание пути и надо уже реально по одной перебирать, потому что в поле адреса виден конец пути, а в подсказках — только начало.
Изучить конечно можно, но вот уж реально — проще мышкой натыкать.
Меняем на F4 -> Ctrl + A.
Работает. Но почему-то в таком режиме сломались подсказки. Как будто что-то рисуется поверх дропдауна. При этом если табом перейти, то все хорошо.
Ну и глобально это косяк с подсказками не чинит.
Подсказанный ниже Alt+D кстати не ломает.
Но в любом случае, это дольше. И очень не хватает tab-tab для листинга возможных вариантов с учетом частичного ввода. Учитывая поломанные подсказки для длинных путей — такое себе решение. Хотя технически работает, да.
Можно чуть быстрее — Win+R и начинаем ввод пути… потом — Enter. Наглядная автоподстановка (в том числе и сетевых шар по SMB) — бонусом.
Так и должно быть. Более того, в GUI бывает точно так же. Потому что есть такое понятие — предметная область. И любая мало-мальски сложная предметная область — обладает своим языком, понятиями, терминологией (возьмите хоть любой из читаемых в ВУЗах курсов). Консольные программы, оперируя текстом, отражают язык соответствующей предметной области довольно чисто. А в GUI у вас появляется выбор: или оно говорит на понятных всем символах, а значит, не может действительно сложные вещи. Или в этом GUI опять же должны быть введены соответствующие языку предметной области символы, и тогда в таком GUI опять же придется разбираться — примером тому рядом по треду люди сообщали о редакторах видео, где кроме примитивных операций типа обрезки ничего не было понятно, как делать.
Отдельно в контексте статьи и начала треда нужно заметить, что работа программиста, по сути, заключается в переводах между разными языками, т.е. у него не должно быть проблем с изучением новых языков. Соответственно, программист, который жалуется, что у него проблемы с изучением языков, как минимум вызывает недоумение, если не сказать неполноценен.
Так и должно быть. Более того, в GUI бывает точно так же. Потому что есть такое понятие — предметная область. И любая мало-мальски сложная предметная область — обладает своим языком, понятиями, терминологией (возьмите хоть любой из читаемых в ВУЗах курсов). Консольные программы, оперируя текстом, отражают язык соответствующей предметной области довольно чисто.Эээм, а например редактор схем? Консольная программа ДЕЙСТВИТЕЛЬНО сможет правильно отразить предметную область, серьезно?
А в GUI у вас появляется выбор: или оно говорит на понятных всем символах, а значит, не может действительно сложные вещи.Можно мне аналог Photoshop консольный привести в пример. Действительно есть более продвинутая консольная версия, в которой можно делать более СЛОЖНЫЕ вещи?
Или в этом GUI опять же должны быть введены соответствующие языку предметной области символы, и тогда в таком GUI опять же придется разбираться — примером тому рядом по треду люди сообщали о редакторах видео, где кроме примитивных операций типа обрезки ничего не было понятно, как делать.Тут в комментариях уже обсуждали одну консольную программу для обработки видео, с которой без копипаста не разобраться.
Отдельно в контексте статьи и начала треда нужно заметить, что работа программиста, по сути, заключается в переводах между разными языками, т.е. у него не должно быть проблем с изучением новых языков. Соответственно, программист, который жалуется, что у него проблемы с изучением языков, как минимум вызывает недоумение, если не сказать неполноценен.Консольный интерфейс конкретной программы обычно не является языком программирования, поэтому не очень понимаю о какой неполноценности речь, даже более того — программист в принципе не обязан изучать все языки.
Ну, а что — приятно же рассказывать об удовольствии прогулок пешком по лесу, когда в гараже есть бмв?
Если что: я где-то с 70-х с компами общаюсь, все варианты прошёл — и прямой ввод hex с пульта, и «консулы» и все стадии экранных интерфейсов. Как и положено, любой вариант, если нет выбора — наказание и абсурд.
демонстрируются в интерфейсах с окошками и кнопочками :-)
Это вы про что?
Ну, а что — приятно же рассказывать об удовольствии прогулок пешком по лесу, когда в гараже есть бмв?
Но по лесу я лучше пешком, ваш бмв между первых кедров вклинит. Просто каждому инструменту свое. Что-то удобней, надежней и быстрее в консоли, что-то и мышем натыкать будет эффективнее. Сам и консоль и мышь использую. Нужен просто разумный баланс, опирающийся на характер задачи (точнее, ее решение). Фаерволл в линуксе я лучше руками пропишу, а фотку отредактирую в гимпе, мышем
Если что: я где-то с 70-х с компами общаюсь,
все варианты прошёл — и прямой ввод hex с пульта,
и «консулы» и все стадии экранных интерфейсов
Аналогично, коллега!
Ну только я начинал на втором десятке прожитых лет соответственно во второй половине 80-х.
Тем, кто всё это начинал в 70-80-90 (наверно не позднее первой половины 90-х), тем консоль — не только не помеха, но даже и наоборот, друг, товарищ и брат! (ну или сестра, если консоль — она; а если терминал, то очень даже и брат)
Любой интерфейс надо с умом проектировать, чтобы с ним было приятно работать.
Не стоит так словами необдуманно бросаться. С CLI у git
дело обстоит получше многих других утилит. Если Вы не видите системности, это не значит, что её нет. Она есть.
"получше многих других утилит."
Есть утилиты, у которых с понятностью ещё хуже. Возможно ;)
"Если Вы не видите системности, это не значит, что её нет. Она есть"
Системность подобна суслику :) Она конечно же есть, но зачем ее так усиленно прятать?
С системностью у гита плохо, как и у других поделий Торвальдса. Полторы сотни команд на системность никак не тянут, простите. И это еще только количественный признак, не рассматривая мешанину ключей и действий ad hoc внутри многих из них.
У Торвальдса буквально есть лишь одно "поделье" — ядро линукса. И то, что вы так огульно складываете всё в одну корзину лишь демонстрирует, что ваш тезис про "несистемность" базируется на невежестве.
PS: работа с git из консоли проста и логична — когда ты действительно понимаешь как он работает. И это снова приводит к контексту невежества.
начинающему разработчику… вбивают в голову философию и какой дистрибутив Arch… человек бросает это сложное и непонятное программирование
Но ведь ничего про это в статье нет. Мне кажется это какая-то ваша личная история (ну, скорее всего не ваша, а где-то виденная вами), которую вы зачем-то спроецировали как общую ситуацию.
Что же касается «терминал правильно, все остальные подходы — для пользователей» — весьма часто так оно и получается. Огромное количество именно компьютерно-профессиональных вещей делается в консоли. Никто не заставляет писать код в Vim вместо привычной IDE (хотя и не запрещает), но GUI для очень многих программ или слишом сложны, или избыточны, или бесполезны с практической точки зрения.
Кроме того, как человек, который использует i3 в роли wm из-за развитой системы хоткеев и автоорганизации пространства могу сказать, что для скорости и удобства очень важны именно хоткеи — клавишные комбинации. Возможность писать, запоминать и повторять команды вслепую и с максимальной скоростью очень и очень помогают продуктивности.
Да, те же IDE позволяют _почти_ всегда обойтись без мыши, но стоит привыкнуть делать все с клавиатуры и оказывается, что так проще объяснять, проще запоминать, проще искать и проще повторять. Но кривая освоения да, совершенно другая и плохо подходит для массового внедрения (что и доказала практика).
Но кривая освоения да, совершенно другая и плохо подходит для массового внедрения (что и доказала практика).
Кстати не факт. Неизвестно как бы выглядел наш мир, если бы Microsoft в свое время не монополизировали рынок операционных систем.
С современными системами автодополнения и удобной консолью, можно не читая мана вполне разобраться как работает консольная команда, просто тыкая Tab, и смотря что получилось; также как все учились гуям тыкая во все кнопки подряд.
Никто не заставляет писать код в Vim вместо привычной IDE (хотя и не запрещает), но GUI для очень многих программ или слишом сложны, или избыточны, или бесполезны с практической точки зрения.
Это всё нивелируется клавиатурными шорткатами. «Не-консоль» — это необязательно «мышь и кнопки». Какой-нибудь FAR (mc, что угодно) в противовес консоли при манипуляции файлами — это тоже не мышь с кнопками, а клавиатурные комбинации, но при этом с визуальной составляющей.
Ну то есть каждый пользуется на самом деле чем угодно, просто имхо нельзя сказать, что что-то чем-то нивелируется. По гибкости, потенциалу для сложных операций и автоматизации треминал все-таки вне конкуренции. Но, если использование сводится к «иногда скопировать, переместить или удалить файл или папочку в другую директорию», то в целом никаких ощутимых проблем не будет. Пока не понадобиться поискать файлы с определенного типа, включающие в себя строку «habrhabr» и получить их список отсортированный по дате модификации.
Вот тогда становится больно и, хоть я потратил сейчас пару минут чтобы вспомнить синтаксис awk, но заменить подобное:
grep -r habrhabr -l .|xargs stat -c '%Y %n'|sort|awk '{ print strftime("%c",$1) $2 }'
# или, если не знаешь что awk умный
grep -ri habrhabr: -l .|xargs stat -c '%Y %n'| sort| awk '{print $2}'| xargs ls -ltr --time-style="+%Y%m%d %H:%M"
# или, если нужен самый свежий файл, то просто
grep -ri habrhabr: -l .|xargs stat -c '%Y %n'| sort| tail -1
интерфейсом быстро получится вряд ли, а если и получится, то времени на этой уйдет сильно больше чем на 2 гуглозапроса «grep sort by date» и «linux how to convert unix timestamp to date», остальное достается из головы без особых проблем. А ведь потом это еще можно алиасом повесить/в скрипт положить и искать просто командой «whereIsHabr $dir_to_search».
По гибкости, потенциалу для сложных операций и автоматизации треминал все-таки вне конкуренции.Тут соглашусь.
Но, если использование сводится к «иногда скопировать, переместить или удалить файл или папочку в другую директорию», то в целом никаких ощутимых проблем не будет.А тут, на мой взгляд, большинству всё-таки удобнее в файловых менеджерах
Пока не понадобиться поискать файлы с определенного типа, включающие в себя строку «habrhabr» и получить их список отсортированный по дате модификации.В проводнике в Win7 для этого надо набрать habrhabr в поле поиска, кликнуть «тип:» выбрать или набрать (если нет нужного) тип файла. Потом выбрать «Дата изменения» в поле «Упорядочить»
Для того чтобы это проделать мне не пришлось ничего гуглить. Я только знал, что в проводнике есть поиск. Остальное наклацал, глядя на визуальные подсказки интерфейса.
Вы выбрали неудачный пример действия, которое нужно многим, и поэтому есть хорошее гуёвое решение.
P.S. показательно, что конкретные опции grep и awk вам пришлось гуглить, а не писать из головы. Графический интерфейс своим наличием даёт подсказки, что позволяет гораздо реже гуглить или читать маны.
grep -r
необязательно ставить точку, она подразумевается по умолчанию. (Просто в качестве лайфхака)Зависит от версии грепа.
потому что просто мне лично быстрее таскать файлы через cp/mv или удалять через rm с возможностью быстро указать фильтр (вроде mv *.asd ../new/), чем в GUI (mc — это тоже GUI) селектить нужные файлы и потом тыкать f5.
Мне лично — наоборот, потому что выражение «селектить» для данного примера означает:
+
*.asd
Enter
После чего —
F5
Далее, в зависимости от того, открыта ли у нас .\new или нет — либо просто
Enter
либо
.\new
Enter
По количеству нажатий — в худшем для GUI случае одинаково (даже чуть меньше, а в случае Windows cli, с «copy» и подавно), потому что обсуждаемые нортоноподобные менеджеры позволяют ввести как фильтр, так и целевую директорию — это текстовые поля. Их, менеджеров, плюс — в том, что если целевая директория открыта, становится еще удобнее. Подсказки по путям в консоли для быстрого набора имени файла тоже заменяются на Alt+начало имени файла для быстрого позиционирования.
и получить их список отсортированный по дате модификации.
Да, можно придумать такие примеры. Лично для меня это синтетический пример вида «как бы я съездил на другой конец города за тормозными колодками и маслом, если б не было машины», но у каждого свои задачи, конечно.
В моем случае (Far) это делается так: используем обычный поиск F7 для задания маски файла и подстроки поиска в файле (это стандартный функционал начиная с первого нортона, наверно), потом используем опцию «Panel», которая создает временную панель с найденными файлами. Сортируем ее так как нам хочется стандартными двухклавишными шорткатами.
Если мы хотим получить список, выбираем все файлы, потом копируем имена в буфер обмена, всё.
Osnovjansky
Ну, тут человек хочет этот список потом, наверно, не просто прочесть, а скормить чему-то еще для обработки в заданном порядке.
Пока не понадобиться поискать файлы с определенного типа, включающие в себя строку «habrhabr» и получить их список отсортированный по дате модификации.
в FAR это делается в пару кликов =)
А ведь потом это еще можно алиасом повесить/в скрипт положить и искать просто командой «whereIsHabr $dir_to_search».
Добавляется в FAR USER MENU или вешаешь макрос и в один клик =)
Безусловно, но странно приводить в пример программы, которые изначально рассчитаны на работу без мыши и хоть и представляют собой некий GUI, но созданный в дополнение к чисто консольному интерфейсу. Не зря там внизу терминал висит (по крайней мере в оригинальном фаре он был, как сейчас — не знаю).
… мне лично быстрее таскать файлы через cp/mv или удалять через rm с возможностью быстро указать фильтр (вроде mv *.asd ../new/), чем в GUI (mc — это тоже GUI...)
А началось все с того, что я сказал, что ряд проблем нивелируется клавишными шорткатами, их комбинациями.
Для разных трюков с файлами придуманы файловые менеджеры. С помощью однострочников на bash достаточно эффективно можно делать те же трюки. Но far проще ;)
Нет, mc или Far — это не GUI, а TUI.
Во-вторых, это условное деление. Что считать текстом? Вот есть у вас TotalCommander — он еще TUI или уже GUI? Функционал и принципы те же.
Во-вторых, это условное деление. Что считать текстом?
Всё, чем можно пользоваться через ssh без -X.
Достаточно чёткое деление?
saboteur_kiev
есть GUI, есть TUI, есть CLI — это все немного разные вещи
С CLI вопросов нет. А вот допустим, у нас есть программа, написанная на Visual Basic for DOS или борландовских пакетах — там есть окна, чекбоксы, кнопки, но нарисовано все текстом, 80*25. Это мы считаем за GUI или за TUI? Чем, кроме технических деталей реализации, это отличается от графического окна в Win32 с теми же кнопками и чекбоксами?
Это «деталь технической реализации», а для пользователя нет разницы
Почему же, в mc я могу запайпить ввод вместе с управляющими последовательностями, а в totalcmd — не могу.
Соответственно, заскриптовать действия в mc я могу, а в totalcmd — не могу.
saboteur_kiev
Ну вот фар я могу запихнуть в терминал, а тоталкоммандер — нет.
Ну и что? Это техническая деталь реализации — как выводится символ/меню на экран — попиксельно через GDI или через эмулятор терминала, который распознает символ в буфере и потом так же попиксельно его нарисует в графическом режиме. Пользователю, который с интерфейсом взаимодействует, оно до лампочки имхо.
Безусловно, но странно приводить в пример программы, которые изначально рассчитаны на работу без мыши и хоть и представляют собой некий GUI, но созданный в дополнение к чисто консольному интерфейсу. Не зря там внизу терминал висит (по крайней мере в оригинальном фаре он был, как сейчас — не знаю).
Вы как бы не путайте теплое и мягкое.
Есть конкретная разница между CLI и другими видами интерфейса.
Мали ли где там внизу висит терминал, я могу в винде тоже запустить терминал и подвинуть его мышкой вниз.
Да, ФАР очень удобно использовать вместе с CLI, у них отличная интеграция, но сравнение вполне хорошее.
И это просто настройки, а если нужна какая-то логика, как в примере с
wget -O - -q reddit.com/r/earthporn.json | jq '.data.children[] |.data.url' | head -1 | xargs feh --bg-fill
то это превратится в адский ад на несколько экранов или все придется заворачивать «под капот», т.е. писать отдельный софт.
Хороший GUI — простой GUI, а это значит что у пользователя придется отобрать всю кастомизацию и засунуть его в прокрустово ложе. Эдакий условный «подход Apple». Может вам конечно такое и нравится, но мне бы хотелось иметь выбор для того чтобы я эффективно мог решать свои задачи, а не задачи каких-то среднестатистических пользователей.
Реальный пример из жизни: мне для работы нужно RDP подключение которое будет «изолированное», т.е. никак не взаимодействовать с клиентом с которого я подключаюсь. Один из самых важных критериев сделать так, что бы буфер обмена в RDP сессии и буфер обмена локальный были разделены.
В xfreerdp это делается добавлением параметра "-clipboard" в строку запуска. В Windows это вообще можно сделать только на сервере и выглядит это примерно
В AD создаем подразделение, запихиваем туда всех пользователей с ограничением, создаем новый объект групповой политики, редактируем ее: Конфигурация пользователя → Политики → Административные шаблоны → Компоненты Windows → Службы удаленных рабочих столов → Узел сеансов удаленных рабочих столов → Перенаправление устройств и ресурсов. Включаем «Не разрешать перенаправление буфера обмена», применяем политику к подразделению, членам которого запрещаем буфер обмена.
Когда серверов много, то маленький параметр в консольке сэкономит невероятное количество времени по сравнению с GUI.
Когда серверов много — поможет AD с ее политиками.
Иногда по выходным загружаюсь в неё, она у меня запускалкой стима работает.
P.S. Unity больше не разрабатывается, но всё равно интересно — почему она «стеклянная»?
Не знаю, Unity, оболочка Win7 и вообще тогдашние новые стили создавали у меня ощущение, что они стеклянные.
А вам венда доставляет неудобства в работе/лишает каких-то преимуществ? Ну кроме знания, что это просто ОС для домохозяек.
Windows — отличная ОС, онаподходит очень многим, но мне, в силу ряда причин, она крайне неудобна. Она у меня есть, я её иногда по выходным запускаю (запускалкой steam работает).
Но для моей работы она очень неудобна, правда.
Я не убеждаю вас в том, что мой выбор лучше или в том, что «венда» плохая, отнюдь.
Просто у каждого есть тот софт, который он использует вынужденно и, с облегчением вздохнув, уходит с него, как только за это перестают платить.
Пользоваться нужно тем, что нравится, это всё, что я хотел сказать.
В разные версии Линуксана наигрался еще студентом (вплоть до ручной сборки Gentoo, но jast for fun — никакой практической пользы не получал) и мне он, поверьте, очень нравится и я не собираюсь никого убеждать никуда пересаживаться.
Мне в принципе все равно на чем работать WebStorm то есть под любую ось, каких-то неудобств не замечал, как и нет отвращения к венде. А у вас спрашивал именно почему с облегчением пересели с венды.
Но для моей работы она очень неудобна, правда.тогда понимаю, задачи бывают разные.
Я просто имел ввиду, что получаю удовольствие от работы с ОС которая дает мне доп. преимущества в работе, вот если б я писал на всяких хаскелах или хотя бы ML на питоне, тогда было бы очень приятно воспользоваться линуксом и развернуть какой-нибудь arch/debian/gentoo, а just for fun не интересно, если обычная венда из коробки дает точно такой же результат.
Нелюбимого ПО было много на старой работе — всякие Diasoft-ы которые под вендой то трудно запустить.
Да и линукс линуксу рознь — убунта фризится и крашится (без свопа) под нагрузкой только в путь и по ощущениям сильнее грузит железо. Хотя если линукс нужен для дела то какая-нить гента или, может, арч.
И мне даже жаль что разработка сайтов на JS сильно инвариантна относитлеьно OS. Вот если нужна большая и сложная система, а не пишущая машинка с возможностью запуска клиентсервера как у меня то тогда стоит заморачиваться
Да наоборот. Линукс ведет себя как прошивка для инструмента — обновляется скромно, удобный софт типа терминала со вкладками идет из коробки, вещи типа sshfs — родные, а не порты с линукса, в целом более нативное ощущение от консоли (без путей типа /mnt/c/Users/vasisualij/Downloads), малвареписателем 2% ОС не интересна, он бесплатен, наконец.
И, главное, если его выключить и включить через год — он продолжит работать, а не полезет обновляться три дня.
Компьютер с линуксом работает с ощущением именно что печатной машинки.
А с виндой — это какое-то живое существо, которое живет своей жизнью, может послать — ему обновляться нужно, если что-то сломалось (случай из опыта) — качай с сайта MS утилиту, которая покажет тебе логи, оно «болеет» малварью и нужно вычесывать ему шерстку и делать прививки. Наверное, если живешь с этим животным каждый день, то привыкаешь, но для меня это скорее были вынужденные страдания для запуска чего-то, под под вайном не работает. Последний раз это было из-за oculus rift.
А какой дистрибутив предпочитаете?
А с линуксом что? Если комп новый, то на ssd минут 20 ставится.
Как правило ведь люди никогда на чистый комп линукс не ставят — им подавай дуалбут, разбиение диска, возможность, чтобы системы видели файлы друг друга, и при этом весь этот процесс установки не уничтожил фоточки из Турции. А это большой источник проблем.
А какой дистрибутив предпочитаете?
Лет 10 ставлю только ubuntu с xfce. Лет 5 — только LTS. Для меня идеально — в меру консервативно, не тормозит ни на каком железе, но и пакеты не пятилетней давности.
и не трачу времени на то что не приносит денег
Сижу на Linux, и чуть-чуть на OS X, именно потому, что это приносит мне денег
Семерка была непривычна, но норм, хотя зачем такая толстая панель с пуском мне было не понятно, как и вся эта стеклянность, десятка же раздражает просто ВСЕМ, и я искренне не понимаю, зачем люди так мучаются, если им не нужен специфический софт.
Но ведь вам приносит деньги разработка под AWS, а не сидение на Linux.
Конечно. И для меня себестоимость моей работы из-под Linux меньше, чем из-под Windows
Linux через некоторое время после моих попыток привести его в привычный вид приходит в негодность
неправильно его готовите? Раз всё так плохо, поставьте вместо Арча/Федоры/дебиан анстейбл что-то заметно более стабильное, например оракл линукс 8, и ставьте пакеты только из официальных репозиториев, EPEL, ну или если ставить будете из rpmfusion итд, добавьте protect base и другие плагины для dnf. Так же ставьте софт из флэтпака и снапа.
Тогда оно будет ещё дальше от моих требований к ОС.
Почему? Ещё свежий софт я локально ставлю в локальный microk8s
потому что оно начинает выглядеть как-то такПо личному опыту — в 100 случаях из 100 предпочту такое синонимичной команде в терминале, если надо указать больше, чем пяток аргументов/опций. Потому как читать это всё одной простынёй куда как хуже — люди не случайно придумали всякие там таблички и прочие способы визуальной организации информации.
Напротив, дабы получить результат, приятно нажимать на кнопочки, при наведении на которые мне ещё и подсказку напишут.зависит от того, чего хотите добиться. Подчас некоторые настройки в винде спрятаны так далеко, что найти их самостоятельно нереально, а следование инструкции куда дольше чем «скопируйте вот этот текст в терминал чтобы получить желаемый результат».
Ах да, ещё люблю стабильный API, а не набор случайных программ и хидеров, которые прикидываются им.в винде я смотрю апи настолько стабилен, что его каждые несколько лет с нуля переделывают
в винде я смотрю апи настолько стабилен, что его каждые несколько лет с нуля переделывают1) Не терминал, а графический интерфейс != только Windows.
2) Достаточно стабильный для того чтобы программа для 98 винды продолжала работать на Windows 10.
1) Не терминал, а графический интерфейс != только Windows.ну в маке есть и терминал и графический интерфейс. Я ведь не говорю о том, что гуй не нужен. Просто чем сложнее/уникальнее манипуляция, тем меньше для неё подходит графический интерфейс. Linux-way, кстати, сделать либу, консольный клиент и GUI клиент. Чтобы при недостаточности/неудобности гуя сохранялся функционал.
Достаточно стабильный для того чтобы программа для 98 винды продолжала работать на Windows 10.всё-таки линукс в первую очередь про совместимость на уровне сорцов, и уже потом про бинарную. По сути вам точно так же как и в винде никто не мешает складировать в системе все версии всех рантаймов за последние 50 лет, а приложухи поставлять вместе со всеми их библиотеками.
всё-таки линукс в первую очередь про совместимость на уровне сорцов
Никогда не слышали о программах, которые собираются только определенным компилятором в определенном окружении?
Армбиан и тем более китайская убунта на банана пи м3. Больше необходимости не было.
Linux-way, кстати, сделать либу, консольный клиент и GUI клиент. Чтобы при недостаточности/неудобности гуя сохранялся функционал.К сожалению обычно делают консольную утилиту, и лишь потом прикручивают графический интерфейс, через парсинг выхлопа утилиты. Выходит git, который лично мне одинаково не удобен и не логичен, что в консоли, что в GUI. И да, когда хоть что-то пошло не так, парсер ломается, и надо разруливать выхлоп вручную, такое себе.
всё-таки линукс в первую очередь про совместимость на уровне сорцов, и уже потом про бинарную.И это ужасно. У меня есть набор утилит, самого разного, часто уникального предназначения, без сорцов, которые уже не поддерживаются, но продолжают работать в Windows, уже 20 лет. И нет OpenSource аналоги есть не всегда, так уж бывает в реальном мире. В мире никсов я был бы вынужден от них отказаться, такой себе путь. А потом задаемся вопросом почему под никсами нет софта? — он «откис».
По сути вам точно так же как и в винде никто не мешает складировать в системе все версии всех рантаймов за последние 50 лет, а приложухи поставлять вместе со всеми их библиотеками.Честно говоря, может быть я понимаю что-то не так, но приложения корректно использующие win32 api просто работают, без гигабайт DLL миллионов версий. Бинарная совместимость и вменяемое API — великая вещь.
И да, я сомневаюсь что приложение, скомпилированное в бинарник, которое, например таскает с собой GTK1, будет способно хоть как-то работать на современных линуксах. В то время как приложение для win98 продолжает работать в 10ке.
про совместимость на уровне сорцовЕсли б оно хотя бы на уровне сорцов работало.
Выходит git, который лично мне одинаково не удобен и не логичен, что в консоли, что в GUI1. конкретно гит
2. лично вам
3. я говорил про «либу, консольный клиент, и GUI-клиент», там не было ничего про «парсинг выхлопа тулзы». Так тоже можно конечно, просто надо обеспечивать совместимость форматов. Если конкретный мейнтейнер этого не делает — сам виноват
4. по мне, так разруливать даже консольный выхлоп куда лучше чем минут 15 искать в реестре нужный ключик, который нужно правильно «повернуть», чтобы добиться изменения настройки, которую убрали из свежего модного молодежного гуя
Честно говоря, может быть я понимаю что-то не так, но приложения корректно использующие win32 api просто работают, без гигабайт DLL миллионов версийпомнится на моей тогда еще свежей десятой винде «ведьмак» попросил установить 6 разных версий vcredist… Ну и не забывайте во сколько раз винда больше той же убунты весит.
В то время как приложение для win98 продолжает работать в 10ке.я сталкивался и с тем, что не работали приложухи куда новее win98. И, знаете ли, всякие cat тоже отлично поживают.
Загляните в директорию WinSxS :)
Как раз гигабайты рантаймов. Во времена 9х было понятие dll hell, когда в системе появлялась другая версия используемой системной библиотеки (например, при установке какого-то софта) и часть приложений ломалась. Сейчас такого нет, т.к. винда сама подставляет подходящие версии dll-ок и софт без нужного манифеста на 10ке получит системные dll-ки с функциями от более старой системы.
Да, есть часть WinAPI, которая достаточно стабильна, но мало какой софт обойдётся чисто winapi-шными функциями. Большей части нужен runtime какой-нибудь из версии VS, большинству гуёв понадобится какой-нибудь comctl32.dll, который уже не такой стабильный.
В мире никсов гораздо вероятнее были бы сорцы.Нет, сорцы есть не всегда. Так бывает, что автор не выкладывает сорцы, начиная просто с «не хочет»(и нет, не потому что человек жадный), и заканчивая тем, что человек на хочет показывать их, например из-за того что он считает их недостаточного качества. Ах, да я вот умею программировать, но желания собирать из сорцов что-то просто нет, и такое бывает.
Но даже если нет — chroot вам в помощь, создавайте хоть среду от Убунты 6.04.О, невероятной глубины костыль, вместо вменяемого стабильного API, класс это же гениально!
"Использование программы с недоступными сорцами — это уже само по себе невероятной глубины костыль"
Серьезно? И почему? Я, например, исходники броузера, которым пользуюсь, не смотрел, и не собираюсь. Чем это отличается от недоступных исходников?
Использование программы с недоступными сорцами — это уже само по себе невероятной глубины костыль, не надо удивляться что он требует подпорок.А как вы хабром пользуетесь? Или у вас есть доступ к исходникам?
Ах, да, выкидывайте свой компьютер, сорцов BIOS у вас нет, как и кучи других исходников, которые позволяют вашему компьютеру дойти до загрузки Linux.
Именно это меня и бесит в людях которые всех пытаются пересадить на «свободное ПО», ну нет, и никогда не будет у меня, как и у вас, сорцов от всего, и это НОРМАЛЬНО.
А в чем проблемы с легальностью? VirtualBox уже запретили?
Там продаются серые ключи, их легальность под большим вопросом.
С другой стороны, раз поддержка XP прекращена — могут и послать.
Но, в любом случае, купить коробку на ebay — пока ещё не проблема.
Выходит git, который лично мне одинаково не удобен и не логичен, что в консоли, что в GUI.
Не надо кривое поделие Торвальдса проецировать на всё консольное — от гита много кто плюется, и есть альтернативы.
В мире никсов я был бы вынужден от них отказаться, такой себе путь.
Никсы никсам рознь. Вот у нас во FreeBSD поддерживают бинарный COMPAT на лет так 20 назад точно.
в винде я смотрю апи настолько стабилен, что его каждые несколько лет с нуля переделывают
Фактически ничего из перечисленного в статье не является API винды
да и сейчас для автоматизации пайплайны эффективнее
Мне в консоли удобнее, а когда не удобно, то я в GUI.
Например, нужны мегаогромные системы, чтобы в логе выбрать строки событий за 15 часов 15 минут, с адресом bla@domain.com отфильтрованные спам-фильтром. Однажды изучив grep я выведу на экран нужные 10 строк за несколько минут. Не потому, что я красноглазик, а потому что это удобно. Но сейчас я пишу коммент через GUI, не потому, что не умею, а потому что так удобнее.
Но сейчас я пишу коммент через GUI, не потому, что не умею, а потому что так удобнее.
У вас давно нет шанса написать здесь комментарий через командную строку. Точнее, из-за "текстово-терминальной" природы HTTP вы могли бы скачать и разобраться с исходниками SPA комментариев здесь, и даже сформировать вручную запрос на сервер хабра с соответствующим комментарием. Но это вряд ли можно назвать просто "менее удобно".
Я поменял адреса за несколько секунд. А что тут? Запустил sed с подменой в конфиге одной подсетки на другую и перезапустил демона. Причем сделал это из дома.
А вот виндовым админам пришлось оставаться после работы и тыкать мышкой, да не по одному разу, в каждого пользователя, стирать старый, набивать новый адрес. Ох и матерились они от такой творческой работы.
Мне вот не приятно работать в консоли, и километровые маны и треды на Лоре читать не приятно. Напротив, дабы получить результат, приятно нажимать на кнопочки, при наведении на которые мне ещё и подсказку напишут
Такое выдает человека со складом ума пользователя, но не программиста. Для программистов же нормально знать разные языки — а консоль и есть текст, язык в чистом виде.
Особенно люблю, когда начинающему разработчику, который ещё «hello world» не научился писать(на любом языке), вместо помощи, или хотябы игнорирования, вбивают в голову философию и какой дистрибутив Arch(ведь стабильная Ubuntu тоже для пользователей, а не профессионалов) следуют поставить. Часто заканчивается тем, что человек бросает это сложное и непонятное программирование, так и не узнав что существуют IDE, а не только лишь Vim, да и программировать можно не только в никсах.
Дикий пример какой-то, похожий на то, как взяли вдруг школьника с улицы и заставили писать промышленный код. Нет, эти вещи изучаются в разных семестрах.
Выпиливание из FireFox-а FTP клиента, со словами «пользуйтесь отдельной программой» видимо тоже часть философии, класс, это же гениально!
Нет, это как раз выпердыш философии "только web и ничего больше", враждебной философии консоли.
Такое выдает человека со складом ума пользователя, но не программиста.Ля, я знал что хоть один любитель консоли напишет, «ко ко ко, ты не программист, ты ПОЛЬЗОВАТЕЛЬ».
Да, я пользователь, и вы тоже пользователь. Пользуетесь чужими программами? — вы ПОЛЬЗОВАТЕЛЬ. Вообще что меня бесит, в юникс сообществе больше всего, так это такие персонажи, как вы, которым веде мерещатся пользователи и домохозяйки :)
Для программистов же нормально знать разные языки — а консоль и есть текст, язык в чистом виде.Серьезно? Покажите мне тот самый язык для растрового графического редактора типа Photoshop, или для программы разводки плат.
Дикий пример какой-то, похожий на то, как взяли вдруг школьника с улицы и заставили писать промышленный код. Нет, эти вещи изучаются в разных семестрах.Причем тут семестры? Речь о том, как людям, изучающим it заливают в мозг деструктивную идею «программист = консоль, никсы и вот это все». Вместо изучения программирования человек страдает с окружением, которое ему возможно и не нужно.
Нет, это как раз выпердыш философии «только web и ничего больше», враждебной философии консоли.Да ладно, вы сами выше написали, «только текст и нечего другого». Стрелочка не переворачивается?
Вообще что меня бесит, в юникс сообществе больше всего, так это такие персонажи,
Вас это беспокоит? Хотите об этом поговорить? (с)
Почему, собственно, бесит? Может, потому что упрёк попадает точно в цель?..
или для программы разводки плат.
Насколько я в курсе, как раз в таких популярен Tcl.
Причем тут семестры? Речь о том, как людям, изучающим it заливают в мозг деструктивную идею «программист = консоль, никсы и вот это все». Вместо изучения программирования человек страдает с окружением, которое ему возможно и не нужно.
При том, что мы речь ведем о людях, которые получают нормальное фундаментальное высшее образование, а не о набранных с улицы по объявлению обезьянах-вайтишниках "тяп-ляп и в продакшен", правда? Действительно, может быть этот человек и вовсе не пригоден быть программистом, тогда зачем ему страдать с самого начала?..
Да ладно, вы сами выше написали, «только текст и нечего другого». Стрелочка не переворачивается?
А можно из меня цитату с такой неграмотной орфографией или таким смыслом? Вот, кстати, давно замечаю — те, у кого плохо с консолью и программированием, у тех и с естественным языком плохо.
Вас это беспокоит? Хотите об этом поговорить? (с)Успокойтесь и нежно погладьте клавиатуру.
Почему, собственно, бесит? Может, потому что упрёк попадает точно в цель?..
Насколько я в курсе, как раз в таких популярен Tcl.DipTrace, Sprint-Layout, Eagle, Altium Designer, TopoR, P-CAD и т.д. — все это программы с GUI интерфейсом, именно в этих программах сделали ваш ноутбук. Ах, да, наверное они не считаются, они же под WINDOWS.
При том, что мы речь ведем о людях, которые получают нормальное фундаментальное высшее образование, а не о набранных с улицы по объявлению обезьянах-вайтишниках «тяп-ляп и в продакшен», правда? Действительно, может быть этот человек и вовсе не пригоден быть программистом, тогда зачем ему страдать с самого начала?..Опять же, причем тут «фундаментальное высшее образование», речь о простом человеке, который не важно в вузе или нет, решил попробовать себя в программировании, и которому загаживают мозг тем что должен использовать «настоящий программист».
(Для справки: 10+ лет на Линуксе дома — снес к чертям, никогда не пытался профессионально программировать под него за отстутсвием нормальной среды программирования, опыт программирования 30+)
Тут не ясен момент «под него», то есть системные вещи какие-то?
Вы же сами сказали, для разных задач свои инструменты. Что-то быстрее сделать на баше.
Пример:
Вчера решил узнать, какие пакеты я себе ставил путем грепания лога pacman. Решил путем однострочника на баше с cat, grep и awk. На питоне было бы куда больше.
З.Ы.
Нет, я не решал проблему, которую сам себе создал, потому что линукс. На винде в списке установленных программ я бы так же увидел то, что я ставил сам, так и то, что поставили установщики. Штук 10-20 разных пакетов, установливаемые Visual Studio или Adobe тоже не очень удобно. Только, в отличие от pacman, там не понять, кто был поставлен явно, а кто — зависимость.
На питоне было бы куда больше.
Ну было бы на питоне 5 строк, пусть даже 10. Кому это важно? Особенно учитывая минимальный размер файла на современных ФС (4..64… кб). Зато строк простых и понятных.
Вы каким то сложным путём пошли, для выявления явно установленных пакетов и зависимостей. Для этого есть штатный pacman -Q
в параметрах которого есть всё что вам нужно!
Я не разобрался в пакмане, и случайно удалил много что с -Rsnc (как-то так, удаление зависимых пакетов). Потом, когда половина системы была удалена, я осознал ошибку и пошел искать, что же раньше стояло.
Кажется, даже, что-то забыл.
Нет, ну по сравнению с вимом может быть.
Может кто подскажет есть такое для golang?
Нисколько не умаляя достижений отцов основателей, но программировать в консоли как бегать на костылях.
Что значит программировать в консоли? Использовать консольный редактор? Писать шелл-скрипты вместо использования GUI? Первое — вполне себе ок. Второе — варьируется в широких пределах от "бессмысленно" до "лучше GUI на порядок". Бывает, что "бегать на костылях" это как раз GUI, а не шелл. Пример — навигация по каталогам. В шелле у меня есть fzf + z, в тандеме с command history позволяющие за 4-5 нажатий (хоткей + уникальная часть имени + Return) прыгнуть в любой ранее мной посещённый каталог, файл, или вызвать любую команду из истории. Покажите мне как это сделать в наутилусе, Windows Explorer, любой другой графической утилите.
Зачем использовать кривой ограниченый язык (организация запуска, пайпы и аргументы командной строки — это язык) когда есть нормальные скриптовые языки изначально предназначеные для программирования?
Ничего не понял. Нормальные это какие? Perl, Python? Хотите писать на них утилиты вместо шелла — ради бога, пишите, но кроме утилит есть же ещё интерактивный шелл, в котором я лично провожу ~50% всего времени вообще. Там тоже перл/питон использовать и на каждую операцию фильтрации "на месте" вместо | писать инлайн скрипт на перле с pipe() итд?
Программирование в терминале занимает ровно ту нишу для которой и было предназначено — запуск команд. Это задача не пользователей, не программистов, а администраторов.
Как будто программисты и юзеры команд не запускают. Ещё раз — я, программист, провожу в шелле около 50% времени, вторую половину в емаксе. Перемещение по каталогам, запуск тестов, открытие файлов "на месте" на редактирование, запуск консольных утилит по именам файлов (с историей ввода, причём трекающейся не приложением, а шеллом), запуск 100500 приложений с историей и нечётким вводом. В случае GUI у меня была бы весьма хрупкая и ограниченная система из finder или как он там в каждой ОС называется (и на который я никак повлиять не могу) и встроенных возможностей отдельных приложений по запоминанию открытых файлов. С шеллом я могу включить любую текстовую утилиту в свой pipeline и она будет в истории команд, в истории ввода, в автодополнении, где захочу.
В общем, есть написание скриптов, а есть личная десктопная среда, и во втором случае консоль весьма себе авторитетный вариант. Точнее, консоль + правильная DE.
(Для справки: 10+ лет на Линуксе дома — снес к чертям, никогда не пытался профессионально программировать под него за отстутсвием нормальной среды программирования, опыт программирования 30+)
Жесть. Или вы считаете что кроме Emacs и Vim в линуксе ничего нет или вы не считаете среды JetBrains, VS Code, Sublime, Qt Creator за "нормальные IDE".
Про «программировать в консоли» это именно про bash-скрипты и пайпы в командах. Я абсолютно уверен, что bash скрипты существуют до сих пор чисто по инерции — bash есть везде, значит на нем и пишем. Реальных преимуществ перед тем-же Python нет. Ровно та-же история, что и c JS.
Про GUI vs. command line я вообще ниечего не писал. Что-то удобнее так, что-то эдак.
bash есть везде, значит на нем и пишем. Реальных преимуществ перед тем-же Python нет.
Сколько строк кода у вас займёт вышеупомянутый пример
grep -ri habrhabr: -l .|xargs stat -c '%Y %n'| sort| tail -1
на Python? Гарантирую, что больше одной.Если у вас отличная память на «магические заклинания», или вам они нужны ежедневно ( и в результате — не вытесняются из «ОЗУ» чем-то новым), — текущее положение вас вполне устраивает.
Для более редких задач могла бы быть удобна (а может и нет)) объектная библиотека с развернутыми именами операций и параметров. Благодаря автодополнению в среде выполнения, скорость набора была бы незначительно ниже, но длинные имена параметров позволили бы гораздо реже тратить время на маны.
Кстати отвечая на ваш вопрос — если это повторяющаяся задача, то займет одну строку — все уже будет написано заранее. Если это одноразовая фиговина, то зависит от лени — иногда проще тупо глазами посмотреть и не писать вообще ничего.
Комментарий какой-то дикий, сумбурный и мешающий в одну кучу разные вещи, одинаково их называя. Что значит "программировать в консоли"? Для этого вообще-то текстовые редакторы есть (а для любителей, и IDE). Что значит "скриптовые языки"? Вообще-то шелл — тоже скриптовый язык.
Зачем использовать программирование для
Ну так не используйте. У каждого инструмента своя область. Взять "полноценный" скриптовый язык (Perl, Python) в качестве шелла — и такой шелл станет очень неудобен "для запуска команд".
Безусловно, на момент создания Unix это была передовая технология пользовательского интерфейса. В том числе из-за Unix Way — много маленьких утилит, каждая из которых выполняет какую-то простую функцию, программы можно объединять в цепочки и т.п. Ну и разумеется простота самой консоли, возможность подключиться к удаленному серверу или к маломощному устройству и получить базовый интерфейс, с которым можно работать — это замечательно.
Но времена меняются, на смену консоли пришли графические, а затем и web интерфейсы. И вот там роль, подобную командному интерпретатору, должна была взять на себя компонентная технология типа COM. Вроде так и предполагалось — множество компонентов, реализующих простые задачи, возможность встраивать компоненты в документы, открывать excel из word и тому подобное. Но — в конечном итоге следует признать, что не получилось (хотя COM активно используется в недрах Windows, тот же DirectX, но из веба и UI ее все-же вытеснили).
Еще можно упомянуть, что старые языки командных интерпретаторов весьма неудобны и архаичны — особенно на фоне современных языков программирования и идеально выверенным синтаксисом. Но огромное количество скриптов написано и их никто не собирается переписывать.
Консольные программы с сотнями опций, простынями вывода и вырвиглазным синтаксисом скриптов на фоне современного GUI уже не кажутся такими удобными, каким они казались на фоне перфокарт. В результате, как мне кажется, мы упустили что-то важное, с чем современные технологии могли бы старть гораздо более удобными — по крайней мере для профессионалов. Возможно, был бы некий аналог пользовательских скриптов, которые можно было бы создавать буквально мышкой в каком-то редакторе, соединять входы модулей с выходами как на электрической схеме — и получать те же конвейеры, только работающие с GUI и отображающие вывод в удобных виджетах. Возможно, это направление слилось бы с Вебом, JavaScript заменил бы языки командных интерпретаторов, а браузер стал бы новым терминалом. Сложные пользовательские скрипты собирали и анализировали бы информацию с сотен сайтов и отображали бы ее в удобном для конкретного пользователя виде…
Впрочем, то что всего этого не случилось, вполне логично и закономерно. Консоль существовала потому что во времена ее появления пользователями были профессионалы. И существует до сих пор — по той же причине. Максимальное упрощение интерфейсов, необходимое для массового распространения компьютеров, несовместимо с программированием. Простые пользователи не будут программировать ни в каком виде — ни создавая конвейеры в консоли, ни соединяя мышкой визуальные компоненты. Так что все логично. Консоль осталась и используется по интерции, а для разработки новой современной объединяющей среды нет ни запроса, ни ресурсов.
Сложные пользовательские скрипты собирали и анализировали бы информацию с сотен сайтов и отображали бы ее в удобном для конкретного пользователя виде…
Но это же не замена консоли. Это вы уже какие-то бизнес-решения описываете, а не автоматизацию. Конечно, можно и на баше писать, но не думаю, что это распространенно и нормально. Предложенное вами вполне живет и нынче называется модно "no code"
Наверное, это где-то возможно. Но как в таком формате представить какой-нибудь Photoshop или SolidWorks?
Параметрическое моделирование в текстовом файле Вы себе не представляете? А зря. Такое есть, и многие считают это весьма удобным. Добро пожаловать в OpenSCAD.
Вы будете смеяться, но в обоих случаях есть "консольные" конкуренты. GEGL и OpenScad. И если первому пока не хватает консольной рбвязуи, то второй себя отлично зарекомендовал в качестве простого и быстрого, программно определяемого инструмента автоматизации CAD. Разумеется со своими "консольными" плюсами и минусами.
(там правда еще ничего не готово)
Дополнить Tcl/Tk стандартизированными форматами обмена в пайпах, ну.
Но времена меняются, на смену консоли пришли графические, а затем и web интерфейсы.
Нет, вдобавок к консоли добавились GUI Интерфейс, рассчитанный на мышку, а затем GUI интерфейс, рассчитаный на тачскрин, а в некоорых случая уже и интерфейс рассчитаный на распознавание голоса или движений в VR
Я все время недоумеваю, когда люди пытаются сравнивать консоль с чем-то старым, а GUI с чем-то новым. То, что какое-то интерфейс появился позже, не означает что он замена старого. Популярность сейчас на стороне GUI, но это не значит что консоль не нужна. У нее своя специфическая ниша, и весьма немаленькая, которую GUI никак не заменит.
1. Blueprints — визуальные компоненты, соединяемые мышкой.
2. C++.
Blueprints, начиная с какой-то очень невысокой степени сложности,
становятся совершенно нечитаемыми и запутанными.
Напротив, эквивалент на C++, как правило, намного аккуратнее и яснее.
В результате, как мне кажется, мы упустили что-то важное, с чем современные технологии могли бы старть гораздо более удобными — по крайней мере для профессионалов. Возможно, был бы некий аналог пользовательских скриптов, которые можно было бы создавать буквально мышкой в каком-то редакторе, соединять входы модулей с выходами как на электрической схеме — и получать те же конвейеры, только работающие с GUI и отображающие вывод в удобных виджетах.
Кстати да, такой модуль (программа) для создания скриптов был бы, думаю, вполне кстати. Накидать в гуе то, что и как и в какой последовательности делать — получить скрипт — выполнить. Было бы неплохо
Но времена меняются, на смену консоли пришли графические, а затем и web интерфейсы.
Не пришли. Только как дополнение. Каждый раз плююсь, когда на какой-нибудь свитч или роутер вебом попасть можно, а консолью нельзя — ряд операций в ней куда проще.
на себя компонентная технология типа COM. Вроде так и предполагалось — множество компонентов, реализующих простые задачи, возможность встраивать компоненты в документы, открывать excel из word и тому подобное. Но — в конечном итоге следует признать, что не получилось
По двум причинам: 1) это проприетарь от Microsoft 2) конкретная реализация была чересчур сложна, настолько, что даже на самой винде она стала терять популярность. Но вот в Android Гугл сделал нечто отдаленно похожее на COM для интеграции приложений...
Еще можно упомянуть, что старые языки командных интерпретаторов весьма неудобны и архаичны — особенно на фоне современных языков программирования и идеально выверенным синтаксисом
Неверно по обоим пунктам — ни про неудобность/архаичность (ну или попробуйте брать не шелл образца 93 года, а хотя бы настроенный zsh), ни про "выверенный синтаксис" т.н. "современных" языков.
Возможно, был бы некий аналог пользовательских скриптов, которые можно было бы создавать буквально мышкой в каком-то редакторе, соединять входы модулей с выходами как на электрической схеме — и получать те же конвейеры, только работающие с GUI и отображающие вывод в удобных виджетах. Возможно, это направление слилось бы с Вебом, JavaScript заменил бы языки командных интерпретаторов, а браузер стал бы новым терминалом.
Вот весь этот ваш уродлвый Веб следует выкинуть и начать заново. Причем даже не с нуля — описываемую роль был призван сыграть Tcl/Tk — встраиваемый язык, изначально предназначенный для скриптового расширения уже написанных приложений, позволяет легко клепать эти самые GUI-вые виджеты. Но увы, сначала продвижение Sun своего нового языка Java, а потом бум доткомов — подвинули его из популярности/известности, в пользу ущербного Веба.
Сложные пользовательские скрипты собирали и анализировали бы информацию с сотен сайтов и отображали бы ее в удобном для конкретного пользователя виде…
В теории, такое можно напрограммировать и сейчас. Но подозреваю, под то, что имелось в виду, потребовался бы не хаос Веба как он был и есть, а централизованная в смысле стандартизации среда.
Каждого в электронном письме попросили сделать скриншот текущего десктопа сразу, как только они прочитают эти слова.И тут же скриншот с письмом, в котором не написано абсолютно ничего подобного. Не то чтобы это было важно, но яркий пример почему существует локальный термин «ализарщина».
Но ведь работать в консоли на самом деле неприятно (приятно ли вообще работать- это большой философский и субъективный вопрос)
Но ведь работать в консоли на самом деле неприятно
Ну незнаю. Например снять образ куска диска через dd в одну команду (и потом также в одну его развернуть) куда приятнее чем Windows-way вида «найди 1000 и 1 утилиту весом 100-1000мб и перебери подходящие и работающие с твоей FS».
Ds: заточенность рук под linux. Они нашли друг друга, и это отлично. Но справедливо далеко не для каждого.
Вы, наверное, не правильно восприняли написанное выше. Я только что набрал в гугле "клонировать диск линукс". Первая ссылка, открываем:
"В Linux есть четыре решения для клонирования дисков, которые вы должны рассмотреть:
dd
Partimage
Partclone
Clonezilla"
Я сразу нахожу. И пробую dd. И получаю результат. В отличие от…
Набрал "клонировать диск windows". И понеслось… На первой странице платные решения. Плюс, они отличаются клонированием системного диска и диска с данными и т.д. Вывод однозначен, ИМХО
Вывод, наверное, действительно однозначен — каждому овощу свой фрукт. Тем более, что в вашем списке половина утилит, насколько я вижу, имеют свои интерфейсы.
Я понимаю, что это разработчики должны заботиться, но… там нет firefox и opera, там нет vscode и visual studio (а это ведь разработка MS), там нет steam, xnview, total commander, thunderbird, нет ни одной утилиты для работы с дисками с первой страницы гугла «windows copy partition». Но есть еще куча шлака и офисных игрушек. И Ubuntu в топе бесплатных, которую можно поставить и продолжить пользоваться dd :)
Понять как работать с первой попавшейся гуевой утилитой — как повезет. Если утилита хорошая а действие простое — то тоже не очень много, а если нет — то можно навсегда остаться в выпадающих меню и кнопках которые ведут в другие окна, которые ведут в другие табы.
А потом всю оставшуюся жизнь удивляешься, почему у всех программ опции передаются в виде -option, --option, -o, -o key=value, -key value, --key=value… И что-то может прочитаться из environment, и ещё что-то из .dotfiles. Удивительное однообразие и стандартизация, легко запомнить ;)
Лишь в dd придерживаются своего собственного стиля key=value, без минусов.
Вот с этим да, бардак. Сделать бы какую-то унификацию параметров для опций, было бы превосходно
Есть positional values, это те, которые обычно обязательны. git commit, ssh 192.168.0.1, передаются просто после команды.
Есть flags, с одним минусом односимвольные, git commit -a с двумя минусами многосимвольные git config --global. Во флаги можно передавать значения, или просто через пробел, git commit -m "" или, гораздо реже, через равно dd if=/dev/urandom of=/dev/sda.
Иногда флаги можно склеивать вместе, ls -la если у них нет значений и парсер позволяет, но это только если знаешь, во всех таких случаях их можно просто дать отдельными флагами, ls -l -a
У каждой программы и параметра есть ключ -h или --help, и man.
Этой конвенции придерживаются большинство софта, кроме тех что были написаны до того как это все оформилось более-менее, например у ssh хелпа нет совсем, только man, а у ls есть только --help, но обычно это программы с которыми сталкиваешься постоянно, и эти исключения запоминаются.
В современном мире никто уже аргументы сам не парсит, для всех языков есть несколько либ делающих это за тебя, поэтому конвенция приблизительно придерживается. И как только начинаешь это все понимать, проблем больше не остается
У каждой программы и параметра есть ключ -h или --help, и man.
дада, shutdown -h самое оно.
Узнать как работать с dd — это проглядеть наискосок три предложения из man, или вообще увидеть строку в примере и моментально догадаться как это работает.…и радостно запороть исходный диск.
ssh -D 1080 -N -f user@host
В Putty придется потыкаться по нескольким вкладкам, а сама инструкция для этого займет пару экранов.
Если заниматься туннелями не каждый день, сначала нужно будет полистать man. А в putty окошко конфигурации — само по себе инструкция ;)
работать в консоли на самом деле неприятно
Неприятно кому? Человеку, который вовсе не умеет это делать? Так а такому зачем, если для этого есть профессионалы?
Если же речь таки о профессионале, то здесь "неприятно" переходит уже в психологическую, если не психиатрическую, плоскость. А почему это вот лично Вам неприятно, когда всем нормальным людям или нейтрально, или есть те, кому даже нравится?
Но воспринимать цвета и геометрические фигуры у многих до сих пор получается быстрее и безошибочнее всего. У меня в том числе, поэтому для меня всегда графический интерфейс будет эргономичнее.
— Инструменты командной строки Unix грубые и отсталые, — бросил он, — современные правильно спроектированные операционные системы делают всё через графический интерфейс!
Мастер Фу промолчал, но ткнул пальцем на луну. Собака неподалёку залаяла на руку Мастера.
— Я не понимаю вас! — сказал программист.
Мастер Фу, по-прежнему храня молчание, ткнул на изображение Будды. Затем на окно.
— Что вы пытаетесь сказать? — вопрошал программист.
Мастер Фу ткнул на голову программиста. Затем на камень.
— Почему вы не можете сказать ясно? — потребовал ответа программист.
Мастер Фу задумчиво нахмурился, затем дважды щёлкнул программиста по носу и бросил его в ближайшую мусорную корзину.
Пока программист пытался выбраться оттуда, пробегавшая мимо собака помочилась на него.
В этот момент программист достиг просветления.
— habr.com/ru/post/273023
Как раз в ходе эволюции человечество в ходе гигантской, так сказать, революции получило фундаментальную вещь, неразрывно связанную со способностью к абстрактному мышлению — речь (язык). Второй такой революцией, тоже резко двинувшей прогресс вперёд, стало изобретение письменности, взамен наскальной живописи. Третьей, поменьше, но начавшей историческую эпоху взамен первобытной, стало изобретение алфавитной письменности.
Так вот, цвета и геометрические фигуры — это не новый, современный способ мышления Homo Sapiens Sapiens языком, а откат, в лучшем случае, к идеографической письменности, а в худшем — к животным, в дописьменную эпоху. Конечно, в ряде случаев потребность в рептильном мозге еще сохраняется, скажем, когда нужна быстрая реакция в потенциально опасной обстановке, например, в дорожных знаках для водителей. Но если кому-то во вполне мирной обстановке неприятно излагать свои мысли языком, будь то для человека или машины — он явно не авангарде прогресса человечества.
Так вот, цвета и геометрические фигуры — это не новый, современный способ мышления Homo Sapiens Sapiens языком, а откат, в лучшем случае, к идеографической письменности, а в худшем — к животным, в дописьменную эпоху. Конечно, в ряде случаев потребность в рептильном мозге еще сохраняется, скажем, когда нужна быстрая реакция в потенциально опасной обстановке, например, в дорожных знаках для водителей.Вау! Тут даже комментировать нечего. Отключите себе подсветку в IDE, а то, там цвета. Ах, да, скобочки {} в си тоже не используйте, ведь это идеографическая письменность для рептилий, вот рецепт:
#define BEGIN_BLOCK {
#define END_BLOCK }
Отключите себе подсветку в IDE, а то, там цвета.Станет немного менее удобно, но не критично.
Ах, да, скобочки {} в си тоже не используйте, ведь это идеографическая письменность для рептилий, вот рецепт:Чем вам знаки препинания не нравятся? Хотя да, у вас с этим не идеально. Но это же не повод ненавидеть их.
И да, в некоторых человеческих языках есть знаки вроде ¡¿, чем языки программирования со всякими стрелками, скобками, хуже? Разве что тем, что предельно стандартизован.
- консольные интерфейсы можно разрабатывать не привлекая, ни UX-дизайнера, ни фронтенд разработчика
- оконные интерфейсы жрут ресурсы, как не в себя. Особенно, с этими их модными электронами и джаваскриптами
- консольные интерфейсы, в основном, унифицированы: любая программа ответит именно то, что вы ожидаете, если вызвать cmd --help
Хотя и там есть деления — люди всегда найдут предмет для спора. Ну например превосходство одной shell-оболочки над другой.
консольные интерфейсы можно разрабатывать не привлекая, ни UX-дизайнера, ни фронтенд разработчика
Вообще, оконный интерфейс тоже можно сделать не привлекая ни UX-дизайнера, ни фронтенд-разработчика. Получится, правда, что-то неюзабельное, но тем не менее. Это раз. Два. Консольный интерфейс хорошо подходит для управления системой, но очень плохо подходит для отображения графиков. А еще консоль сложнее освоить. Если ты, к примеру, финансовый аналитик, или врач-терапевт, то как-то проще работать с графическим интерфейсом, а не заучивать 100500 команд, в дополнение к основному багажу знаний.
оконные интерфейсы жрут ресурсы, как не в себя. Особенно, с этими их модными электронами и джаваскриптами
Что угодно можно написать так, что оно будет жрать, как не в себя. Даже ssh-демона. И даже ssh-клиента.
консольные интерфейсы, в основном, унифицированы: любая программа ответит именно то, что вы ожидаете, если вызвать cmd --help
Тут вот именно то, что «в основном». У ssh, ЕМНИП, ключа --help нет.
Консоль — очень классный инструмент администрирования, с этим довольно трудно спорить. Но работа с компьютерами сейчас не сводится к этому, и рядовым пользователям, в массе своей, нужны другие интерфейсы.
Вообще, оконный интерфейс тоже можно сделать не привлекая ни UX-дизайнера, ни фронтенд-разработчика. Получится, правда, что-то неюзабельное, но тем не менее.О том и речь
Консольный интерфейс хорошо подходит для управления системой, но очень плохо подходит для отображения графиков.А ещё консоль не может яишенку пожарить.
А еще консоль сложнее освоить. Если ты, к примеру, финансовый аналитик, или врач-терапевт, то как-то проще работать с графическим интерфейсом, а не заучивать 100500 команд, в дополнение к основному багажу знаний.Я, в общем, и не предлагаю запретить графические интерфейсы. Консольный интерфейс хорош для тех, кому нужен более высокий уровень эффективности пользования компом.
Что угодно можно написать так, что оно будет жрать, как не в себя.Вы противопоставляете теоретические рассуждения правде жизни
Тут вот именно то, что «в основном». У ssh, ЕМНИП, ключа --help нет.Забавно, что и вы и я правы
@1618843450:~$ ssh --help
unknown option -- -
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
[-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
[-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
[-i identity_file] [-J [user@]host[:port]] [-L address]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-Q query_option] [-R address] [-S ctl_path] [-W host:port]
[-w local_tun[:remote_tun]] destination [command]
Для графиков плохо подходит псевдографический терминал. Но графики могут выводиться или в отдельных окнах, или быть встроенными прямо в терминал с поддержкой этого.
И это удобнее, потому что перед глазами всегда находится команда, где написано, что ты сделал, чтобы такой график получить.
А еще консоль сложнее освоить. Если ты, к примеру, финансовый аналитик, или врач-терапевт, то как-то проще работать с графическим интерфейсом, а не заучивать 100500 команд, в дополнение к основному багажу знаний.
Вообще-то, ровно наоборот, если система команд грамотно спроектирована под предметную область. Выразить текстом, чего хочешь, будет проще. Это подтверждается историческими примерами как, например, внутренними скриптовыми языками в продуктах типа AutoCAD, так и, скажем, без проблем запоминавшими IRC-команды людьми, далекими от IT, в досмартфонную эру.
То есть если надо что-то простое сделать раз в год, проще потыкаться в менюшки. А если это делать надо постоянно, стоит освоить хоткеи или консоль.
Отличные примеры — AutoCAD, где можно натыкать мышкой, но он сразу подсказывает в какую консольную команду оно разворачивается. Таким образом изучение команд происходит само собой.
То же в редакторе формул в Офисе. Любое действие в GUI отображается в консольном редакторе и точно так же команды учатся сами собой.
И то же в разных чатиках и форумах, где можно вставлять всякие выделения или смайлики мышкой, но они тут же отображаются в поле ввода.
— И этого здорово не хватает в чистых WYSIWYG редакторах: одни машинные духи ведают где именно косяк с форматированием может возникнуть незаметно для пользователя.
консольные интерфейсы можно разрабатывать не привлекая, ни UX-дизайнера, ни фронтенд разработчика
Можно. Только такая фигня получается…
консольные интерфейсы, в основном, унифицированы: любая программа ответит именно то, что вы ожидаете, если вызвать cmd --help
Ну так и любая графическая программа «ответит именно то, что вы ожидаете, если нажать F1». Вот только на практике самое частое действие в большинстве программ — это дискетка «сохранить» / «сохранить как». И если в графике это абсолютно везде одинаковые пункты меню и одинаковые шорткаты клавиатуры, то для утилит командной строки — особенно с нетекстовыми выходными данными, который не проходят через stdout — вам почти наверняка придётся курить тот самый хелп.
консольные интерфейсы можно разрабатывать не привлекая, ни UX-дизайнера
Я вас сейчас сильно удивлю, но даже для консольного интерфейса нужен UX дизайнер. Потому, что работа в консоли — это тоже пользовательский опыт, который можно сделать совершенно отвратительным и нелогичным, если этим будет заниматься человек, не имеющий понятия, как строить логику интерфейса.
"строить особо и нечего: выдаёшь пользователю параметры внутренних операций и вперёд."
Привязываешь внутренние операции к кнопкам и менюшкам и вперёд.
Если же взять что-нибудь более жизненное, типа обработки видео, то вообще ничего не выйдет.
А с консолью выйдет? То-то сверху люди жалуются на одну не безызвестную консольную утилиту для обработки видео, которую невозможно без гугления использовать.
профессия «UX дезайнер консольных интерфейсов» не известна не только классификатору профессий, но и Гуглу
А профессия «программист консолей» известна?)
А все просто:
1. Люди думали.
2. VT52 еще не были распространены, а VT100 вообще, не было. Были АЦПУ. А попробуйте редактировать текст на «умной» пишмашинке. Это вам не WISIWIG.
3. Объем памяти задачи был мал, поэтому механизм конвейеров из маааленьких задач был очень разумен.
4. Система была ориентирована на обработку текстов, потому что текст легко читать и отлаживать. Хексовые редакторы появились позднее. А графики просто не было.
И да, зря в комментариях ругают man — он работает без интернета и в нём удобно искать команды, тогда как гугление последовательности действий в GUI может закончиться тем что вы нагуглили мануал к старой версии интерфейса который давно «упростили».
разработчик их любимой программы с GUI опять переместил менюшки ради перемещения менюшек
Что удерживает разработчика программы без GUI от подобных действий?
Настройки > Продвинутые настройки > третий таб справа > четвёртая опция снизу > ОК в модальном окне
— то это местоположение нужной вам опции спиннером по воде писано. Но когда ваша консольная программа что-то делает по команде, допустим, tar -zxvf file_name.tar.gz
— то эти буквы очень скоро станут частью множества чьих-то скриптов (о чём по сути говорится в статье) и изменение в следующей версии tar действия той или иной опции гарантированно принесёт кому-нибудь боль после установки обновления tar, ведь скрипты после такого зло-обновления могут повредить данные или привести к труднообнаруживаемой ошибке. Зачем так делать, если можно воздержаться от нанесения боли пользователям программы. А если очень-очень нужно изменить действие какой-нибудь опции, то семвер требует обновить мажорную версию, тогда поломки скриптов хотя бы будут интуитивно ожидаемы.Конкретно tar иногда ругают за то что он просто позволяет делать
tar zxvf file_name.tar.gz
(без дефиса), ведь это 1) новичку может усложнить изучение утилиты, которая умеет парсить опции так, как вообще-то не принято делать и 2) поскольку наверняка кто-то в своих скриптах уже использовал вызов tar без дефиса, то теперь уже нельзя просто так взять и отказаться от такого поведения программы tar, ведь такой отказ тоже нанесёт кому-то боль, вроде простоя сервера и/или необходимости вызывать программиста чтобы чинить то что вроде бы не должно было ломаться.Где удобна консоль — если дело имеешь с однотипным набором команд которые выполняешь каждый день, либо в определённый промежуток времени, например при работе с задачей которая требует интенсивного использования консоли.
Все остальные сценарии — удобнее GUI. Это редкое использование программ. Новое использование программ. Использование очень большого количества программ.
Если посмотреть кто какими сценариями пользуется — то программисты это второй тип сценария. Из личного опыта.
Сисадмины например — первый.
Получается что консоль и GUI это разные ниши.
Использую консоль очень много и каждый день. Даже работу с файлами для около-программерских или около-системных задач я делаю через обычные cd/ls/cp/mv. И лично мне это даже быстрее, особенно, в с автокомплитом и историей (а в zsh можно писать cd prog/my<tab>
и получить cd programming/myproject
).
Гуевый проводник использую только для мультимедийных задач.
Вот надо вам сделать в git-e soft reset на 2 коммита назад. Открываем gitk, лазим по меню, там ничего нет. тыкаем на коммит, ничего нет, догадываемся (как?) что можно нажать правой кнопкой и там выпадет «Reset master branch here». Reset — это hard reset или soft reset? Рискуем? А если мне надо другую ветку? Как выбрать?
Или вот сижу в firefox и думаю поменять страницу по-умолчанию. А где собственно? И надо бегать по меню перебирая все пункты и гадать, куда же это могли «засунуть». Предполагать, что может это в preferences. А где там дальше искать?
Да, может примеры выше — не самые хорошие, кто-то скажет: «А вот у меня в %PROGNAME% всё понятно». Но уверен, каждый не раз сталкивался с тем, что шарил по GUI в поисках нужного действия.
В Windows: правой кнопкой по файлу или папке -> копировать. Ииии… ничего не происходит. Так видит мир тот, кто не знаком с концепцией ctrl+c/ctrl+v. А крестик справа вверху программу не закрывает.
И даже в вашей любимой IDE наверняка есть кнопка «поискать кнопку, чтобы выполнить команду» по тексту этой команды. Только эту «кнопку поиска» надо тоже поискать. Например, сортировка строк.
Но для действий, которые делаешь раз в жизни проекта, или раз в месяц хотя бы — я не хочу рыться в мануалах и в интернете в поисках команд, хочу нормальный UI.
В вашем примере есть еще один очень важный плюс консоли — не знаю про групповые политики Windows, т.к. очень далек от нее, но например консольные утилиты для *nix (Unix, Linus, между прочим OS X) будут одинаковые, и ответ на stackoverflow для linux обычно подходит и под мак. А вот UI у утилит 99% будет разный, и тут уже попробуй нагуглить эти галочки
Вот надо вам сделать в git-e soft reset на 2 коммита назад. Открываем gitk, лазим по меню, там ничего нет. тыкаем на коммит, ничего нет, догадываемся (как?) что можно нажать правой кнопкой и там выпадет «Reset master branch here». Reset — это hard reset или soft reset? Рискуем? А если мне надо другую ветку? Как выбрать?
А это, простите, проблема конкретно отвратительного дизайна гита, когда под понятием reset может скрываться три разных действия.
Консоль — для автоматизации, гуи — интерфейс к готовым программам для конкретных задач. О чём тут вообще спорят?
У консоли есть два преимущества перед GUI:
- Можно автоматизировать действия, делать алиасы/батники/скрипты/etc
- Если непонятно, как что-то сделать, ищем в интернете. Далее, если у тебя GUI, то приходится смотреть картинки (иногда просто описания), находить кнопки, пункты меню, прожимать их, короче, иногда хлопотно. Если консоль, то обычный копи-паст, и всё.
Не вижу проблем с пробелами, минусами и переводами строки в консоли.
Если при написании скрипта эту возможность учитывать, то все работает.
Это почти так же, как с пробелами в имени файла.
Вы знаете, что имена фалов в NTFS не являются юникодными строками?
Можно подробнее?
Для экранирования вводимых символов используется escape-символ \
:
cut -d, -f2 # разбить текст запятыми на колонки и взять только вторую колонку
cut -d\ -f2 # то же самое, только вместо запятой используется пробел
А для обработки входных/выходных данных в скриптах все основные утилиты поддерживают 0-терминируемые строки. Это опции -print0
в find
, -0
в ls
и xargs
, и т.п. В такую строку можно запихать вообще любой текст.
В общем, проблема есть, но её уровень — не "совершенная неработоспособность", а всего лишь "досадное эпизодическое неудобство".
Принято, что ключи от данных отделяются двойным дефисом, все что после него за ключ не считается.
Если вам нужно чтобы строка с пробелами воспринималась оболочкой как одна строка, её надо просто заключить в кавычки. Переносы строки тоже можно внутри кавычек, но если команда вводится вручную, их имхо проще через \n
Все выше относится к башу и подобным ему
В те времена программированием занимались только ученые или около того, а в наше время программист — это массовая профессия с множеством узких специализаций. Можно сказать, что мы стали избалованы мощными IDE, мощным железом, интернетом, опен-сорсем, фреймворками, stackoverflow и т.д. Поэтому эти фундаментальные знания, методы и философия просто перестали быть нужными для тех, кто приходит в нашу профессию. Но именно они делают программиста больше настоящим инженером, и меньше — просто кодером.
"Хотя бы SSH настроить для гита"
Tortoise HG вполне позволяет использовать hg over ssh совсем без консоли. У git свой собственный ssh?
Да про что я говорю, до недавнего времени скрыть/показать скрытые файлы в Finder можно было только через консоль, попутно Apple Script-ом прибив и перезапустив все инстансы файндера (что прямо невозможно сделать вручную, по крайней мере было)
Именно, тупая копипаста и механическое зазубривание — это про кодера. Инженер же отличается пониманием и более глубоким видением, что позволяет ему решать задачи более оригинально и эффективно. Инженер умеет создавать более сложные вещи, чем кодер.
Всё вышеописанное — это как раз про обезьяну без фундаментальных знаний, а не инженера.
Инженер как раз не зубрит ничего — он знает, где найти. И маны — т.е. справочники — ориентированы именно на это. Нет, инженер не копипастит с форумов, кроме разве что редких нетривиальных случаев, и даже тогда разберется, что это такое написано, вместо тупого копипаста. Поэтому и консоль для инженера — вещь естественная, поскольку понимание системы наличествует.
Всё вышеописанное — это как раз про обезьяну без фундаментальных знаний, а не инженера.Какие красивые слова, какое великое ЧСВ от опознавания себя не обезьяной, а ИНЖЕНЕРОМ.
Инженер как раз не зубрит ничего — он знает, где найти. И маны — т.е. справочники — ориентированы именно на это. Нет, инженер не копипастит с форумов, кроме разве что редких нетривиальных случаев, и даже тогда разберется, что это такое написано, вместо тупого копипаста. Поэтому и консоль для инженера — вещь естественная, поскольку понимание системы наличествует.
Тем не менее, когда человек хочет перекодировать видео в ffmpeg, вне зависимости от того, ИНЖЕНЕР он или ОБЕЗЬЯНА, он лезет в маны/форумы копирует/переписывает оттуда команду и меняет параметры под себя. При этом мифического ПОНИМАНИЯ СИСТЕМЫ не происходит, сорцы ffmpeg вне зависимости от использования консоли, или графической оболочки для ffmpeg он не смотрит.
У меня около двух сот микротиков, и мне нужно присматривать за телекомщиками, что-бы они чего плохого не натворили, без автоматизации просто ни как. Кто говорит, что лучше нажимать кучу кнопок, просто не работал с большим количеством, просто нажать двести раз мышью, это уже не просто.
bash shell наше всё…
Скорее даже, лучше у приложения когда есть и GUI, и консольный вариант запуска с нужными ключами. И оба чтоб внятно продуманные были. В идеале.
А надо всего лишь на примерах «а-ля юнит тесты» показать самые распространенные кейсы применения утилиты. Со ссылками на подробную документацию, если пример не покрывает твои нужды.
Я, когда пишу компоненты, которые предполагают переиспользование — зачастую больше времени трачу на демки, документацию и т.п., чем на сам компонент. Зато люди могут за 5 минут прикрутить его к своему коду, а не мучаться часами.
У меня с годами сложилось чувство, что серьезные юниксоиды и т.п. получают удовольствие от того, что кроме них самих их продуктами мало кто может пользоваться.
современная консоль должна иметь подсказки к командам
bash-completion например.
Поскольку эта возможность была упущена много десятилетий назад, теперь объём работ по внедрению такого единообразия колоссален, потенциальные проблемы с обратной совместимостью неисчислимы и наш удел — смирение, неизбывное страдание и долгое вдумчивое чтение манов.
Надо ещё чтобы все консольные утилиты разговаривали на одном языке
Поздравляю, вы придумали PowerShell
Поскольку эта возможность была упущена много десятилетий назад
В *nix — да, но на нём свет клином не сошёлся.
Но в приницпе я почти не сомневаюсь, что такое не взлетело бы. С объектами работать проще, стандартизировать подобный вывод крайне сложно, полноценные библиотеки под работу с этим под все даже популярные языки писать удовольствие ниже среднего.
8,525 Unique Packages
Среди топовых — 3 от MS, 2 от Google, и 1 от стороннего разработчика.
С удовольствием посмотрю на то как любители графических интерфейсов поменяют один параметр в настройках сервиса на, скажем, 200-1000 однотипных серверов в ДЦ или раскиданных по всему миру, сколько у них уйдёт времени на давление кнопок на экране и сколько они сделают при этом ошибок.
Многократно менял настройки десятков и сотен географически распределенных серверов используя GUI, времени занимало пару минут максимум,
Верно, но это когда в ГУИ есть возможность поменять всё что вам необходимо. А вот как только там такой возможности нет вы превращаетесь в новорожденных котят в ведре с водой. Жалобно мяукаете, растеряно смотрите по сторонам и пускаете пузыри :)
интересно сколько в cli займет времени набить перечень 200-1000 fqdn/ip серверов если они
Те же «пару минут максимум»
При этом видел перед глазами результат выполнения задачи — вот прямо сейчас.
Вы так это расписываете как будто это чудо. :)
Если вы не видели нормальных SCM с GUI это не значит что их нет в природе.
Я такого не утверждал. Не надо искажать моих слов. Вот если вы не умеете использовать командную строку, то это не значит что она плоха. Плох тут кое кто другой, не будем показывать пальцем :)
Для вас, вероятно, будет откровением, что работа большинства пользователей компьютеров заключается вовсе не в администрировании серверов )).
Да, о командной строке UNIX/360, я читал ещё 25 лет назад, но большинство моих задач было удобнее решать «кнопочками» в окошках, а не в командной строке — так нет необходимости засирать голову кучей текстовой информации о параметрах утилит — голова и так была занята программированием + предметной областью.
При этом соглашусь, что некоторые задачи удобно решать командными файлами в командной строке. Некоторые. Далеко не все. Даже не половину.
Если мне не изменяет память, в Active Directory есть возможность...
Уважаемый, Вы статью читали? Ну или хотя бы название? Тут про Юникс.
у вас таких программ, скорее всего нет
Огромных, неповоротливых монстров типа Active Directory действительно нет, потому что они не нужны. Они дороги и слишком ограничены.
вместо специализированных под ваши задачи
У системного администратора(а не эникея) нет ограниченного круга задач. И невозможно написать ГУИ тулзовину которая их все покроет. Все те монстры а-ля «Active Directory» и иже с ними заточены на очень ограниченный круг задач, шаг вправо, шаг влево и вы упираетесь в стену. Даже если кто-то и возьмётся написать такого монстра, то он устареет быстрее чем выйдет в релиз, потому что софт меняется постоянно.
Для вас, вероятно, будет откровением, что работа большинства пользователей компьютеров заключается вовсе не в администрировании серверов
«Для вас, вероятно, будет откровением, что...» в этой статье обсуждают Юникс и командную строку, а не нужды бабы Веры, домохозяйки со стажем с тремя внуками. Для бабы Веры есть Виндовс с мышкой. :)
голова и так была занята программированием
Так и программируйте себе на здоровье в ГУИ. Вас никто не заставляет делать это в командной строке или vi. CLI в первую очередь для сисадминов.
но большинство моих задач было удобнее решать «кнопочками» в окошках
Так вы и есть продвинутая версия бабы Веры. Перед вами никто и не ставит сложных задач. Вам никто Юникс с командной строкой не навязывает. Расслабьтесь. :)
При этом соглашусь, что некоторые задачи удобно решать командными файлами...
«При этом соглашусь, что некоторые задачи удобно решать...» через ГУИ. «Некоторые. Далеко не все. Даже не половину.»(с)
Подытожу: Каждому нужен свой инструмент. Кому-то нужен CLI, кому-то SCM, а кому-то Виндовса с мышкой за глаза. Есть правда и такие, которые и этого не осилят, но тут их нет по понятным причинам.
" CLI в первую очередь для сисадминов."
Сисадмины — это обслуживающий персонал. А зарплату ему зарабатывают другие, которые с GUI и мышкой.: ь
CLI в первую очередь для сисадминов.
CLI в первую очередь это удобный текстовый интефейс, для всех.
А во-вторых он крайне удобен в автоматизации, а это не только сисадмины.
Процедура установки LibreOffice: «sudo apt install -y libreoffice» — что может быть проще? Я понимаю, за что не любят PowerShell. Благо, теперь есть bash из встроенной VM Ubuntu. Как в GUI, например, переименовать 100 фоток вида DCIM_20210112.JPG в photo1.jpg, photo2.jpg и т.д.? Не говоря уж о более сложных сценариях.
Как в GUI, например, переименовать 100 фоток вида DCIM_20210112.JPG в photo1.jpg, photo2.jpg
А в чём смысл этого действия? Я не очень понимаю, зачем это делать. В консоли для этого нужно написать программу. Или взять готовую, если есть. В GUI тоже нужно написать программу. Или взять готовую (точно есть).
Как в GUI, например, переименовать 100 фоток вида DCIM_20210112.JPG в photo1.jpg, photo2.jpg и т.д.?
Взять что-то вроде Unreal Commander(всё равно штука нужнейшая в работе и быту, регулярно применяю). Выделить скопом всё нужное и убрать выделение с того, что не требуется. Включить режим массового переименования Shift-F6. Вбить шаблон нового имени с использованием номерного индекса, замены части имени(если нужно — то и через регулярку), даты-времени-добавочной инфы. Сохранить шаблон этой операции, если надо. Profit.
Выглядит тот GUI в процессе примерно так
Ваш минимальный вариант делается примерно в 3 клика и несколько нажатий кнопок на кливиатуре. Выделить. Вбить шаблон нового имени(вот как раз как на картинке). Запустить.
лучше (имхо) использовать что-то вроде exiv2 mv *.jpg
, чтобы имена получили какую-нибудь семантику
CLUI: Building a Graphical Command Line
Почти 25 лет назад была написана статья
"«Операционные системы: зачем они инженеру»"
Интересно смотрится этот материал с позиций сегодняшнего дня, особенно в свете обсуждаемой публикации.
Я вот 15 лет программист под Windows, потом больше 10 лет под Linux. На просьбы что-то подсказать по настройкам той или другой операционки придурочно улыбаюсь. Потому что я занимаюсь данными, внутренней архитектурой приложения, логикой, математикой.
И чтобы сделать что-то сложнее переустановки системы, мне тоже требуется помощь шамана.
Надо запилить скрипт для автоматизации чего-то? У меня есть bash. Почему не python? Потому что быстрее написать на том, чем постоянно пользуешься (при этом не отрицаю того факта, что периодически встречаются задачи, когда Python использовать проще и быстрее).
Надо поработать с git, нормально освоить который мне всё время
Надо скачать с камеры 100500 фоточек, при этом переименовав их как мне нравится и рассортировав по папочкам (да-да, привет из прошлого)? RapidPhotoDownloader. GUI, местами кривой и глючный, но раз я им столько лет пользуюсь — вероятно наиболее удобный.
В общем, я искренне не понимаю ни тех, кто говорит «фууу! Консоль! Как этим можно пользоваться вообще?!»,
ни тех, кто говорит «фууу! GUI! Как этим можно пользоваться вообще?!».
Как пользоваться? С удобством!
P.S. выше в комментариях попалась хорошая фраза «Просто давно пересел на обычную венду и не трачу времени на то что не приносит денег». Очень хорошо его понимаю. Я в своё время, как только мне перестали платить за использование винды с огромным облегчением ушёл на линукс, просто потому что мне в нём удобнее. Ключевое слово — мне. Возможно вам удобнее в винде. Или на маке. Или вообще в OpenBSD. Выбор среды — он же от задач и предпочтений каждого зависит. Выбирайте, что вам удобнее.
P.P.S. но всё равно, что бы там ни говорили, а Убунту — лучше! :P
И вообще консоль полюбил именно за то, что облегчает обработку повторяющихся данных, поиск нужных строк в логах и преобразования. Да, для человека, который привык жать кнопки непривычно думать в другом контексте. Как раз то, что нужно шевелить мозгами и весь процесс под твоим контролем дает больше шансов на успех.
Я за то, чтобы был выбор!
И всеми руками за качественные интерфейсы — и графические и консольные
Сегодня скачал исходники U-BOOT, думал их хорошенько изучить. В итоге ковырял текстовым редактором. В IDE есть очень удобная функция — перейти к определению: встречаешь вызов функции и хочешь посмотреть тело этой функции — переход осуществляется мгновенно.
В итоге возник вопрос: а как писали и пишут многие подобные U-BOOT программы? Неужели в текстовом редакторе? Вывод такой сделал по отсутствию файла проекта от популярных IDE… Или в тот же эклипс загружается makefile и начинается работа?
Хорошо, когда есть CMakeLists.txt, потому что cmake может сгенерить проект под все популярные IDE, а сами файлы простые и человекочитаемые, изменения хорошо видны в диффах.
Если проект старый, cmake или аналога там скорее всего не будет, поэтому да, можно либо взять IDE с поддержкой makefile'ов, либо создать проект самому (для редактирования кода с нужными плюшками достаточно прописать правильные include paths), либо взять редактор, который может сканить код на лету.
А если, например, нужно пропатчить что-то мелкое, то берешь блокнотик, патчишь, собираешь make'ом, без всех этих проектов. У меня 90% контактов с опенсорсом этим и ограничивается — скачал, билдишь, что-то сломалось при билде, нагуглил на stackoverflow ошибку, пофиксил в блокнотике, билдишь дальше. Смысла возиться с IDE ноль.
Почему бы и нет? Некоторые олдфаги даже в vi без подсветки синтаксиса пишут, не vim!
P. S. К сожалению, Линус Торвальдс не смог сделать скриншот из своей консоли в текстовом режиме.
Этим всё сказано
Мне кажется, что этому способстовала относительтная простота и универсальность концепции. К сожалению, системы с GUI не получили столь же стройной и универсальной концепции. Универсального эталона так и не сложилось. Хотя такие попытки предпринимались(мне припоминается IBM CUA, Gnome HIG и Google Material Design). Интересно, что для программ c CLI обычно можно получить внятный рецепт по их использованию. С этим сложно спорить.
новое поколение современных разработчиков не забудет, что мы стоим на плечах гигантов.
прикольно, отсылка к цитате Ньютона))
Почему работать в консоли настолько приятно? Так задумано отцами-основателями Unix