Ah, então mesmo tendo nascido como convenção, hoje o bash já entende que comandos com -- devem ser lidos de forma completa e única, o que permite a diferença entre -all e --all ou de comandos que incluam o - no nome, como o --save-dev do npm, além de evitar erros como, por exemplo, ao passar um -name do docker run, porque ele não reconhece -n, -m nem -e como flags? Se sim, então significa que o -it do docker na vdd pode ser passado como -i -t?
ao passar um -name do docker run, porque ele não reconhece -n, -m nem -e como flags?
Ele até reconhece -a
, -m
e -e
, mas dá erro porque a opção -n
não existe, veja na documentação.
então significa que o -it do docker na vdd pode ser passado como -i -t?
Sim.
hoje o bash já entende
Não é exatamente o Bash, cada comando lê as opções e as interpreta da forma que quiser. O que acontece é que muitos usam alguma biblioteca padrão (seja POSIX ou extensões da GNU, por exemplo), que possui funções prontas para interpretá-los da forma que expliquei. Se não me engano, são as extensões da GNU que adicionaram o suporte à forma longa.
Mas nada impede que eu faça um programa que aceita opções em um formato completamente diferente.
No caso de CLI feitas em python a biblioteca padrão da linguagem tem uma lib chamada argparse que consegue manipular os argumentos de forma "automatica" e também tem uma interface legal pra criar a documentação sem grandes esforços