Escrevi um enumerador em bash porque estava cansado do xargs

Uma pequena utilidade em Bash que unifica a iteração sobre arquivos e listas com um placeholder `{}` é recebida com ceticismo por usuários de linha de comando que argumentam que `find -print0`, `xargs -0`, GNU Parallel e simples loops `while read` já dão conta dessas tarefas quando usados corretamente. Os comentários contrapõem o desejo por uma sintaxe fácil e uniforme ao valor de aprender ferramentas POSIX já existentes, às preocupações de portabilidade e ao risco de adicionar apenas mais um wrapper com suas próprias peculiaridades. A discussão se amplia para uma crítica aos shells tradicionais — destacando as muitas armadilhas do Bash, ferramentas alternativas como zsh, nushell e PowerShell, e a tensão entre continuar com utilitários ubíquos porém arcaicos ou adotar abordagens mais modernas e estruturadas.

Necessidade Percebida de bashumerate

  • Objetivo do OP: uma forma única e consistente, baseada em {}, de iterar sobre arquivos, linhas, intervalos e listas, evitando for, find -exec e flags do xargs.
  • Alguns acham isso atraente em princípio (um único modelo mental, oneliners simples).
  • Outros argumentam que não é “mais simples”, apenas “mais fácil”: adiciona outra ferramenta e sintaxe em vez de aprender as existentes.

Grupo do “Apenas Use as Ferramentas do Shell”

  • Muitos dizem que xargs + find (com -print0/-0) já resolvem quase todos os problemas, incluindo espaços em nomes de arquivos e limites de lista de argumentos.
  • find -exec ... + e find -delete foram destacados como padrões melhores e mais simples para muitos exemplos.
  • Vários recomendam loops while read (frequentemente usando $REPLY) para iteração baseada em linhas, com ressalvas sobre subshells ao usar pipes.
  • Alguns mostram pequenas funções wrapper personalizadas (mini-enumeradores) que criaram em vez de adicionar uma nova dependência.

Correção, Casos de Borda e Preocupações de Sintaxe

  • Forte ênfase de que o problema de “nomes de arquivos com espaços” é resolvido por terminação NUL (-print0, xargs -0), agora até padronizada em POSIX 2024.
  • Alertas sobre quebras de linha em nomes de arquivos e limites de expansão de glob; alguns apontam que a implementação baseada em glob de bashumerate pode sofrer com problemas de argumentos/memória.
  • Críticas à sintaxe de enumerate: uso incomum de --, requisitos de aspas e substituição de {} no estilo template, reintroduzindo armadilhas de quoting/escaping.
  • Alguns argumentam que a ferramenta cobre apenas um subconjunto do que find/loops fazem, então vira sintaxe extra em cima, não uma substituta.

Desempenho e Paralelismo

  • xargs é elogiado por agrupar argumentos e, opcionalmente, paralelizar (-P), em contraste com o comportamento de um processo por vez de find -exec.
  • Alguns preferem clareza e simplicidade a velocidade paralela para a maioria das tarefas do dia a dia.

Alternativas e Debates Mais Amplos sobre Shell

  • Outras ferramentas mencionadas: GNU Parallel (tanto elogiado pelo poder quanto criticado pela UX, pela insistência em citações e pelo comportamento da primeira execução), lr/xe, rush, fd, wrappers pessoais em Python/Go, pipelines baseados em CSV.
  • A discussão entra em um debate mais amplo: shell tradicional POSIX vs shells mais modernos (zsh, nushell, PowerShell, rc, xonsh).
  • Um tema recorrente: usar ferramentas onipresentes e padrão (POSIX sh/bash + coreutils) é valorizado pela portabilidade entre sistemas aleatórios, apesar de suas esquisitices.