Parece que service --status-all grava os resultados de [ + ] e [ - ] para stdout, mas os resultados de [ ? ] para stderr. Portanto, para usar sort para classificar todos eles, você terá que combinar os fluxos stdout e stderr desta forma:
service --status-all 2>&1 | sort
A classificação é afetada pelo valor de LC_COLLATE , que por padrão é igual à sua configuração LANG . Se você não quiser alterar o valor de LC_COLLATE para todos os seus aplicativos, mas quiser que essa lista seja classificada por + , - e ? , use este comando:
service --status-all 2>&1 | LC_COLLATE=C sort
Para definir LC_COLLATE para todos os seus aplicativos, coloque isso no seu ~/.profile , ~/.bash_profile ou qualquer script que tenha origem para definir seu ambiente no login:
export LC_COLLATE=C