Як правило, я б сказав sh
.... але, оскільки ви вказали Linux, я скажу bash
- це гарантовано є у всіх системах Linux навколо (ну, виключаючи незрозумілі педантично-крихітні, які фетишизують мінімалізм :).
Якщо вам не потрібно піклуватися про нелінуксну портативність (і якщо вам не потрібно працювати на крихітних дистрибутивах або на вбудованих пристроях Linux, таких як маршрутизатори з пластикової коробки), ви можете також скористатися значними вдосконаленнями, які він пропонує над рівниною sh
. В іншому випадку використовуйте sh
.
Після bash
(і sh
) наступною найбільш "універсальною" мовою сценаріїв для Linux буде якийсь діалект awk
- зазвичай mawk
або gawk
. Якщо ви дотримуєтесь простого awk і уникаєте гаукізмів, ваш сценарій повинен спрацьовувати майже на будь-якій системі 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 / тощо, щоб перетворити модуль CPAN в пакет .deb)
Я б хотів сказати python
далі, але я справді не можу. Про python дуже багато подобається, але він не включений за замовчуванням у багатьох системах Linux, і, чесно кажучи, його сумісність з версіями (як для самого python, так і його нібито «стандартних» ліб) - це суцільна проблема. Деякі дистрибуції докладають великих зусиль, щоб розібратися в безладі, а деякі ні. Не допомагає і той факт, що python - це в основному мова, написана для програмістів програмістами (на відміну від sysadmins), і вони, здається, не думають, що система, на яку буде встановлений код, взагалі важлива .... їх код насправді супер особливий, тому їм не потрібно займатися нудними речами, такими як інтеграція в існуючі системи.
(Не розумію тут мого сарказму - я дуже люблю python як мову, я просто ненавиджу факт, що управління версіями та залежностями є ПДТА. Це як би повернутися 20+ років до епохи ручного полювання на незрозуміле. біти коду та патчі, щоб отримати щось складене та запущене у вашому фірмовому * nix)
sh
.