Как стать автором
Обновить

Комментарии 434

Почему работать в консоли настолько приятно? Так задумано отцами-основателями Unix
Мне вот не приятно работать в консоли, и километровые маны и треды на Лоре читать не приятно. Напротив, дабы получить результат, приятно нажимать на кнопочки, при наведении на которые мне ещё и подсказку напишут. Ах да, ещё люблю стабильный API, а не набор случайных программ и хидеров, которые прикидываются им.
Собственно статья в типичном стиле «только UNIX», вида — терминал правильно, все остальные подходы — для пользователей.
Особая философия Unix настолько глубока и фундаментальна, что породила целые классы Unix-подобных систем, к числу которых относятся BSD, macOS и Linux. Все они построены на этой философии. А побочный эффект работы в такой системе — чувство правильности и цельности. Что так всё и должно работать: из кирпичиков, маленьких строительных блоков, которые сцепливаются в конвейеры любой сложности. Это же гениально.
Особенно люблю, когда начинающему разработчику, который ещё «hello world» не научился писать(на любом языке), вместо помощи, или хотябы игнорирования, вбивают в голову философию и какой дистрибутив Arch(ведь стабильная Ubuntu тоже для пользователей, а не профессионалов) следуют поставить. Часто заканчивается тем, что человек бросает это сложное и непонятное программирование, так и не узнав что существуют IDE, а не только лишь Vim, да и программировать можно не только в никсах.
Выпиливание из FireFox-а FTP клиента, со словами «пользуйтесь отдельной программой» видимо тоже часть философии, класс, это же гениально!

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

Медленно достаю свой старинный побитый неумелым программированием ноут, неспешно подключаю к СОМ порту давний собственно спаянный девайс, и медитативно из консоли начинаю мигать светодиодами
НЛО прилетело и опубликовало эту надпись здесь
Программы с графическим интерфейсом разговаривают с нами практически на одном и том же языке понятий, действий, символов (привет, кнопка с дискетой!). Консольные программы — чуть ли не каждая имеет свой язык, причём основанный даже на разных принципах. И детальное знание sed ничуть не поможет в работе с ffmpeg, придётся изучать с нуля целую систему понятий, сокращений, способов указания аргументов (через пробел, без пробела, через двоеточие, через дефис, через двойной дефис, в кавычках, без кавычек, бонусные очки — за произвольную комбинацию способов в разных параметрах одной и той же программы) и прочую арканологию.
ffmpeg — это вообще головная боль. Учитывая, что нужен он раз в полгода, каждый раз приходится вдумчиво гуглить, как сделать то-то и то-то, а ещё надо учитывать, что синтаксис регулярно меняется. Man? Ну-ну, удачи вам.
НЛО прилетело и опубликовало эту надпись здесь
А с чего бы куче окошек с галочками жрать гигабайты памяти? Нет, я не спорю, если постараться, можно и так сделать.
Кроме того, если оформить всё это в GUI, внезапно окажется, что не так уж там много возможных действий. Чем GUI и выигрывает — не надо на каждое действие делать отдельную кнопку, всё можно разумным образом сгруппировать.

Тогда посоветуйте такой GUI к ffmpeg. Я не знаю, какая самая труЪ программа для конвертации видео, каждый раз страдаю: их выше крыши, они предоставляют различные ~ненужные~ функции, не предоставляют нужные, зачастую платные итп итд.


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


Пришел к выводу, что быстрее было бы сдеалть с помощью ffmpeg (который, к к тому же, уже стоит или ставится за 15 секунд через apt/pacman/etc), чем перебирать GUI-шные проги и читать обзоры вида "Топ 10 бесплатных видеоконвертеров".

НЛО прилетело и опубликовало эту надпись здесь
Тогда посоветуйте такой GUI к ffmpeg.

HandBrake

И небольшая цитата из статьи habr.com/ru/post/400251
Можно сказать, что это идеальная графическая оболочка для ffmpeg (кстати, команды ffmpeg можно изучать по логам HandBrake, это лучше мануала).


Первый же комментарий: "С другой стороны, некоторые настройки в нём намертво прибиты гвоздями и не настраиваются."
За четыре года, может, что-то и изменилось, конечно.

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

А как HandBrake прикрутить к скрипту или автоматизации?
НЛО прилетело и опубликовало эту надпись здесь
И тем не менее, у него есть CLI-версия,
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.
Самой труЪ программы не знаю, но xmedia-recode работает поверх ffmpeg и для моих домашних задач вполне подходит. Подозреваю, что отличия от HandBrake минимальны.
GUI с доступом к базовому функционалу ffmpeg будет выглядеть как-то так. GUI с доступом ко всему функционалу будет выглядеть так, что проще разобраться в его синтаксисе, чем прыгать по десяткам вкладок с сотнями чекбоксов и дропдаунов.
Ну вот это как раз тот пример, когда программист берётся делать GUI.

image
Дело в том что если функционал большой, то GUI всегда будет перегруженный. А чтобы он не был перегруженный нужно убирать функционал\настройки. А если их убирать то утилита уже подойдет не на все случаи жизни, а только на те, которые создателю UI показались нужными. Соответственно с более-менее нестандартной задачей можно будет пройти в известном направлении.
У Photoshop GUI перегруженный? У MS Office перегруженный?
Photoshop — это работа с графикой, а не с данными, там без GUI никак в любом случае. Я уже где-то писал что прямая работа через консоль с не текстовыми данными — это, как правило, плохая идея. Но вы когда-нибудь пробовали сделать что-то нестандартное там, что раскрывает полный потенциал программы? Или по настройкам полазить? Photoshop actions не зря придумали.

Хотя несомненно Photoshop является удобной программой, возможно лучшей в своем роде.

Что касается MSOffice — попробуйте решить следующую задачу в Excel не используя код\формулы: есть два набора данных, где есть ключ (id), который совпадает и некий набор данных.
Например:
«somekey»;«mistergrim»;«05:04»,«somekey»;«MSOffice»;«GUI»;

А на выходе нужно получить следующее:
«somekey»;«mistergrim»;«05:04»;«MSOffice»;«GUI»;

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

С использованием формул или скриптом на VBA это делается довольно просто, получится ли у вас это сделать используя только GUI?
Не-не-не, давайте вот про скрипты не будем. Это действительно «другое». В любом случае, они лишь дополняют, а не заменяют GUI.
Но речь всё же немножко не о том, а о том, что в упомянутых программах возможностей на порядок больше, чем в ffmpeg, но! на нас не вываливают их все кучей. И основные, наиболее часто используемые  — все на виду. Ресайз картинки в фотошопе любой школьник может сделать, который даже его в глаза не видел. А вот как сегодня называется команда ресайза в ffmpeg? MAN FFMPEG и поехали.
У ffmpeg наверное с 1000 флагов наберется при, по сути, 5 функциях (конвертирование, обрезка, ресайз, фильтры, запись), у соответствующих функций в Photoshop столько настроек не наберется.

И логичнее сравнивать с Premiere Pro: обрезать видео там действительно любой сможет и это интуитивно понятно, а что-нибудь посложнее?
И что-нибудь посложнее делали. И в 3dsmax ворованном заставки для местного ТВ делали. И это без всяких книжек и интернетов. Вы 90-е вспомните, как это всё было.
НЛО прилетело и опубликовало эту надпись здесь
Если наборы ключей совпадают, то тупо две сортировки и один копипаст.
Буквально на днях у меня был в точности такой случай, и решился четырьмя кликами в GUI.
Это если в одном из наборов не пропущена какая-нибудь строчка, т.е. длина обоих наборов данных одинаковая. Каюсь, забыл об этом написать изначально. У меня просто недавно была такая задача, набор данных на примерно 5000 строк в одном файле и где-то на 4950 в другом.
У меня было ~2000 в каждом и разница в ~10 ключей, без проблем обошёлся гуём :)
Придется ведь руками сидеть и просматривать где пропущена строчка, это займет много времени и вообще предельно неудобно.
diff поможет.
diff в Excel? С GUI?
В Excel, который создан для анализа данных, нет способа анализировать данные? Наверное, надо учиться его готовить ;)
Или это challenge такой — принципиально не использовать клавиатуру? Так формула для сравнения мышкой набирается…
Когда они отсортированы и состыкованы рядом, это делается со скоростью прокрутки экрана вниз.
Спорно и зависит от набора данных. Например, если у вас в качестве ключей IP адреса, а в каждом наборе данных хотя бы столбцов по 6, то нет.

Контрпример — Blender. Уйма настроек. Практически всё доступно в GUI(за исключением, например, "отрендерить вьюпорт в картинку вместо экрана", это надо делать через Python, смотри далее), разбитом на режимы и закладки, плюс он ещё и конфигуриуется. И не перегружен, и доступен.
Скриптинг через Python, включая как построение сцены/анимирование/композитинг, так и команды запуска рендера и подачу скрипта на автоисполнение.
И сверх того команды для консольного запуска, вплоть до "взять ту сцену, запустить вот этот скрипт, отрендерить результат вот туда, GUI при этом всём не включать", что позволяет поставить его в планировщики и всякие автоматизированные системы распределённого рендера "кадр тут, кадр здесь" без задействования оператора.


То есть вполне можно сделать нормальный GUI. И сделать доступным примерно всё. И не перегрузить пользователя. Одновременно.
И при этом предусмотреть "расширенный режим" для тех, кому не обязательно нужен GUI.

Тут возникает вопрос: а не потребует ли разработка/имплементация адекватного гуя больше человеко-часов, чем сам функционал?

Забавно, что именно Blender как раз регулярно выставляют примером неудобного и перегруженного GUI. И кому верить?

Возможно, дело в версии. Блендер с версии 2.80 и далее получил переработанный интерфейс. И стал знатно удобней.

К вашей задачке для Excel: удаление дубликатов производится соответствующей кнопкой в панели «Данные». Либо через продвинутую фильтрацию, которая тоже кнопками включается. Либо через поиск. Формулы (или боже упаси VBA!) для этого не требуются.
Там не про удаление дубликатов, а про INNER JOIN двух диапазонов.
Это можно сделать и через PowerQuery — тоже без формул и без скриптов — но это, наверное, ещё больший оверкилл.
Так ведь «только GUI» совсем не отменяет формул. Щелк по «fx» слева от поля ввода, выбрали «ВПР» из списка формул, мышкой протащили диапазоны. Ну да, номер столбца и режим поиска придется ввести с клавы, но любом GUI всегда есть поля ввода значений. Вполне себе вариант когда лень тянуться к клавиатуре набирать формулу руками.
У MS Office до 2007й версии интерфейс был под стать задачи: можно было организовать рабочее пространство с быстрым доступом ко всем активно используемым функциям. Остальные функции (которые можно и не вспомнить) были доступны через меню и их можно было найти тупым перебором, если понимаешь, что тебе нужно (и, соответственно, имеешь представление, в каких пунктах меню искать).

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

Естественно, есть люди, которым лента нравится. Но имея опыт нечастого (раз в год) чрезвычайно активного использования ворда (вёрстка сложного документа из пачки более мелких), пришел к решению договориться со всеми кто готовит исходные доки, чтобы они при необходимости сохраняли в режиме совместимости (отдельную головную боль приносит Equation, которые мелкомягкие тоже поменяли без обратной совместимости, впрочем здесь тоже есть решение).
НЛО прилетело и опубликовало эту надпись здесь
Не сильно похоже чтоб это делал программист. Программист бы придумал для переименования файлов удобный синтаксис паттернов — скажем, как это сделано в Total Commander. Тут же явно делал гуйщик, которого просто пугают любые текстовые выражения.
Это очень хорошая программа. И интерфейс у нее крайне удобный
О! Спасибо, что напомнили мне этой картинкой, почему я слез сначала с Win, а потом и GUI к софту как-то искать перестал :-D
Здесь напрашивается аналогия между языком жестов и речью. Язык жестов всем хорош, его даже в совершенно незнакомой стране поймут, но изучить иностранный все-таки лучше и удобнее, потому что позволяет проще выражать намерения.
При чем, как с иностранным языком, есть правила, есть исключения. Но со временем они заучиваются тоже.
Язык жестов всем хорош, его даже в совершенно незнакомой стране поймут
Не факт, что поймут — у жестовых языков свои разные группы и диалекты, причем географически не совпадающие с устными. К примеру, американскому глухому человеку будет затруднительно общаться с британскими глухими — это языки разной группы, они отличаются довольно таки сильно. А вот русским понять американцев и наоборот будет несколько проще, т.к. языки принадлежат французской группе.
Как интересно. Надо будет изучить этот вопрос. Но я про то, что делают обычные люди, а не глухие.

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


P.S. Погуглил — Албания, Болгария, Греция.

А показать язык — это символ доброжелатльного приветствия в Тибете.
(Нужно же продемонстрировать, что он у тебя не чёрный, а, значит, ты — не демон.)
Программы с графическим интерфейсом разговаривают с нами практически на одном и том же языке понятий, действий, символов (привет, кнопка с дискетой!). Консольные программы — чуть ли не каждая имеет свой язык, причём основанный даже на разных принципах.

Я бы поспорил. Так же, как у GUI есть паттерны (кнопка дискеты, меню, чекбоксы, "кнопка гамбургер" итп), у консоли тоже есть свои паттерны:


  • -h/--help, man xxx. Собственно, точка входа, если вы не знаете, как этим пользоваться. Есть почти везде
  • длинные --long и короткие -s аргументы
  • работа через stdin/stdout

Да, не везде это так (напр. не все принимают stdin), но и GUI не всегда красивый и понятный. Особенно, если его делал программист для себя/других программистов (а большинство консольных утилит — это вот такой опенсурс).


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

image

Однако если захочешь загуглить помощи в интернете, то консольные команды — это просто команды, а для гуя придется смотреть видео на 20 минут, или пытаться интерпретировать «нажмите кнопочку с маленькой стрелочкой которая заворачивается сама в себя, но не сама в себя, а как бы в сторону, назад» (это почти прямая цитата, по памяти).
А вот про аргументы к командам, кстати, есть вполне четкая логика, которая валидна почти везде
Как вариант есть статьи со скринам. Но что больше всего меня раздражает в этом, что статьи не обновляются. Ищу в гугле как сделать то-то на том-то и нахожу статью. Захожу, а там все скрины не похожи на мои, глянул дату, статье уже года 3 и гуи у меня уже совсем другой.

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

Расскажите это админам MS Exchange, где с 2007 по 2016 версии роль PowerShell дважды менялась с "очень редкие вспомогательные операции" до "практически всё управление — только здесь" и наоборот. Соответственно, синтаксис командлетов тоже менялся, при чём весьма значительно. GUI, правда, там менялся не меньше — от чистого MMC до чистого WEB.

Столкнулся с подобным при работе с Blender. GUI очень сильно меняется из года в год. Найти актуальные скрины в инструкциях практически не возможно.

Все так. А потом выяснится, что это видео было снято на другой минорной версии программы и там такая кнопка выглядит по-другому или находится в другом меню. А то и вовсе ее теперь нет.
Это не говоря про косяки вида опция сейчас «включена» или «выключена», т.к. автор решил вместо однозначных чекбоксов использовать изменение цвета фона кнопки на непонятно какой оттенок.
В консоли два основных плюса относительно графического интерфейса — выразительность (то есть *больше действий* можно сделать *меньшими усилиями*) и history. Но и два требования.
Обладая 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 нет, нужно поставить слеш и подождать), а потом оказывается, что ширина дропдауна ограничена и ты реально не видишь окончание пути и надо уже реально по одной перебирать, потому что в поле адреса виден конец пути, а в подсказках — только начало.
Изучить конечно можно, но вот уж реально — проще мышкой натыкать.
НЛО прилетело и опубликовало эту надпись здесь
Ещё лучше на Alt-D (возможно, в неанглийской винде иначе)
Меняем на F4 -> Ctrl + A.

Работает. Но почему-то в таком режиме сломались подсказки. Как будто что-то рисуется поверх дропдауна. При этом если табом перейти, то все хорошо.
Ну и глобально это косяк с подсказками не чинит.
Подсказанный ниже Alt+D кстати не ломает.
Но в любом случае, это дольше. И очень не хватает tab-tab для листинга возможных вариантов с учетом частичного ввода. Учитывая поломанные подсказки для длинных путей — такое себе решение. Хотя технически работает, да.
F6 -> Enter
НЛО прилетело и опубликовало эту надпись здесь

Можно чуть быстрее — Win+R и начинаем ввод пути… потом — Enter. Наглядная автоподстановка (в том числе и сетевых шар по SMB) — бонусом.

Так и должно быть. Более того, в GUI бывает точно так же. Потому что есть такое понятие — предметная область. И любая мало-мальски сложная предметная область — обладает своим языком, понятиями, терминологией (возьмите хоть любой из читаемых в ВУЗах курсов). Консольные программы, оперируя текстом, отражают язык соответствующей предметной области довольно чисто. А в GUI у вас появляется выбор: или оно говорит на понятных всем символах, а значит, не может действительно сложные вещи. Или в этом GUI опять же должны быть введены соответствующие языку предметной области символы, и тогда в таком GUI опять же придется разбираться — примером тому рядом по треду люди сообщали о редакторах видео, где кроме примитивных операций типа обрезки ничего не было понятно, как делать.


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

Так и должно быть. Более того, в GUI бывает точно так же. Потому что есть такое понятие — предметная область. И любая мало-мальски сложная предметная область — обладает своим языком, понятиями, терминологией (возьмите хоть любой из читаемых в ВУЗах курсов). Консольные программы, оперируя текстом, отражают язык соответствующей предметной области довольно чисто.
Эээм, а например редактор схем? Консольная программа ДЕЙСТВИТЕЛЬНО сможет правильно отразить предметную область, серьезно?
А в GUI у вас появляется выбор: или оно говорит на понятных всем символах, а значит, не может действительно сложные вещи.
Можно мне аналог Photoshop консольный привести в пример. Действительно есть более продвинутая консольная версия, в которой можно делать более СЛОЖНЫЕ вещи?
Или в этом GUI опять же должны быть введены соответствующие языку предметной области символы, и тогда в таком GUI опять же придется разбираться — примером тому рядом по треду люди сообщали о редакторах видео, где кроме примитивных операций типа обрезки ничего не было понятно, как делать.
Тут в комментариях уже обсуждали одну консольную программу для обработки видео, с которой без копипаста не разобраться.
Отдельно в контексте статьи и начала треда нужно заметить, что работа программиста, по сути, заключается в переводах между разными языками, т.е. у него не должно быть проблем с изучением новых языков. Соответственно, программист, который жалуется, что у него проблемы с изучением языков, как минимум вызывает недоумение, если не сказать неполноценен.
Консольный интерфейс конкретной программы обычно не является языком программирования, поэтому не очень понимаю о какой неполноценности речь, даже более того — программист в принципе не обязан изучать все языки.
Не переживайте, в посте тоже преимущества суровой консоли демонстрируются в интерфейсах с окошками и кнопочками :-)
Ну, а что — приятно же рассказывать об удовольствии прогулок пешком по лесу, когда в гараже есть бмв?

Если что: я где-то с 70-х с компами общаюсь, все варианты прошёл — и прямой ввод hex с пульта, и «консулы» и все стадии экранных интерфейсов. Как и положено, любой вариант, если нет выбора — наказание и абсурд.
демонстрируются в интерфейсах с окошками и кнопочками :-)

Это вы про что?
Ну, а что — приятно же рассказывать об удовольствии прогулок пешком по лесу, когда в гараже есть бмв?

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

Если что: я где-то с 70-х с компами общаюсь,
все варианты прошёл — и прямой ввод hex с пульта,
и «консулы» и все стадии экранных интерфейсов

Аналогично, коллега!
Ну только я начинал на втором десятке прожитых лет соответственно во второй половине 80-х.
Тем, кто всё это начинал в 70-80-90 (наверно не позднее первой половины 90-х), тем консоль — не только не помеха, но даже и наоборот, друг, товарищ и брат! (ну или сестра, если консоль — она; а если терминал, то очень даже и брат)

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

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

Не стоит так словами необдуманно бросаться. С CLI у git дело обстоит получше многих других утилит. Если Вы не видите системности, это не значит, что её нет. Она есть.

"получше многих других утилит."


Есть утилиты, у которых с понятностью ещё хуже. Возможно ;)


"Если Вы не видите системности, это не значит, что её нет. Она есть"


Системность подобна суслику :) Она конечно же есть, но зачем ее так усиленно прятать?

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

У Торвальдса буквально есть лишь одно "поделье" — ядро линукса. И то, что вы так огульно складываете всё в одну корзину лишь демонстрирует, что ваш тезис про "несистемность" базируется на невежестве.


PS: работа с git из консоли проста и логична — когда ты действительно понимаешь как он работает. И это снова приводит к контексту невежества.

начинающему разработчику… вбивают в голову философию и какой дистрибутив Arch… человек бросает это сложное и непонятное программирование

Но ведь ничего про это в статье нет. Мне кажется это какая-то ваша личная история (ну, скорее всего не ваша, а где-то виденная вами), которую вы зачем-то спроецировали как общую ситуацию.
Что же касается «терминал правильно, все остальные подходы — для пользователей» — весьма часто так оно и получается. Огромное количество именно компьютерно-профессиональных вещей делается в консоли. Никто не заставляет писать код в Vim вместо привычной IDE (хотя и не запрещает), но GUI для очень многих программ или слишом сложны, или избыточны, или бесполезны с практической точки зрения.
Кроме того, как человек, который использует i3 в роли wm из-за развитой системы хоткеев и автоорганизации пространства могу сказать, что для скорости и удобства очень важны именно хоткеи — клавишные комбинации. Возможность писать, запоминать и повторять команды вслепую и с максимальной скоростью очень и очень помогают продуктивности.
Да, те же IDE позволяют _почти_ всегда обойтись без мыши, но стоит привыкнуть делать все с клавиатуры и оказывается, что так проще объяснять, проще запоминать, проще искать и проще повторять. Но кривая освоения да, совершенно другая и плохо подходит для массового внедрения (что и доказала практика).
Но кривая освоения да, совершенно другая и плохо подходит для массового внедрения (что и доказала практика).

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

Это всё нивелируется клавиатурными шорткатами. «Не-консоль» — это необязательно «мышь и кнопки». Какой-нибудь FAR (mc, что угодно) в противовес консоли при манипуляции файлами — это тоже не мышь с кнопками, а клавиатурные комбинации, но при этом с визуальной составляющей.
Не то, чтобы нивилируется, на самом деле. Да, я пользуюсь иногда mc, он удобен в некоторых кейсах, но большую часть времени я просто далаю все через консоль, потому что просто мне лично быстрее таскать файлы через cp/mv или удалять через rm с возможностью быстро указать фильтр (вроде mv *.asd ../new/), чем в GUI (mc — это тоже GUI) селектить нужные файлы и потом тыкать f5.
Ну то есть каждый пользуется на самом деле чем угодно, просто имхо нельзя сказать, что что-то чем-то нивелируется. По гибкости, потенциалу для сложных операций и автоматизации треминал все-таки вне конкуренции. Но, если использование сводится к «иногда скопировать, переместить или удалить файл или папочку в другую директорию», то в целом никаких ощутимых проблем не будет. Пока не понадобиться поискать файлы с определенного типа, включающие в себя строку «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, но созданный в дополнение к чисто консольному интерфейсу. Не зря там внизу терминал висит (по крайней мере в оригинальном фаре он был, как сейчас — не знаю).

Тем не менее, то, о чем идет речь — решается НЕ доступом к консоли, я привел выше последовательности шагов. Вы же сами сказали, что нортоноподобные — это тоже GUI:
… мне лично быстрее таскать файлы через cp/mv или удалять через rm с возможностью быстро указать фильтр (вроде mv *.asd ../new/), чем в GUI (mc — это тоже GUI...)

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

Для разных трюков с файлами придуманы файловые менеджеры. С помощью однострочников на bash достаточно эффективно можно делать те же трюки. Но far проще ;)

Нет, mc или Far — это не GUI, а TUI.

Во-первых, это слова моего собеседника, а не мои.
Во-вторых, это условное деление. Что считать текстом? Вот есть у вас TotalCommander — он еще TUI или уже GUI? Функционал и принципы те же.
Во-вторых, это условное деление. Что считать текстом?

Всё, чем можно пользоваться через ssh без -X.
Достаточно чёткое деление?
К ардуиновскому UART ssh не подключается никак. UART — не текстовый протокол. Логично? ;)
есть GUI, есть TUI, есть CLI — это все немного разные вещи.
Это «деталь технической реализации», а для пользователя нет разницы — панель и менюшки Farа нарисованы текстом или в TotalCommander'e текст нарисован попиксельно — интерфейс, его логика, тот же самый.

saboteur_kiev
есть GUI, есть TUI, есть CLI — это все немного разные вещи

С CLI вопросов нет. А вот допустим, у нас есть программа, написанная на Visual Basic for DOS или борландовских пакетах — там есть окна, чекбоксы, кнопки, но нарисовано все текстом, 80*25. Это мы считаем за GUI или за TUI? Чем, кроме технических деталей реализации, это отличается от графического окна в Win32 с теми же кнопками и чекбоксами?
Это «деталь технической реализации», а для пользователя нет разницы

Почему же, в mc я могу запайпить ввод вместе с управляющими последовательностями, а в totalcmd — не могу.
Соответственно, заскриптовать действия в mc я могу, а в totalcmd — не могу.
Утилиты от Microsoft для администрирования домена (NTDSUTIL) выполняются в консольном окне, но совершенно не скриптуются.
И в FARе не сможете, и в NC тоже. Хотя интерфейс — один и тот же.

saboteur_kiev
Ну вот фар я могу запихнуть в терминал, а тоталкоммандер — нет.

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


Вы как бы не путайте теплое и мягкое.
Есть конкретная разница между CLI и другими видами интерфейса.

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

Да, ФАР очень удобно использовать вместе с CLI, у них отличная интеграция, но сравнение вполне хорошее.
В Windows многие вещи доступны только через API (например — жесткие ссылки), а в Linux не наблюдается подобного?
НЛО прилетело и опубликовало эту надпись здесь
Но это отдельное ПО, не стандартные админские обвязки
*задумчиво глядит на fsutil и mklink* а мужики-то и не знают…
Ещё момент: консольные утилиты можно вызывать и не самому набивая на клавиатуре команды. Т.е. уровень автоматизации рабочих процессов можно повысить написав скриптов которые будут к примеру готовить изображения\видео к публикации, упаковывать, переименовывать, сортировать, отправлять на сервер. Да много чего. Видимо поэтому часто в описании вакансий системных администраторов можно встретить «умение писать скрипты на ...»
GUI плохо годится для сложных задач, потому что оно начинает выглядеть как-то
так


И это просто настройки, а если нужна какая-то логика, как в примере с
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 с ее политиками.

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

В любом случае что проще: разворачивать AD и настраивать политики или добавить один параметр в строку запуска?
Наверное, я что-то не понял, но
xfreerdp:
-clipboard
Redirect clipboard (default:on)

и встроенный в win клиент
rdp

Вы этот параметр имели в виду?
Действительно. Думал я с ума сошел, но нет, раньше не было:
Не удержался, а как сейчас в Linux с GUI? Лидируют всякие стеклянные Unity? Или традиционные среды вроде XFCE и новомодные ретро MATE развиваются и удобны? Просто давно пересел на обычную венду и не трачу времени на то что не приносит денег :(
i3 живее всех живых. GTK и QT тоже. rofi тоже умирать не собирается. Нормально все, в общем.
Спасибо, успокоили. Про i3 не слышал, ушел из никсов еще при wmii
Сижу на KDE, любимая DE, как и Qt в целом. По сравнению с 5 лет назад все довольно шикарно стало.
НЛО прилетело и опубликовало эту надпись здесь
Раньше мем был про «кеды не падают». Теперь они и правда не падают. Еще и много приятного функционала завезли с тех пор, тот же KDE Connect просто прекрасная вещь.
НЛО прилетело и опубликовало эту надпись здесь
Я вот ровно по той же причине давно пересел с винды.
Иногда по выходным загружаюсь в неё, она у меня запускалкой стима работает.

P.S. Unity больше не разрабатывается, но всё равно интересно — почему она «стеклянная»?
Не понял — по какой причине?
Не знаю, Unity, оболочка Win7 и вообще тогдашние новые стили создавали у меня ощущение, что они стеклянные.
ну, по причине «мне за это не платят».
Ну вот если бы использование линукс улучшало мою производительность или делать свою работу под ним было удобнее тогда стоило бы заморачиваться, а так — получается вещь в себе, для JS Fullstack-а ощущения от работы под любой ОС примерно одинаковы.
А вам венда доставляет неудобства в работе/лишает каких-то преимуществ? Ну кроме знания, что это просто ОС для домохозяек.
как бы вам объяснить. Вот мне 42 года, я работал и с *BSD, и с линуксом, и с BeOS, и с MacOS, начиная ещё с тех версий, которые до MacOS X, и с DOS, и с Windows (захватив и 9х ветки, и NT, и всё что было после них). Понимаете, мне глубоко безразлично что там «для домохозяек», а что нет.

Windows — отличная ОС, онаподходит очень многим, но мне, в силу ряда причин, она крайне неудобна. Она у меня есть, я её иногда по выходным запускаю (запускалкой steam работает).
Но для моей работы она очень неудобна, правда.

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

В разные версии Линуксана наигрался еще студентом (вплоть до ручной сборки Gentoo, но jast for fun — никакой практической пользы не получал) и мне он, поверьте, очень нравится и я не собираюсь никого убеждать никуда пересаживаться.

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

Я просто имел ввиду, что получаю удовольствие от работы с ОС которая дает мне доп. преимущества в работе, вот если б я писал на всяких хаскелах или хотя бы ML на питоне, тогда было бы очень приятно воспользоваться линуксом и развернуть какой-нибудь arch/debian/gentoo, а just for fun не интересно, если обычная венда из коробки дает точно такой же результат.

Нелюбимого ПО было много на старой работе — всякие Diasoft-ы которые под вендой то трудно запустить.
НЛО прилетело и опубликовало эту надпись здесь
А что стараются сломать в генту последние пару лет
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Билли, это ты?
НЛО прилетело и опубликовало эту надпись здесь

nLite )

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

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

И мне даже жаль что разработка сайтов на JS сильно инвариантна относитлеьно OS. Вот если нужна большая и сложная система, а не пишущая машинка с возможностью запуска клиентсервера как у меня то тогда стоит заморачиваться
Вот если нужна большая и сложная система, а не пишущая машинка с возможностью запуска клиентсервера как у меня то тогда стоит заморачиваться
Да наоборот. Линукс ведет себя как прошивка для инструмента — обновляется скромно, удобный софт типа терминала со вкладками идет из коробки, вещи типа sshfs — родные, а не порты с линукса, в целом более нативное ощущение от консоли (без путей типа /mnt/c/Users/vasisualij/Downloads), малвареписателем 2% ОС не интересна, он бесплатен, наконец.
И, главное, если его выключить и включить через год — он продолжит работать, а не полезет обновляться три дня.
Компьютер с линуксом работает с ощущением именно что печатной машинки.
А с виндой — это какое-то живое существо, которое живет своей жизнью, может послать — ему обновляться нужно, если что-то сломалось (случай из опыта) — качай с сайта MS утилиту, которая покажет тебе логи, оно «болеет» малварью и нужно вычесывать ему шерстку и делать прививки. Наверное, если живешь с этим животным каждый день, то привыкаешь, но для меня это скорее были вынужденные страдания для запуска чего-то, под под вайном не работает. Последний раз это было из-за oculus rift.
Тоже правда, но все же для Win на установку и настройку уходит примерно 0 усилий, только подождать обновлений пол дня занимаясь чем-нибудь еще.
А какой дистрибутив предпочитаете?
но все же для Win на установку и настройку уходит примерно 0 усилий, только подождать обновлений пол дня занимаясь чем-нибудь еще.
А с линуксом что? Если комп новый, то на ssd минут 20 ставится.
Как правило ведь люди никогда на чистый комп линукс не ставят — им подавай дуалбут, разбиение диска, возможность, чтобы системы видели файлы друг друга, и при этом весь этот процесс установки не уничтожил фоточки из Турции. А это большой источник проблем.
А какой дистрибутив предпочитаете?
Лет 10 ставлю только ubuntu с xfce. Лет 5 — только LTS. Для меня идеально — в меру консервативно, не тормозит ни на каком железе, но и пакеты не пятилетней давности.
Вроде бы фоточки из Турции уничтожал только хакинтошь и то только на том-же жестаке куда его ставили.
У кого-то на это противоположный взгляд. Не знаю, может быть, это всё стёб и шутки.
Вот примерно по этому и перешел на винду — у нее нет многих плюшек, они во многом медленнее, но она просто работает. Вот если мне станет удобнее работать под линукс — тогда, наверное, и вернусь.
и не трачу времени на то что не приносит денег

Сижу на Linux, и чуть-чуть на OS X, именно потому, что это приносит мне денег
НЛО прилетело и опубликовало эту надпись здесь
Конечно. Разработка под AWS/GCP — инфраструктурная — неудобна из под Windows. Она удобна из-под Linux и OS X
НЛО прилетело и опубликовало эту надпись здесь
Но зачем?
Действительно, сэр Генри, почему? (с)
НЛО прилетело и опубликовало эту надпись здесь
Я первым делом перемещаю «панель задач» xfce вниз и результат мне, выросшему на 98/2000/xp, намного привычнее, чем все, что делает MS после семерки. Разница с XP только в том, что настраивать приходится даже меньше — дефолтный браузер уже правильный, лишних рекламных иконок нигде нет, веселый интерфейс с синими панелями тоже отключать не нужно, он сразу грустный.
Семерка была непривычна, но норм, хотя зачем такая толстая панель с пуском мне было не понятно, как и вся эта стеклянность, десятка же раздражает просто ВСЕМ, и я искренне не понимаю, зачем люди так мучаются, если им не нужен специфический софт.
НЛО прилетело и опубликовало эту надпись здесь
ФС в целом теряет или именно windows порт? И да — если на ФС в ОС нельзя поставить саму ОС ее там считайте нет (всякие swap не в счет)
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
make install используете?
НЛО прилетело и опубликовало эту надпись здесь
Но ведь вам приносит деньги разработка под AWS, а не сидение на Linux.

Конечно. И для меня себестоимость моей работы из-под Linux меньше, чем из-под Windows

Linux через некоторое время после моих попыток привести его в привычный вид приходит в негодность

неправильно его готовите? Раз всё так плохо, поставьте вместо Арча/Федоры/дебиан анстейбл что-то заметно более стабильное, например оракл линукс 8, и ставьте пакеты только из официальных репозиториев, EPEL, ну или если ставить будете из rpmfusion итд, добавьте protect base и другие плагины для dnf. Так же ставьте софт из флэтпака и снапа.
НЛО прилетело и опубликовало эту надпись здесь
Тогда оно будет ещё дальше от моих требований к ОС.

Почему? Ещё свежий софт я локально ставлю в локальный microk8s
НЛО прилетело и опубликовало эту надпись здесь
А если доработки сделать нельзя, то и движения к совершенству не будет.
Поэтому нужно сидеть на винде, она уже совершенная.
НЛО прилетело и опубликовало эту надпись здесь
Конфиг клавиатуры кстати у меня скорее всего отвалился из-за настройки переключения по Shift+Alt

Это настраивается куда проще
НЛО прилетело и опубликовало эту надпись здесь
Мм, а минус-то за что? Грустный смайлик не зря стоит — у меня ностальгия по Линуксу и действительно сейчас, к сожалению, смена ОС никак не принесет мне денег.
потому что оно начинает выглядеть как-то так
По личному опыту — в 100 случаях из 100 предпочту такое синонимичной команде в терминале, если надо указать больше, чем пяток аргументов/опций. Потому как читать это всё одной простынёй куда как хуже — люди не случайно придумали всякие там таблички и прочие способы визуальной организации информации.
У меня обратный опыт: в большинстве случаев команду можно визуально распарсить по параметрам, а тут просто глаза разбегаются и непонятно что где искать.
Конкретно в этом случае с картинками проще скриптик на питоне забабахать. Все-таки порог вхождения меньше чем в консоль и возможностей больше.
Напротив, дабы получить результат, приятно нажимать на кнопочки, при наведении на которые мне ещё и подсказку напишут.
зависит от того, чего хотите добиться. Подчас некоторые настройки в винде спрятаны так далеко, что найти их самостоятельно нереально, а следование инструкции куда дольше чем «скопируйте вот этот текст в терминал чтобы получить желаемый результат».
Ах да, ещё люблю стабильный API, а не набор случайных программ и хидеров, которые прикидываются им.
в винде я смотрю апи настолько стабилен, что его каждые несколько лет с нуля переделывают
в винде я смотрю апи настолько стабилен, что его каждые несколько лет с нуля переделывают
1) Не терминал, а графический интерфейс != только Windows.
2) Достаточно стабильный для того чтобы программа для 98 винды продолжала работать на Windows 10.
1) Не терминал, а графический интерфейс != только Windows.
ну в маке есть и терминал и графический интерфейс. Я ведь не говорю о том, что гуй не нужен. Просто чем сложнее/уникальнее манипуляция, тем меньше для неё подходит графический интерфейс. Linux-way, кстати, сделать либу, консольный клиент и GUI клиент. Чтобы при недостаточности/неудобности гуя сохранялся функционал.
Достаточно стабильный для того чтобы программа для 98 винды продолжала работать на Windows 10.
всё-таки линукс в первую очередь про совместимость на уровне сорцов, и уже потом про бинарную. По сути вам точно так же как и в винде никто не мешает складировать в системе все версии всех рантаймов за последние 50 лет, а приложухи поставлять вместе со всеми их библиотеками.
всё-таки линукс в первую очередь про совместимость на уровне сорцов


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

Армбиан и тем более китайская убунта на банана пи м3. Больше необходимости не было.

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Объясните, чего минусите человека или расскажите где Докер не поможет — мне на самом деле интересно, я нуб.
НЛО прилетело и опубликовало эту надпись здесь
Не понял:
  • Кто вас заставляет пользоваться GUI?
  • Или сборка GUI сложна?
НЛО прилетело и опубликовало эту надпись здесь
Я тоже
НЛО прилетело и опубликовало эту надпись здесь
Linux-way, кстати, сделать либу, консольный клиент и GUI клиент. Чтобы при недостаточности/неудобности гуя сохранялся функционал.
К сожалению обычно делают консольную утилиту, и лишь потом прикручивают графический интерфейс, через парсинг выхлопа утилиты. Выходит git, который лично мне одинаково не удобен и не логичен, что в консоли, что в GUI. И да, когда хоть что-то пошло не так, парсер ломается, и надо разруливать выхлоп вручную, такое себе.
всё-таки линукс в первую очередь про совместимость на уровне сорцов, и уже потом про бинарную.
И это ужасно. У меня есть набор утилит, самого разного, часто уникального предназначения, без сорцов, которые уже не поддерживаются, но продолжают работать в Windows, уже 20 лет. И нет OpenSource аналоги есть не всегда, так уж бывает в реальном мире. В мире никсов я был бы вынужден от них отказаться, такой себе путь. А потом задаемся вопросом почему под никсами нет софта? — он «откис».
По сути вам точно так же как и в винде никто не мешает складировать в системе все версии всех рантаймов за последние 50 лет, а приложухи поставлять вместе со всеми их библиотеками.
Честно говоря, может быть я понимаю что-то не так, но приложения корректно использующие win32 api просто работают, без гигабайт DLL миллионов версий. Бинарная совместимость и вменяемое API — великая вещь.
И да, я сомневаюсь что приложение, скомпилированное в бинарник, которое, например таскает с собой GTK1, будет способно хоть как-то работать на современных линуксах. В то время как приложение для win98 продолжает работать в 10ке.
про совместимость на уровне сорцов
Если б оно хотя бы на уровне сорцов работало.
Выходит git, который лично мне одинаково не удобен и не логичен, что в консоли, что в GUI
1. конкретно гит
2. лично вам
3. я говорил про «либу, консольный клиент, и GUI-клиент», там не было ничего про «парсинг выхлопа тулзы». Так тоже можно конечно, просто надо обеспечивать совместимость форматов. Если конкретный мейнтейнер этого не делает — сам виноват
4. по мне, так разруливать даже консольный выхлоп куда лучше чем минут 15 искать в реестре нужный ключик, который нужно правильно «повернуть», чтобы добиться изменения настройки, которую убрали из свежего модного молодежного гуя
Честно говоря, может быть я понимаю что-то не так, но приложения корректно использующие win32 api просто работают, без гигабайт DLL миллионов версий
помнится на моей тогда еще свежей десятой винде «ведьмак» попросил установить 6 разных версий vcredist… Ну и не забывайте во сколько раз винда больше той же убунты весит.
В то время как приложение для win98 продолжает работать в 10ке.
я сталкивался и с тем, что не работали приложухи куда новее win98. И, знаете ли, всякие cat тоже отлично поживают.
> Честно говоря, может быть я понимаю что-то не так, но приложения корректно использующие win32 api просто работают, без гигабайт DLL миллионов версий. Бинарная совместимость и вменяемое API — великая вещь.

Загляните в директорию WinSxS :)
Как раз гигабайты рантаймов. Во времена 9х было понятие dll hell, когда в системе появлялась другая версия используемой системной библиотеки (например, при установке какого-то софта) и часть приложений ломалась. Сейчас такого нет, т.к. винда сама подставляет подходящие версии dll-ок и софт без нужного манифеста на 10ке получит системные dll-ки с функциями от более старой системы.

Да, есть часть WinAPI, которая достаточно стабильна, но мало какой софт обойдётся чисто winapi-шными функциями. Большей части нужен runtime какой-нибудь из версии VS, большинству гуёв понадобится какой-нибудь comctl32.dll, который уже не такой стабильный.
НЛО прилетело и опубликовало эту надпись здесь
В мире никсов гораздо вероятнее были бы сорцы.
Нет, сорцы есть не всегда. Так бывает, что автор не выкладывает сорцы, начиная просто с «не хочет»(и нет, не потому что человек жадный), и заканчивая тем, что человек на хочет показывать их, например из-за того что он считает их недостаточного качества. Ах, да я вот умею программировать, но желания собирать из сорцов что-то просто нет, и такое бывает.
Но даже если нет — chroot вам в помощь, создавайте хоть среду от Убунты 6.04.
О, невероятной глубины костыль, вместо вменяемого стабильного API, класс это же гениально!
НЛО прилетело и опубликовало эту надпись здесь

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


Серьезно? И почему? Я, например, исходники броузера, которым пользуюсь, не смотрел, и не собираюсь. Чем это отличается от недоступных исходников?

НЛО прилетело и опубликовало эту надпись здесь
Наверное, смогу. И полученный бинарник станет чем-то лучше? Или я просто сожгу несколько сотен ватт-часов электричества? Грета Тунберг будет недовольна.
НЛО прилетело и опубликовало эту надпись здесь
очевидно


Совершенно не очевидно. Под распространённые конфигурации железа броузер уже собран. А под всякую экзотику, типа калькуляторов и кофеварок, что-то мне подсказывает, недостаточно просто нажать кнопку сделать всё хорошо configure && make && make install.
Эмм, у вас UEFI/BIOS с недоступными сорцами (многим), а под ними PSP/ME-AMT, сорцы которого ещё более недоступны.
Использование программы с недоступными сорцами — это уже само по себе невероятной глубины костыль, не надо удивляться что он требует подпорок.
А как вы хабром пользуетесь? Или у вас есть доступ к исходникам?
Ах, да, выкидывайте свой компьютер, сорцов BIOS у вас нет, как и кучи других исходников, которые позволяют вашему компьютеру дойти до загрузки Linux.
Именно это меня и бесит в людях которые всех пытаются пересадить на «свободное ПО», ну нет, и никогда не будет у меня, как и у вас, сорцов от всего, и это НОРМАЛЬНО.

Это не нормально, это привычно. Причем, не всем.

А в чем проблемы с легальностью? VirtualBox уже запретили?

НЛО прилетело и опубликовало эту надпись здесь
ebay с вами не согласен, retail версий там хватает.
Я не про отдельные ключи, я про коробку, запаянную в плёнку. Внутри буклетик «ХП это модно и круто», красивый диск (у хрюши он реально красивый) и серийник.
Это да, если retail, то катит.
Просто есть OEM лицензии — там тоже красивый диск, серийник и буклетик в плёнке, без коробки правда. Но это именно «серая» лицензия, потому что формально вы не можете её поставить на произвольный комп — она OEM.
Так я про retail версии изначально и говорил.
В лицензии боксовой семёрки разрешался даунгрейд на предыдущие версии, если память не изменяет (хотя, могу путать с XP — давно это было). Возможно и для десятки есть что-то такое.

С другой стороны, раз поддержка XP прекращена — могут и послать.

Но, в любом случае, купить коробку на ebay — пока ещё не проблема.
Выходит git, который лично мне одинаково не удобен и не логичен, что в консоли, что в GUI.

Не надо кривое поделие Торвальдса проецировать на всё консольное — от гита много кто плюется, и есть альтернативы.


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

Никсы никсам рознь. Вот у нас во FreeBSD поддерживают бинарный COMPAT на лет так 20 назад точно.

НЛО прилетело и опубликовало эту надпись здесь

Есть fossil и chiselapp.com например. Вообще вопрос хостинга сильно преувеличен.

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

Фактически ничего из перечисленного в статье не является API винды
НЛО прилетело и опубликовало эту надпись здесь
WinAPI — это одна из самых стабильных вещей вообще.
вы молоды и упускаете тот момент что графического интерфейса с тултипами тогда не было
да и сейчас для автоматизации пайплайны эффективнее
Не вижу смысла холиварить. Консоль это молоток. Гуй это роборука, которая может ударять молотком так, или как-то ещё. Кому-то нужно одно, кому-то другое.

Мне в консоли удобнее, а когда не удобно, то я в GUI.

Например, нужны мегаогромные системы, чтобы в логе выбрать строки событий за 15 часов 15 минут, с адресом bla@domain.com отфильтрованные спам-фильтром. Однажды изучив grep я выведу на экран нужные 10 строк за несколько минут. Не потому, что я красноглазик, а потому что это удобно. Но сейчас я пишу коммент через GUI, не потому, что не умею, а потому что так удобнее.
Но сейчас я пишу коммент через GUI, не потому, что не умею, а потому что так удобнее.

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

НЛО прилетело и опубликовало эту надпись здесь
чем ждать, пока откроется гит-клиент

Так а зачем было его закрывать? Я у себя не закрываю.
НЛО прилетело и опубликовало эту надпись здесь
Дело было правда давненько, как бы не в прошлом веке, но пришлось в нескольких организациях, связанных локалкой менять сетевую адресацию (ЦУ сверху). Все адреса раздавались по DHCP, но с резервированием.
Я поменял адреса за несколько секунд. А что тут? Запустил sed с подменой в конфиге одной подсетки на другую и перезапустил демона. Причем сделал это из дома.
А вот виндовым админам пришлось оставаться после работы и тыкать мышкой, да не по одному разу, в каждого пользователя, стирать старый, набивать новый адрес. Ох и матерились они от такой творческой работы.
Вы молодец, а админы — нет ;)
Всяких command line tools для Windows NT было, и vbs существовал, и при желании всё это можно было автоматизировать. Правда, без google это было не так просто.
Мне вот не приятно работать в консоли, и километровые маны и треды на Лоре читать не приятно. Напротив, дабы получить результат, приятно нажимать на кнопочки, при наведении на которые мне ещё и подсказку напишут

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


Особенно люблю, когда начинающему разработчику, который ещё «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… кб). Зато строк простых и понятных.

Ну было бы на питоне 5 строк, пусть даже 10. Кому это важно?

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

Вы каким то сложным путём пошли, для выявления явно установленных пакетов и зависимостей. Для этого есть штатный pacman -Q в параметрах которого есть всё что вам нужно!

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

Для этого есть штатный pacman -Q в параметрах которого есть всё что вам нужно!
не разобрался в пакмане, и случайно удалил много что с -Rsnc
Такой простой, понятный и удобный консольный пользовательский экспириенс, смотрю…
Нет нормальной среды? А как же PyCharm, CLion, QtCreator, Eclipse?
Кажется, даже, что-то забыл.
Это с какой стороны Эклипс — нормальный?
Нет, ну по сравнению с вимом может быть.
Мне тоже, Eclipse, не особо, но CLion и QtCreator нормальные ведь?

CLion, имхо, лучшая C/C++ (+Rust) IDE общего назначения, если нет каких-то особых требований (вроде memory view, дизассемблера итп, хотя они движутся в сторону эмбеддед)

Для списка, есть еще Netbeans C++. Показался самым удобным в свое время, можно почти одной кнопкой дебажить на удаленной машине, среда сама копирует проект на удаленной машине и запускает gdb.
Может кто подскажет есть такое для golang?
Goland? Ничего лучше IDE от Jetbrains человечество пока не изобрело.
Нисколько не умаляя достижений отцов основателей, но программировать в консоли как бегать на костылях.

Что значит программировать в консоли? Использовать консольный редактор? Писать шелл-скрипты вместо использования 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".

Ну положим насчет нормальных IDE я специально набросил. Хотя по моему глубокому убеждения существует всего одна нормальная IDE — Visual Studio (не Code!) и то только при условии, что используется C# и естественно ReSharper. JetBrains близко подходит, но хоть они и делают ReSharper, по удобству для Java она сильно далеко от VS+ReSharper+C#. Но это мое ИМХО — кому-то может и нравится.

Про «программировать в консоли» это именно про 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? Гарантирую, что больше одной.
На мой взгляд, нужно сравнивать не число строк, а время на написание.

Если у вас отличная память на «магические заклинания», или вам они нужны ежедневно ( и в результате — не вытесняются из «ОЗУ» чем-то новым), — текущее положение вас вполне устраивает.

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

Память отлично запоминает то, что используется на практике. В данном примере мне бы потребовалось только заглянуть в man stat для нужных значений, всё остальное в голове уже есть. Или, может, переписал бы весь пайп на find вообще...

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

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

А в чем проблема?


grep -ri `cat sosednij/dir/file_with_str` ...дальше всё то же самое

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


Зачем использовать программирование для

Ну так не используйте. У каждого инструмента своя область. Взять "полноценный" скриптовый язык (Perl, Python) в качестве шелла — и такой шелл станет очень неудобен "для запуска команд".

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

Но времена меняются, на смену консоли пришли графические, а затем и web интерфейсы. И вот там роль, подобную командному интерпретатору, должна была взять на себя компонентная технология типа COM. Вроде так и предполагалось — множество компонентов, реализующих простые задачи, возможность встраивать компоненты в документы, открывать excel из word и тому подобное. Но — в конечном итоге следует признать, что не получилось (хотя COM активно используется в недрах Windows, тот же DirectX, но из веба и UI ее все-же вытеснили).

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

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

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

Но это же не замена консоли. Это вы уже какие-то бизнес-решения описываете, а не автоматизацию. Конечно, можно и на баше писать, но не думаю, что это распространенно и нормально. Предложенное вами вполне живет и нынче называется модно "no code"

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

Наверное, это где-то возможно. Но как в таком формате представить какой-нибудь Photoshop или SolidWorks?

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

Параметрическое моделирование в текстовом файле Вы себе не представляете? А зря. Такое есть, и многие считают это весьма удобным. Добро пожаловать в OpenSCAD.
НЛО прилетело и опубликовало эту надпись здесь
Для Linux есть Creo Parametric и Siemens NX, обе мощнее Solid Works.
Я делал STL для 3d-печати в обеих. Прекрасно работают в Linux с помощью своих GUI.
Все верно. Просто люди «от винды» плохо представляю, как выглядит 3D моделирование в консоли. :-)

Вы будете смеяться, но в обоих случаях есть "консольные" конкуренты. GEGL и OpenScad. И если первому пока не хватает консольной рбвязуи, то второй себя отлично зарекомендовал в качестве простого и быстрого, программно определяемого инструмента автоматизации CAD. Разумеется со своими "консольными" плюсами и минусами.

Ваши идеи напомнили мне товарища который ОС «Сивелькерия» на хабре презентовал — habr.com/ru/post/500284
(там правда еще ничего не готово)

Дополнить Tcl/Tk стандартизированными форматами обмена в пайпах, ну.

Но времена меняются, на смену консоли пришли графические, а затем и web интерфейсы.

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

Я все время недоумеваю, когда люди пытаются сравнивать консоль с чем-то старым, а GUI с чем-то новым. То, что какое-то интерфейс появился позже, не означает что он замена старого. Популярность сейчас на стороне GUI, но это не значит что консоль не нужна. У нее своя специфическая ниша, и весьма немаленькая, которую GUI никак не заменит.
В Unreal Engine 4 есть, на выбор, две возможности создания игр:
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, а потом бум доткомов — подвинули его из популярности/известности, в пользу ущербного Веба.


Сложные пользовательские скрипты собирали и анализировали бы информацию с сотен сайтов и отображали бы ее в удобном для конкретного пользователя виде…

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

По двум причинам

По трём, и третья — безопасность. Подход «всё, что есть на компьютере, имеет право запускаться на выполнение с правами текущего пользователя» был здравым лишь до интернета.
Каждого в электронном письме попросили сделать скриншот текущего десктопа сразу, как только они прочитают эти слова.
И тут же скриншот с письмом, в котором не написано абсолютно ничего подобного. Не то чтобы это было важно, но яркий пример почему существует локальный термин «ализарщина».
Would you mind sending me a screenshot of your current desktop...

А что не так?

То есть вы бы это перевели как «сделайте скриншот вашего рабочего стола как только прочитали эти слова»? Не хотите устроиться в вдсину писать статьи?

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

А, получается это нормально если какая-то часть совпадает, а остальное — отсебятина?

Но ведь работать в консоли на самом деле неприятно (приятно ли вообще работать- это большой философский и субъективный вопрос)

Но ведь работать в консоли на самом деле неприятно

Ну незнаю. Например снять образ куска диска через dd в одну команду (и потом также в одну его развернуть) куда приятнее чем Windows-way вида «найди 1000 и 1 утилиту весом 100-1000мб и перебери подходящие и работающие с твоей FS».
Уверен, что так и есть — если знаешь, что это можно сделать с помощью dd. Если нет, то возможны варианты.
ну так man dd и вперёд.
А почему man dd, а не tt, не pp и не Not Yet Another Disk Imager? Вы ставите linux и windows-пользователей в заведомо неравные положения, у вас первый знает, что использовать, а второй еще только должен найти. Поэтому ничего удивительного в том, что у первого головной боли меньше.
Окей, сейчас загрузил Windows 7, чем мне там склонировать диск на диск. Ой, что-то по слову копирование/клонирование у меня вылезает только архивация, надо наверное спросить гугл «склонировать диск windows», блииин, сколько вылезло, ладно тыкаю в первую ссылку «8 лучших программ для......», там какие-то проги показывают, надо скачать и установить… Далее может вылезти «софт платный, в бесплатной версии не умеет клонировать», далее надо изучить мануал именно по тому, что я скачал. Или надо позвонить знакомому виндовому админу, он-то точно подскажет, чем оно лучше делается, вот только он использовал «Cool Great Soft For Disk Imager/Cloner 2.1 rev A», а с сайта сейчас качается 7.9 Pro, у которой уже совсем другой интерфейс, «алё, Петь, слуш, я скачал эту дуру, а там всё по другому, можешь свою версию кинуть?». Ладно, забываю про знания линухов и лезу в гугл «склонировать диск linux», снова первая ссылка, «Как клонировать ваш жесткий.....», снова там несколько софтин рассматривают, опять качать прийдется, хотя стоп, вот про первую сразу пишут, что она Linux Native и есть почти везде, хмм, проверю ка, ой, да, у меня она уже стоит, о, а вот там и пример дан, как клонировать. Да, для того, чтобы понять «а где кнопка F1 в линуксе» надо будет погуглить выражение «справка linux», но и и там у меня первой страницей вылезло описание того, как надо man набирать.
Еще один пример того, о чем я уже писал. Ваш персонаж долго и мучительно ищет софтину под win, а под linux его устраивает первая попавшаяся. Не может разобраться с интерфейсом в новой версии, но глазом не моргает, когда ему нужна консоль и man. Ему нужно клонировать диск, но при этом необходимость устанавливать программу его серьезно смущает.
Ds: заточенность рук под linux. Они нашли друг друга, и это отлично. Но справедливо далеко не для каждого.

Вы, наверное, не правильно восприняли написанное выше. Я только что набрал в гугле "клонировать диск линукс". Первая ссылка, открываем:


"В Linux есть четыре решения для клонирования дисков, которые вы должны рассмотреть:
dd
Partimage
Partclone
Clonezilla"


Я сразу нахожу. И пробую dd. И получаю результат. В отличие от…
Набрал "клонировать диск windows". И понеслось… На первой странице платные решения. Плюс, они отличаются клонированием системного диска и диска с данными и т.д. Вывод однозначен, ИМХО

Вы застряли на этапе выбора утилиты для windows, я застряну на этапе использования утилиты для linux. Кто из нас придет к финишу первым — вопрос темный и неизученный.
Вывод, наверное, действительно однозначен — каждому овощу свой фрукт. Тем более, что в вашем списке половина утилит, насколько я вижу, имеют свои интерфейсы.
Кхем, окей, в случае винды берём первую попавшуюся утиль из той выдачи, ой, она платная и не даёт мне склонировать системный диск. В случае линукса во-первых рассматриваемая софтина бесплатна, а во-вторых — она уже входит в базовую систему (блин, кастрированная версия dd вполне себе входит в busybox). А про виндовые установки софта и драйверов я уже давно писал, но напишу ещё раз: в линуксе за меня думает пакетный менеджер, он качает и ставит софт. В винде мне надо найти софт, потом (частенько если он бесплатный) надо умудриться скачать его с сайта производителя, потом надо очень правильно расставить галочки (чтобы не получить ещё софта с сомнительной функциональностью (и совершенно не нужного для работы выбранной программы) в подарок), ну а если производителя уже нет, то ситуация превращается в «а теперь скачай драйвер без шпионов». Всё это давно сделало мой выбор в пользу линукса, т.к. меньше надо думать.
НЛО прилетело и опубликовало эту надпись здесь
Появился магазин, в котором мало что есть, да. Да, там есть foobar, 7-zip и vpc, но это же не все, что нужно человеку.
Я понимаю, что это разработчики должны заботиться, но… там нет firefox и opera, там нет vscode и visual studio (а это ведь разработка MS), там нет steam, xnview, total commander, thunderbird, нет ни одной утилиты для работы с дисками с первой страницы гугла «windows copy partition». Но есть еще куча шлака и офисных игрушек. И Ubuntu в топе бесплатных, которую можно поставить и продолжить пользоваться dd :)
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
А в нём есть драйвера для сканера mustek (2001 год) и принтера hp (1993 год)? А в нём есть выбор версии софта, к примеру мне нужен автодесковский просмотрщик dwgшек именно версии x.y, а не последней?
НЛО прилетело и опубликовало эту надпись здесь
Узнать как работать с dd — это проглядеть наискосок три предложения из man, или вообще увидеть строку в примере и моментально догадаться как это работает.
Понять как работать с первой попавшейся гуевой утилитой — как повезет. Если утилита хорошая а действие простое — то тоже не очень много, а если нет — то можно навсегда остаться в выпадающих меню и кнопках которые ведут в другие окна, которые ведут в другие табы.

А потом всю оставшуюся жизнь удивляешься, почему у всех программ опции передаются в виде -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, но обычно это программы с которыми сталкиваешься постоянно, и эти исключения запоминаются.
В современном мире никто уже аргументы сам не парсит, для всех языков есть несколько либ делающих это за тебя, поэтому конвенция приблизительно придерживается. И как только начинаешь это все понимать, проблем больше не остается
Ага, а потом такие пишем clang с нуля с соблюдением всех best practices, и встаёт вопрос — делать многосимвольные параметры как привыкли пользователи gcc, с одним минусом, или как привыкли все остальные, с двумя? Ответ вы, скорее всего, знаете :)
Да, проблемы древних стандартов и обратной совместимости были, будут и никуда не денутся в ближайшее время. Но это, все-таки, исключительные случаи, и не отменяют того что в основном, в большинстве софта, не бардак совсем.
«Ну да, ну ужас… Но ведь не ужас-ужас-ужас!» (ц)
Распределенный опенсорс. То что хоть о чем-то договорились, уже чудо
У каждой программы и параметра есть ключ -h или --help, и man.

дада, shutdown -h самое оно.
Ну, на shutdown -h он таки покажет how to use, т.к. обязательный аргумент не указан.
Можете показать пример от рута?
какой-то у вас не gnu shutdown
нормальный shutdown пишет вот так:
# shutdown -h
Shutdown scheduled for Wed 2021-04-21 00:24:09 EEST, use 'shutdown -c' to cancel.
Не GNU; похож на BSD.
Узнать как работать с dd — это проглядеть наискосок три предложения из man, или вообще увидеть строку в примере и моментально догадаться как это работает.
…и радостно запороть исходный диск.
Допустим мне нужно поднять ssh туннель. В консоли это будет выглядеть очень просто:
ssh -D 1080 -N -f user@host

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

Если заниматься туннелями не каждый день, сначала нужно будет полистать man. А в putty окошко конфигурации — само по себе инструкция ;)

и там, и там гуглить приходится. В консольном ssh, потому что лень ман читать, а в графическом putty потому что «таааак… таааааааааак… Не, блин, всё равно непонятно».: )
работать в консоли на самом деле неприятно

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


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

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

— Инструменты командной строки Unix грубые и отсталые, — бросил он, — современные правильно спроектированные операционные системы делают всё через графический интерфейс!

Мастер Фу промолчал, но ткнул пальцем на луну. Собака неподалёку залаяла на руку Мастера.

— Я не понимаю вас! — сказал программист.

Мастер Фу, по-прежнему храня молчание, ткнул на изображение Будды. Затем на окно.

— Что вы пытаетесь сказать? — вопрошал программист.

Мастер Фу ткнул на голову программиста. Затем на камень.

— Почему вы не можете сказать ясно? — потребовал ответа программист.

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

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

В этот момент программист достиг просветления.

habr.com/ru/post/273023
man stat


«не понимаю, что вы хотите сказать, я в школе французский учила»

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


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

Так вот, цвета и геометрические фигуры — это не новый, современный способ мышления Homo Sapiens Sapiens языком, а откат, в лучшем случае, к идеографической письменности, а в худшем — к животным, в дописьменную эпоху. Конечно, в ряде случаев потребность в рептильном мозге еще сохраняется, скажем, когда нужна быстрая реакция в потенциально опасной обстановке, например, в дорожных знаках для водителей.
Вау! Тут даже комментировать нечего. Отключите себе подсветку в IDE, а то, там цвета. Ах, да, скобочки {} в си тоже не используйте, ведь это идеографическая письменность для рептилий, вот рецепт:
#define BEGIN_BLOCK {
#define END_BLOCK }
Отключите себе подсветку в IDE, а то, там цвета.
Станет немного менее удобно, но не критично.
Ах, да, скобочки {} в си тоже не используйте, ведь это идеографическая письменность для рептилий, вот рецепт:
Чем вам знаки препинания не нравятся? Хотя да, у вас с этим не идеально. Но это же не повод ненавидеть их.
И да, в некоторых человеческих языках есть знаки вроде ¡¿, чем языки программирования со всякими стрелками, скобками, хуже? Разве что тем, что предельно стандартизован.
А я вот согласен с автором. Добавлю от себя три важных момента:
  1. консольные интерфейсы можно разрабатывать не привлекая, ни UX-дизайнера, ни фронтенд разработчика
  2. оконные интерфейсы жрут ресурсы, как не в себя. Особенно, с этими их модными электронами и джаваскриптами
  3. консольные интерфейсы, в основном, унифицированы: любая программа ответит именно то, что вы ожидаете, если вызвать 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]

Вообще толку от такого выхлопа примерно ноль.
Напротив, он полностью выполняет свою задачу: быстро напомнить флаги. Это не man, это именно подсказка.
Консольный интерфейс хорошо подходит для управления системой, но очень плохо подходит для отображения графиков.
Для графиков плохо подходит псевдографический терминал. Но графики могут выводиться или в отдельных окнах, или быть встроенными прямо в терминал с поддержкой этого.
И это удобнее, потому что перед глазами всегда находится команда, где написано, что ты сделал, чтобы такой график получить.
ИМХО, для работы с графикой удобен смешанный подход, как это когда-то придумали в Автокаде: можно накликать мышкой, а можно ввести с клавиатуры. Всё-таки, такие действия как выбор объекта удобнее делать мышкой, а задать параметры операции, которую хотим сделать — с клавиатуры (например, задать точную длину какого-то отрезка)
А еще консоль сложнее освоить. Если ты, к примеру, финансовый аналитик, или врач-терапевт, то как-то проще работать с графическим интерфейсом, а не заучивать 100500 команд, в дополнение к основному багажу знаний.

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

Освоить консоль таки сложнее. Зато она эффективнее при постоянном использовании.
То есть если надо что-то простое сделать раз в год, проще потыкаться в менюшки. А если это делать надо постоянно, стоит освоить хоткеи или консоль.
Отличные примеры — AutoCAD, где можно натыкать мышкой, но он сразу подсказывает в какую консольную команду оно разворачивается. Таким образом изучение команд происходит само собой.
То же в редакторе формул в Офисе. Любое действие в GUI отображается в консольном редакторе и точно так же команды учатся сами собой.
И то же в разных чатиках и форумах, где можно вставлять всякие выделения или смайлики мышкой, но они тут же отображаются в поле ввода.
— И этого здорово не хватает в чистых WYSIWYG редакторах: одни машинные духи ведают где именно косяк с форматированием может возникнуть незаметно для пользователя.
На помощь я обычно перебираю минимум 4 варианта: -h, -?, --help, help
Консолью пользую редко, но когда нужна справка, у меня с ДОСовских времен выскакивает на автомате /? но, почему-то не всегда работает)

rm /? неожиданно получится, если в корне что-то однобуквенное есть, так что -? — благо почти (?) все консольные утилиты Windows его принимают

почти (?) все консольные утилиты Windows его принимают

Какие это? Попробовал del, type, dir — ни одна не приняла.
консольные интерфейсы можно разрабатывать не привлекая, ни UX-дизайнера, ни фронтенд разработчика

Можно. Только такая фигня получается…
консольные интерфейсы, в основном, унифицированы: любая программа ответит именно то, что вы ожидаете, если вызвать cmd --help

Ну так и любая графическая программа «ответит именно то, что вы ожидаете, если нажать F1». Вот только на практике самое частое действие в большинстве программ — это дискетка «сохранить» / «сохранить как». И если в графике это абсолютно везде одинаковые пункты меню и одинаковые шорткаты клавиатуры, то для утилит командной строки — особенно с нетекстовыми выходными данными, который не проходят через stdout — вам почти наверняка придётся курить тот самый хелп.
В большинстве случаев для сохранения поможет добавление "> file" в конце строки. Если данные нетекстовые то все конечно сложнее, но консоль для работы с графическими данными и не предназначена.
консольные интерфейсы можно разрабатывать не привлекая, ни UX-дизайнера

Я вас сейчас сильно удивлю, но даже для консольного интерфейса нужен UX дизайнер. Потому, что работа в консоли — это тоже пользовательский опыт, который можно сделать совершенно отвратительным и нелогичным, если этим будет заниматься человек, не имеющий понятия, как строить логику интерфейса.
Это очень интересное академическое рассуждение разбивается, как «Челленджер» о небесную твердь, о тот простой факт, что профессия «UX дезайнер консольных интерфейсов» не известна не только классификатору профессий, но и Гуглу. Кроме того, все известные и широко используемые приложения были разработаны без привлечения такого специалиста. Дело в том, что интерфейс консольных приложений обычно отображает логику их работы, в связи с чем строить особо и нечего: выдаёшь пользователю параметры внутренних операций и вперёд.

"строить особо и нечего: выдаёшь пользователю параметры внутренних операций и вперёд."


Привязываешь внутренние операции к кнопкам и менюшкам и вперёд.

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

А с консолью выйдет? То-то сверху люди жалуются на одну не безызвестную консольную утилиту для обработки видео, которую невозможно без гугления использовать.
вы не обратили внимание на комментарий на который я отвечал: коллега предположил, что можно разработать графический интерфейс путём «простого привязывания внутренних операции к кнопкам и менюшкам.» Я же возразил ему, что это не сработает даже для простых приложений. Не говоря уж об, например, обработке видео. Так-то, любой мощный видео-редактор без пол-литры не разберёшь.
Вот вам и намекают, что для ffmpeg (консольного приложения) это тоже не очень работает.
свяжите bash и powershell, и расскажите как вы это без UX дезайнера сделали.
профессия «UX дезайнер консольных интерфейсов» не известна не только классификатору профессий, но и Гуглу

А профессия «программист консолей» известна?)
Очень странная статья. Такая… американская…
А все просто:
1. Люди думали.
2. VT52 еще не были распространены, а VT100 вообще, не было. Были АЦПУ. А попробуйте редактировать текст на «умной» пишмашинке. Это вам не WISIWIG.
3. Объем памяти задачи был мал, поэтому механизм конвейеров из маааленьких задач был очень разумен.
4. Система была ориентирована на обработку текстов, потому что текст легко читать и отлаживать. Хексовые редакторы появились позднее. А графики просто не было.
Интересно, где все эти люди которые жалуются что разработчик их любимой программы с GUI опять переместил менюшки ради перемещения менюшек. Здесь в комментах жалуются что «знание sed ничуть не поможет в работе с ffmpeg», а как насчёт того что знание Adobe Audition 1.5 мало чем помогает в работе с Adobe Audition 5? Консольную программу можно досконально выучить в 20 лет, пока молодой, а потом вернуться в 50 и увидеть что старые опции в худшем случае задепрекэйчены, но точно никогда не будут работать иначе, а с GUIёвыми программами это так не работает.

И да, зря в комментариях ругают 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 это разные ниши.

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

Использую консоль очень много и каждый день. Даже работу с файлами для около-программерских или около-системных задач я делаю через обычные cd/ls/cp/mv. И лично мне это даже быстрее, особенно, в с автокомплитом и историей (а в zsh можно писать cd prog/my<tab>и получить cd programming/myproject).


Гуевый проводник использую только для мультимедийных задач.

А ещё в zsh можно не писать «cd» :-).
GUI часто бывает неоднозначен, запутан. В то время как консольная команда чаще будет иметь однозначное поведение.

Вот надо вам сделать в 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 наверняка есть кнопка «поискать кнопку, чтобы выполнить команду» по тексту этой команды. Только эту «кнопку поиска» надо тоже поискать. Например, сортировка строк.
то, что делаешь по 100 раз в день (найти файл по первым буквам, компилить, билдить, jump to definition и т.п) — желательно знать команды. Так же как и художникам, которые вообще не программисты — они обычно владеют командами Photoshop/AfterEffects, Sketch или там 3dmax.

Но для действий, которые делаешь раз в жизни проекта, или раз в месяц хотя бы — я не хочу рыться в мануалах и в интернете в поисках команд, хочу нормальный UI.
Какие-то вещи связанные с групповыми политиками и подобным в Windows делаешь тоже «раз в жизни проекта», но самостоятельно найти их среди всех этих оснасток довольно затруднительно. Когда это можно сделать через PowerShell, то задача сразу упрощается, т.к. достаточно просто нагуглить одну команду, а не инструкцию на 10 страниц.
Согласен, но мы все же про разные вещи говорим. Какой-нибудь конфиг проекта я тоже раз в жизни проекта создаю, и не нужен на него UI, особенно глючный (вспомню Eclipse конца 00-х годов — вздрогну).

В вашем примере есть еще один очень важный плюс консоли — не знаю про групповые политики 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:


  1. Можно автоматизировать действия, делать алиасы/батники/скрипты/etc
  2. Если непонятно, как что-то сделать, ищем в интернете. Далее, если у тебя GUI, то приходится смотреть картинки (иногда просто описания), находить кнопки, пункты меню, прожимать их, короче, иногда хлопотно. Если консоль, то обычный копи-паст, и всё.
НЛО прилетело и опубликовало эту надпись здесь

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

НЛО прилетело и опубликовало эту надпись здесь
Вы знаете, что имена фалов в NTFS не являются юникодными строками?


Можно подробнее?

В них могут быть непарные суррогаты.
Затейливо. Боюсь даже представить, зачем это сделано.
Не зачем, а почему: когда в версии Unicode 2.0 появились суррогаты, NTFS уже три года как существовала. Объявлять невалидными уже существующие файлы было бы странно.

Для экранирования вводимых символов используется escape-символ \:


cut -d, -f2       # разбить текст запятыми на колонки и взять только вторую колонку
cut -d\  -f2    # то же самое, только вместо запятой используется пробел

А для обработки входных/выходных данных в скриптах все основные утилиты поддерживают 0-терминируемые строки. Это опции -print0 в find, -0 в ls и xargs, и т.п. В такую строку можно запихать вообще любой текст.


В общем, проблема есть, но её уровень — не "совершенная неработоспособность", а всего лишь "досадное эпизодическое неудобство".

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


Все выше относится к башу и подобным ему

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

не знаю кому не нужно, хочешь-не хочешь, а приходится все время работать с консолью, если только вы не совсем hello world-писальщик. Иногда через слезы, но приходится. Хотя бы SSH настроить для гита — ни одна известная мне GUI-утилита не может этого нормально сделать без консоли

"Хотя бы SSH настроить для гита"


Tortoise HG вполне позволяет использовать hg over ssh совсем без консоли. У git свой собственный ssh?

обычный, не знаю про tortoise git, работал еще лет 12-14 назад с tortoise svn, хорошая была утилита. А вот под мак ничего не работает нормально — ни SourceTree, ни SmartGit — и все равно приходится настраивать все через консоль.

Да про что я говорю, до недавнего времени скрыть/показать скрытые файлы в Finder можно было только через консоль, попутно Apple Script-ом прибив и перезапустив все инстансы файндера (что прямо невозможно сделать вручную, по крайней мере было)
Как? Нет, я действительно не понимаю, зазубривание man-ов утилит, и невероятные кульбиты в консоли скопированные с форумов делают из кодера настоящего инженера?

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

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

Всё вышеописанное — это как раз про обезьяну без фундаментальных знаний, а не инженера.
Инженер как раз не зубрит ничего — он знает, где найти. И маны — т.е. справочники — ориентированы именно на это. Нет, инженер не копипастит с форумов, кроме разве что редких нетривиальных случаев, и даже тогда разберется, что это такое написано, вместо тупого копипаста. Поэтому и консоль для инженера — вещь естественная, поскольку понимание системы наличествует.
Какие красивые слова, какое великое ЧСВ от опознавания себя не обезьяной, а ИНЖЕНЕРОМ.
Тем не менее, когда человек хочет перекодировать видео в ffmpeg, вне зависимости от того, ИНЖЕНЕР он или ОБЕЗЬЯНА, он лезет в маны/форумы копирует/переписывает оттуда команду и меняет параметры под себя. При этом мифического ПОНИМАНИЯ СИСТЕМЫ не происходит, сорцы ffmpeg вне зависимости от использования консоли, или графической оболочки для ffmpeg он не смотрит.
Добавлю своих пять копеек.
У меня около двух сот микротиков, и мне нужно присматривать за телекомщиками, что-бы они чего плохого не натворили, без автоматизации просто ни как. Кто говорит, что лучше нажимать кучу кнопок, просто не работал с большим количеством, просто нажать двести раз мышью, это уже не просто.
bash shell наше всё…
Each to his own. Некоторые эту статью из emacs читают под exwm, некоторые из эксплорера поверх всех окон. Главное счастливы они или нет. Идеально, когда есть оба метода.

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

и чтобы интерфейс между GUI и консолью где-нибудь отображался, чтобы если в GUI есть пробелы — ты мог легко скопировать консольный код и поправить где нужно (а-ля source tree)
имхо, основной недостаток (непопулярных) утилит — отсутствие нормального хэлпа с примерами. Люди не ленятся делать сложные утилиты, но описание на гит-страничке в лучшем случае будет содержать brew install и, опять же в лучшем случае, ссылку на документацию в 1000-й команд.

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

Я, когда пишу компоненты, которые предполагают переиспользование — зачастую больше времени трачу на демки, документацию и т.п., чем на сам компонент. Зато люди могут за 5 минут прикрутить его к своему коду, а не мучаться часами.

У меня с годами сложилось чувство, что серьезные юниксоиды и т.п. получают удовольствие от того, что кроме них самих их продуктами мало кто может пользоваться.
Почему работать в консоли настолько приятно? Так задумано отцами-основателями Unix

Консоль разве впервые в UNIX появилась?
НЛО прилетело и опубликовало эту надпись здесь
Ещё можно сделать предпросмотр результата выделенной части кода, как в табличных редакторах или в гугловском отладчике.
современная консоль должна иметь подсказки к командам

bash-completion например.
Одних подсказок маловато. Надо ещё чтобы все консольные утилиты разговаривали на одном языке: одинаковый способ указания параметров и значений, одинаковая конвенция сокращений названий (желательно достаточно строгая и предельно простая, вплоть до полного отказа) и т.п.

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

Поздравляю, вы придумали PowerShell

Поскольку эта возможность была упущена много десятилетий назад

В *nix — да, но на нём свет клином не сошёлся.
PowerShell сам себе утилита. Конечно, у него с самим собой все хорошо с совместимостью.
НЛО прилетело и опубликовало эту надпись здесь
Простите пожалуйста, я мало знаком с PowerShell и Windows, но много там сторонних утилит, которые поддерживают этот формат общения объектами? То, что системные его поддерживают — я не сомневаюсь, MS последнее время действительно сделала много хорошего со своей системой.
НЛО прилетело и опубликовало эту надпись здесь
В таком случае философия это интересная, но слабоприменимая за пределами системных операций с самой ОС и рамок стандартной библиотеки самого powershell (она же там есть?). Очевидно не взлетело в масштабе. А жаль, в целом.
Но в приницпе я почти не сомневаюсь, что такое не взлетело бы. С объектами работать проще, стандартизировать подобный вывод крайне сложно, полноценные библиотеки под работу с этим под все даже популярные языки писать удовольствие ниже среднего.
www.powershellgallery.com
8,525 Unique Packages
Среди топовых — 3 от MS, 2 от Google, и 1 от стороннего разработчика.
Юникс вей форева! Подсказки нахер, дебилы пусть идут за ними.
Я смотрю тут много людей никогда не работавших с более чем одной машиной/сервером одновременно.
С удовольствием посмотрю на то как любители графических интерфейсов поменяют один параметр в настройках сервиса на, скажем, 200-1000 однотипных серверов в ДЦ или раскиданных по всему миру, сколько у них уйдёт времени на давление кнопок на экране и сколько они сделают при этом ошибок.
Многократно менял настройки десятков и сотен географически распределенных серверов используя GUI, времени занимало пару минут максимум, интересно сколько в cli займет времени набить перечень 200-1000 fqdn/ip серверов если они не попадают в регулярку(сарказм), ну или собрать из общего списка нужную группу например по месту размещения, версии компонента итп. При этом видел перед глазами результат выполнения задачи — вот прямо сейчас. Если вы не видели нормальных SCM с GUI это не значит что их нет в природе.
Многократно менял настройки десятков и сотен географически распределенных серверов используя GUI, времени занимало пару минут максимум,

Верно, но это когда в ГУИ есть возможность поменять всё что вам необходимо. А вот как только там такой возможности нет вы превращаетесь в новорожденных котят в ведре с водой. Жалобно мяукаете, растеряно смотрите по сторонам и пускаете пузыри :)

интересно сколько в cli займет времени набить перечень 200-1000 fqdn/ip серверов если они

Те же «пару минут максимум»

При этом видел перед глазами результат выполнения задачи — вот прямо сейчас.

Вы так это расписываете как будто это чудо. :)

Если вы не видели нормальных SCM с GUI это не значит что их нет в природе.

Я такого не утверждал. Не надо искажать моих слов. Вот если вы не умеете использовать командную строку, то это не значит что она плоха. Плох тут кое кто другой, не будем показывать пальцем :)
Если мне не изменяет память, в Active Directory есть возможность применять настройки к группе компьютеров (т.е. пример «окошечного» управления серверами существует). Значит, при желании, можно найти/написать комплекс программ управления серверами и компьютерами с GUI. (у вас таких программ, скорее всего нет — и вы хвастаетесь, что можете админить кучу серверов «обычным набором автомобильных инструментов» вместо специализированных под ваши задачи))

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

Да, о командной строке UNIX/360, я читал ещё 25 лет назад, но большинство моих задач было удобнее решать «кнопочками» в окошках, а не в командной строке — так нет необходимости засирать голову кучей текстовой информации о параметрах утилит — голова и так была занята программированием + предметной областью.

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

Уважаемый, Вы статью читали? Ну или хотя бы название? Тут про Юникс.

у вас таких программ, скорее всего нет

Огромных, неповоротливых монстров типа Active Directory действительно нет, потому что они не нужны. Они дороги и слишком ограничены.

вместо специализированных под ваши задачи

У системного администратора(а не эникея) нет ограниченного круга задач. И невозможно написать ГУИ тулзовину которая их все покроет. Все те монстры а-ля «Active Directory» и иже с ними заточены на очень ограниченный круг задач, шаг вправо, шаг влево и вы упираетесь в стену. Даже если кто-то и возьмётся написать такого монстра, то он устареет быстрее чем выйдет в релиз, потому что софт меняется постоянно.

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

«Для вас, вероятно, будет откровением, что...» в этой статье обсуждают Юникс и командную строку, а не нужды бабы Веры, домохозяйки со стажем с тремя внуками. Для бабы Веры есть Виндовс с мышкой. :)

голова и так была занята программированием

Так и программируйте себе на здоровье в ГУИ. Вас никто не заставляет делать это в командной строке или vi. CLI в первую очередь для сисадминов.

но большинство моих задач было удобнее решать «кнопочками» в окошках

Так вы и есть продвинутая версия бабы Веры. Перед вами никто и не ставит сложных задач. Вам никто Юникс с командной строкой не навязывает. Расслабьтесь. :)

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

«При этом соглашусь, что некоторые задачи удобно решать...» через ГУИ. «Некоторые. Далеко не все. Даже не половину.»(с)

Подытожу: Каждому нужен свой инструмент. Кому-то нужен CLI, кому-то SCM, а кому-то Виндовса с мышкой за глаза. Есть правда и такие, которые и этого не осилят, но тут их нет по понятным причинам.

" CLI в первую очередь для сисадминов."


Сисадмины — это обслуживающий персонал. А зарплату ему зарабатывают другие, которые с GUI и мышкой.: ь

радостно бухи?!
ну точно! По всем признакам они! И с мышкой, и с GUI, и сисадмины — это обслуживающий персонал!
Не, он не бух, он видать маркетолух, Илитой себя считает :)
image

:D
олдис, бат голдис, да.
Занятная картинка. В этом что-то есть :)
Не дай боже работать в такой конторе.

Это, простите, кто же зарабатывает-то? Если это IT-контора — то программисты, т.е. люди, которые еще более про консоль.

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 в процессе примерно так
image


Ваш минимальный вариант делается примерно в 3 клика и несколько нажатий кнопок на кливиатуре. Выделить. Вбить шаблон нового имени(вот как раз как на картинке). Запустить.

А ещё можно XnView использовать, раз уж речь про изображения.
Заголовок спойлера
image

Собственно, программ для пакетного переименования много, есть и специализированные, с кучей опций. Но для относительно простого, достаточно и XnView.
НЛО прилетело и опубликовало эту надпись здесь
image

лучше (имхо) использовать что-то вроде exiv2 mv *.jpg, чтобы имена получили какую-нибудь семантику

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

Я человек простой — вижу холивар GUI vs CLI — участвую использую и CLI, и GUI и как-то не парюсь по этому поводу.

Надо запилить скрипт для автоматизации чего-то? У меня есть bash. Почему не python? Потому что быстрее написать на том, чем постоянно пользуешься (при этом не отрицаю того факта, что периодически встречаются задачи, когда Python использовать проще и быстрее).

Надо поработать с git, нормально освоить который мне всё время некогда лень? Вон мой верный SmartGit (GitKraken нравился мне ещё больше, но в определённй момент пришлось от него отказаться).

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

В общем, я искренне не понимаю ни тех, кто говорит «фууу! Консоль! Как этим можно пользоваться вообще?!»,
ни тех, кто говорит «фууу! GUI! Как этим можно пользоваться вообще?!».
Как пользоваться? С удобством!

P.S. выше в комментариях попалась хорошая фраза «Просто давно пересел на обычную венду и не трачу времени на то что не приносит денег». Очень хорошо его понимаю. Я в своё время, как только мне перестали платить за использование винды с огромным облегчением ушёл на линукс, просто потому что мне в нём удобнее. Ключевое слово — мне. Возможно вам удобнее в винде. Или на маке. Или вообще в OpenBSD. Выбор среды — он же от задач и предпочтений каждого зависит. Выбирайте, что вам удобнее.

P.P.S. но всё равно, что бы там ни говорили, а Убунту — лучше! :P
сижу под виндой, все скрипты на bash
с уважением А мсье знает толк…
НЛО прилетело и опубликовало эту надпись здесь
Для git всегда консоль, вот что ни говори, а хороших гуи не встречал, нужно искать в менюшках команду, когда в консоли и подсказки есть и даже подскажут, что сделать в этой ситуации, а гуи просто набор кнопок над мощной программой, а команд в реальности меньше, чем кнопок в любом гуи на все случаи жизни.
И вообще консоль полюбил именно за то, что облегчает обработку повторяющихся данных, поиск нужных строк в логах и преобразования. Да, для человека, который привык жать кнопки непривычно думать в другом контексте. Как раз то, что нужно шевелить мозгами и весь процесс под твоим контролем дает больше шансов на успех.
Я за то, чтобы был выбор!
И всеми руками за качественные интерфейсы — и графические и консольные

Сегодня скачал исходники U-BOOT, думал их хорошенько изучить. В итоге ковырял текстовым редактором. В IDE есть очень удобная функция — перейти к определению: встречаешь вызов функции и хочешь посмотреть тело этой функции — переход осуществляется мгновенно.
В итоге возник вопрос: а как писали и пишут многие подобные U-BOOT программы? Неужели в текстовом редакторе? Вывод такой сделал по отсутствию файла проекта от популярных IDE… Или в тот же эклипс загружается makefile и начинается работа?

Файлам IDE в репозитории делать точно нечего — у каждого свои вкусы и навязывать свою IDE неправильно, а многие IDE очень любят огромные diff'ы с какими-то непонятными XML данными.
Хорошо, когда есть CMakeLists.txt, потому что cmake может сгенерить проект под все популярные IDE, а сами файлы простые и человекочитаемые, изменения хорошо видны в диффах.
Если проект старый, cmake или аналога там скорее всего не будет, поэтому да, можно либо взять IDE с поддержкой makefile'ов, либо создать проект самому (для редактирования кода с нужными плюшками достаточно прописать правильные include paths), либо взять редактор, который может сканить код на лету.
А если, например, нужно пропатчить что-то мелкое, то берешь блокнотик, патчишь, собираешь make'ом, без всех этих проектов. У меня 90% контактов с опенсорсом этим и ограничивается — скачал, билдишь, что-то сломалось при билде, нагуглил на stackoverflow ошибку, пофиксил в блокнотике, билдишь дальше. Смысла возиться с IDE ноль.

Почему бы и нет? Некоторые олдфаги даже в vi без подсветки синтаксиса пишут, не vim!

P. S. К сожалению, Линус Торвальдс не смог сделать скриншот из своей консоли в текстовом режиме.

Этим всё сказано
В переводе потерялось «не захотел».
Философия CLI и ОС Unux в целом оказались жизнеспособны.
Мне кажется, что этому способстовала относительтная простота и универсальность концепции. К сожалению, системы с GUI не получили столь же стройной и универсальной концепции. Универсального эталона так и не сложилось. Хотя такие попытки предпринимались(мне припоминается IBM CUA, Gnome HIG и Google Material Design). Интересно, что для программ c CLI обычно можно получить внятный рецепт по их использованию. С этим сложно спорить.
новое поколение современных разработчиков не забудет, что мы стоим на плечах гигантов.

прикольно, отсылка к цитате Ньютона))