Os shells não fazem nenhuma reorganização do código que recebem, é apenas interpretado uma linha após a outra (nada mais faz muito sentido em um interpretador de comando). Grande parte do tempo gasto pelo shell vai para análise / análise / lançamento lexical dos programas chamados.
Para operações simples (como as que mostram os exemplos no final da pergunta), eu ficaria surpreso se o tempo para carregar os programas não varresse diferenças minúsculas de velocidade.
A moral da história é que, se você realmente precisa de mais velocidade, é melhor usar uma linguagem (semi) compilada como Perl ou Python, que é mais rápida de executar no início, na qual é possível escrever muitas das operações mencionadas diretamente e não precisa chamar programas externos e tem a opção de chamar programas externos ou chamar módulos C (ou o que seja) otimizados para executar grande parte do trabalho. Essa é a razão pela qual no Fedora o "açúcar de administração do sistema" (GUIs, essencialmente) é escrito em Python: Pode adicionar uma GUI agradável sem muito esforço, rápido o suficiente para tais aplicativos, ter acesso direto às chamadas do sistema. Se a velocidade não for suficiente, pegue C ++ ou C.
Mas não vá lá, a menos que você possa provar que o ganho de desempenho vale a perda de flexibilidade e o tempo de desenvolvimento. Os scripts do shell não são tão ruins de ler, mas estremeço quando me lembro de alguns scripts usados para instalar o Ultrix que tentei decifrar. Eu desisti, muita "otimização de script de shell" havia sido aplicada.