bash предназначен для некоторых очень специфических задач.
Я понимаю так, что по сути для одной большой задачи - администрирования той юникс подобной операционной системы, на которую его портировали (т.е. в 95% случаев линукс).
Я бы не сказал, что язык командной строки линукс как-то радикально отличается от "классического" (который не powershell) языка командной строки виндовс.
Мне это мало о чем говорит, я даже powershell не использовал никогда.
Просто в виндовс не положили все эти grep-ы, sed-ы, cat-ы и проч.
Вот, кстати, хорошо что речь зашла про эти утилиты. Я первоначально на что надеялся: что мне дадут какой-нибудь DSL, ну и я буду тихонько писать на нем то, что мне надо. То есть надо, мне, допустим, взять первые 5 элементов из списка [e1, e2, e3, e4, e5, e6, e7], я и напишу что-то типа take 5 [e1, e2, e3, e4, e5, e6, e7]. Другими словами, я думал, что в моем распоряжении будет много легоньких функций типа take, которые я буду применять к аргументам, брать их композиции и т.д. А оказалось, что вместо таких функций, в bash - какие-то раздутые бинарники на десятки и сотни килобайт, с кучей непонятного функционала. Мне вообще сама идея вызывать бинарники ради базовых операций кажется каким-то безумием.