Обычно я бы сказал sh
.... но так как вы указали Linux, я скажу bash
- он гарантированно будет в каждой системе Linux (ну, исключая неясные педантично крошечные, которые фетишизируют минимализм :).
Если вам не нужно заботиться о переносимости не из Linux (и если вам не нужно работать на крошечных дистрибутивах или во встроенных устройствах Linux, таких как маршрутизаторы с пластиковыми коробками), то вы также можете использовать значительные улучшения, которые это предлагает по равнине sh
. В противном случае используйте sh
.
После того, как bash
(и sh
), следующий самый «универсальный» язык сценариев для Linux будет некоторый диалект awk
- обычно или mawk
или gawk
. Если вы придерживаетесь простого awk и избегаете gawkism, ваш скрипт должен нормально работать практически на любой системе Linux (он может отсутствовать на крошечных дистрибутивах или встроенных устройствах). Большинство систем Linux будут иметь и то, mawk
и другое gawk
, но в некоторых дистрибутивах (например, Debian) mawk
установлено по умолчанию, и вы должны установить gawk
себя, если хотите.
Дальше будет perl
. AFAIK, базовый язык Perl установлен по умолчанию на всех распространенных дистрибутивах Linux, что делает его хорошим выбором. Еще более к счастью, существует очень небольшая несовместимость версий с выпусками perl5 (хотя perl 5.12 или, возможно, 5.14, наконец-то нашли способ удалить некоторые неясные функции, которые устарели в течение примерно 15 лет ... достаточное предупреждение, чтобы не использовать их), так что если ваш стиль кодирования не является действительно странным, и вы не хотите игнорировать более чем десятилетние предупреждения «не делайте этого», ваши Perl-скрипты будут работать нормально где угодно. Язык является надежным и мощным , и может делать все , что awk
и sed
может сделать , и многое другое. С небольшим усилием это может сделать вещи, которыеsh
традиционно хорошо подходит для этого (например, запуск внешних команд и использование / передача вывода). Стандартные библиотеки Perl также довольно обширны и охватывают не только основы.
Единственный недостаток perl заключается в том, что существует также огромная библиотека модулей CPAN, позволяющая делать практически все, о чем вы только можете подумать (и многое другое, что может вам никогда не понадобиться) - и не все из них будут доступны в каждой системе с perl. , Они, как правило, очень высокого качества, поэтому легко привыкнуть к их использованию, но если вы их используете, вам нужно убедиться, что они установлены. Многие модули CPAN предварительно упакованы для Linux, а остальные легко устанавливаются с помощью инструмента cpan (или dh-make-perl
в debian / ubuntu / etc, чтобы превратить модуль CPAN в пакет .deb).
Я хотел бы сказать python
следующее, но я действительно не могу. В Python есть что-то, что может понравиться, но он не включен по умолчанию во многих системах Linux, и, честно говоря, его совместимость с версиями (как для самого Python, так и для его якобы «стандартных» библиотек) является полной ошибкой. Некоторые дистрибутивы прилагают отличные усилия, чтобы разобраться в беспорядке, а некоторые нет. Также не помогает тот факт, что python в основном является языком, написанным для программистов программистами (в отличие от sysadmins), и они, кажется, не думают, что система, в которой будет установлен их код, вообще важна… их код действительно супер особенный, поэтому им не нужно заниматься скучными вещами, такими как интеграция в существующие системы.
(Не поймите неправильно из моего сарказма здесь - мне действительно нравится Python как язык, я просто ненавижу тот факт, что управление версиями и зависимостями - это PITA. Это похоже на 20 с лишним лет назад, до эпохи ручного поиска неизвестного. кусочки кода и патчи, чтобы что-то скомпилировать и запустить на проприетарном * nix)
sh
.