что считаются старыми и мощными командами?

Я натолкнулся на термины awk и sed, awk проходит один раз через все строки и выполняет задачу всякий раз, когда строка удовлетворяет определенному условию, sed может манипулировать потоком ввода, прежде чем он перейдет к выходу. Я лично не знаю, с какой целью их использовать, но я заметил, что они называются мощными даже святыми командами. Помимо этих двух, какие команды / приложения имеют такой статус?

Чтобы определить «мощные» команды, сначала нужно решить, что это значит.

Первое требование – универсальность. Некоторые инструменты очень посвящены одной вещи, но могут решить очень широкий круг проблем. gnuplot – очень простой инструмент построения графиков, который настолько хорош, что даже в научных кругах вам вряд ли нужно что-то еще. И один инструмент, который может обрабатывать регулярные выражения, может использоваться практически для чего угодно, и именно поэтому sed очень мощный. Вы можете делать конвертацию между форматами, извлечение данных, разбор, поиск, замену и почти все, что вы можете себе представить. awk аналогичен, но также очень сильно отличается: он больше предназначен для структурированных данных, анализируется по строкам в соответствии с шаблонами и ближе к более традиционным языкам программирования (имеет больший поток управления и т. д.). После того как вы освоите эти инструменты, вы сможете решить любую проблему с ними: оба они завершены и могут в принципе решить любую проблему, даже если она не связана с строковой обработкой – универсальность – это самый высокий уровень мощности: вы можете делать что угодно. Но вы должны «хотеть» попробовать и поиграть с ним. Отсюда следует следующее требование.

Второй компонент – это наследие и традиция: команды, которые существовали в течение 40 лет и имеют огромную кодовую базу позади них, также являются наиболее стабильными (длинные разработки), надежными (они не могут перестать их развивать или изменять функциональность, поскольку 40 лет скрипты сломаются), и есть огромное количество гуру, которые могут делать магию. Это означает, что инструмент, который широко известен и первый выбор для использования многими людьми, не обязательно тот, который был лучшим вначале, но тот, который «застрял». Однако, если многие люди используют его, это, вероятно, неплохо, хотя некоторые вещи можно было бы сделать лучше. Возраст здесь важен: python чрезвычайно мощный как язык, но еще не достиг статуса старых наборов инструментов gnu – он все еще дает немного ощущение новизны. bash – золотой стандарт не только потому, что он интуитивно понятен, но и потому, что он поставляется как оболочка по умолчанию почти везде, и все его используют.

Культовый статус здесь очень важен: люди гордятся тем, что являются частью какой-то субкультуры. Я могу сказать вам из первых рук, что мне было очень здорово, когда я освоил emacs и latex , а также сразу принял ненависть к vi : отчасти потому, что это действительно не интуитивный интерфейс для меня лично, но, конечно, это усиливается, когда вы узнаете, что другие люди так себя чувствуют. То, что я пытаюсь сказать, что мощный инструмент также является социально значимым: менее известный или плохо разработанный инструмент не может вызвать такие сильные эмоции у людей (ни отрицательные, ни позитивные – они просто мягкие). Некоторые из инструментов, о которых я упоминал, имеют последователей, которые можно сравнить с trekkies – не плохое достижение для части программного обеспечения. awk можно считать предшественником perl , и perl определенно имеет сторонников: большинство людей согласны с тем, что perl имеет ужасную разборчивость и много неуклюжих причуд. Это также самый мощный язык, ориентированный на струну, но без культового статуса, большинство людей может отказаться от него раньше, вместо того, чтобы играть и пытаться спасти мир и приготовить обед с помощью того же инструмента, который должен был прожевать кучу веб-страниц.

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

Короче: хорошо разработанный для четко определенной цели, универсальный, большой наследственный и следующий, и … «душа». Это было бы моим определением.

Один из способов классифицировать некоторые «старые» команды – хотя и не для «более мощных» – заключается в том, что они являются встроенными командами, означающими команду или функцию, вызываемую из оболочки, которая выполняется непосредственно в самой оболочке вместо внешнего исполняемую программу, которую оболочка будет загружать и выполнять.
Примеры включают logout, cd, echo и history.

Вы можете видеть, является ли команда встроенной

 builtin [command] 

например

 builtin echo 

Выход NO означает, что он встроен (использует философию unix для ничего, чтобы нормально)

Если команда не является встроенной, например, ls, тогда

 builtin ls 

возвращает ошибку -bash builtin: cp: not a shell builtin

Что касается «самых мощных» команд, таких как sed и awk , я бы фактически удалил это из вопроса, поскольку он кажется очень субъективным и вряд ли приведет к окончательному аргументу.