No Windows, a análise de cadeia de caracteres na linha de comando é um jogo de dados, tanto para o Lote quanto para o PowerShell. Ferramentas de linha de comando essenciais como fsutil
e dcdiag
retornam sua saída em strings que são internacionalizadas para o idioma da instalação do SO, tornando quase impossível escrever scripts em uma capacidade de tamanho único sem levar em consideração o suporte para a escolha de cada idioma e formatação .
Sempre que possível, escrevo no PowerShell (para retornar objetos em vez de strings ) e uso o WMI para retornar enumeradores não localizados, traduzo-me por meio de tabelas de pesquisa; sempre haverá algumas ferramentas, no entanto, que servem como o único meio em um dispositivo para coletar as informações necessárias.
Agora estou escrevendo um script para macOS invocando (neste caso) a csrutil
ferramenta.
Como muitos utilitários *nix, sua saída está no formato de string. Executá-lo produz a seguinte saída:
System Integrity Protection status: unknown (Custom Configuration).
Configuration:
Apple Internal: disabled
Kext Signing: disabled
Filesystem Protections: disabled
Debugging Restrictions: disabled
DTrace Restrictions: disabled
NVRAM Protections: disabled
BaseSystem Verification: enabled
This is an unsupported configuration, likely to break in the future and leave your machine in an unknown state.
De alguma forma a internet não contém nenhum conhecimento sobre esse assunto que eu pudesse encontrar, então:
Quão agressiva é a Apple na internacionalização da saída do terminal?
Esta é menos uma pergunta sobre Bash ou ZSH, pois sei que são sempre em inglês, mas o macOS é notório por criar forks incompatíveis de ferramentas POSIX específicas da Apple; além disso, conforme demonstrado acima, existem muitas ferramentas de linha de comando desenvolvidas pela Apple destinadas ao gerenciamento de sistemas macOS. Devo presumir que eles foram traduzidos pelo menos para o alemão e adquirir um dispositivo macOS com o idioma alemão instalado? Ou é tudo sempre em inglês?
Em geral, estou perguntando quanta internacionalização devo esperar das ferramentas de linha de comando forjadas pela Apple.
No momento, a maioria dessas ferramentas de administração do sistema (não .app) são apenas em inglês. Isso facilita a análise da saída.
Você pode, por exemplo, tentar examinar binários assim:
neste caso, não há traduções presentes no binário
Você pode considerar definir
$LANG
ou$LC_MESSAGES
locale (apenas localmente em seus scripts usandoenv
), como emenv
será iniciadocsrutil
com aLC_MESSAGES
variável de ambiente definida como "C", que é uma configuração especial que se traduz em "agir como se este programa não tivesse sido localizado".Isso causará uma saída em inglês para esta sessão, mas não terá nenhum efeito em seu sistema em geral.