Portanto, não mobilizamos recursos para otimizar a ferramenta original, para atender a todos os desejos específicos. Eu acho que o que precisamos explicar é quanto esse desejo específico teria custado para implementar.
POSIX defines enough about the utilities that it does not seem like much of a problem to have different implementations.
esta é uma suposição ruim: -P.
Os sistemas Post-POSIX continuam a se tornar mais poderosos e convenientes por boas razões; como um padrão pós-fato, ele nunca chega.
O Ubuntu iniciou um esforço para mudar para um shell POSIX enxuto para scripts, para otimizar o antigo processo de inicialização do System V init. Eu não estou dizendo que ele falhou, mas ele desencadeou muitos bugs que precisaram ser limpos: "bashisms", scripts que rodavam sob /bin/sh
enquanto assumiam que bash
estavam disponíveis.
POSIX sh não é uma boa linguagem de programação de propósito geral. Seu objetivo principal é funcionar bem como um shell interativo. Assim que você começar a salvar seus comandos em um script, lembre-se de abordar um Turing tarpit . Por exemplo. Não é possível detectar falhas no meio de um pipeline normal . bash
adicionou set -o pipefail
para isso, mas isso não está no POSIX.
Recursos úteis, mas não padronizados, são fornecidos por quase todos os utilitários mais complexos que true
.
Para a classe de tarefa que você delineia, você pode desenhar uma linha aproximada para Awk, Perl e, atualmente, para Python. Diferentes ferramentas foram criadas e evoluíram de forma independente. Você esperaria, e. GNU Awk para ser incluído em uma libutilposixextended?
Não estou dizendo que agora temos uma abordagem universalmente melhor para a qual posso apontar. Eu tenho um fraquinho por Python. Awk é surpreendentemente poderoso, embora eu tenha sido frustrado por alguns recursos serem específicos do GNU Awk. Mas o ponto é que o processamento de grandes números de strings individualmente (presumivelmente a partir de linhas dos arquivos) não era uma meta de design do shell POSIX.