Neste comando:
wget -qO- https://get.speedify.com | bash -
Fonte: https://support.speedify.com/article/562-install-speedify-linux
...a primeira -q
é a opção para o modo "silencioso". Qual é a parte O-
(observe que é a letra "O", NÃO um zero)? Por que a letra O? Por que a trilha -
? Finalmente, após o bash
comando, há também um -
. Por quê?
Atualização: agora que sei que é a letra O, NÃO um zero, vejo isso nas man wget
páginas de manual:
-O file --output-document=file The documents will not be written to the appropriate files, but all will be concatenated together and written to file. If - is used as file, documents will be printed to standard output, disabling link conversion.
Então, -qO
é o mesmo que -q -O
, e -O
define o arquivo de saída, e -O-
aparentemente diz para imprimir o documento na saída padrão. Eu me pergunto por que eles não fizeram -O=-
ou -O -
embora...?
Não é uma duplicata:
Esta pergunta responde à parte menor, menos relevante e menos significativa da minha pergunta: as opções de linha de comando recebem um sinal de igual entre o nome e o valor da opção? . Não responde minha pergunta.
Eu acredito que há 3 perguntas sobre as quais você está procurando respostas. Deixe-me levá-los por sua vez.
Como você identificou na página man,
-
quando usado como o nome do arquivo para gravar indicarástdout
.Na
bash
parte do comando, o-
é usado como o nome do arquivo a ser lido. Nesse caso, ele diz para ler destdin
. Como os dois comandos são canalizados juntos, ele estará lendo o que está sendo gravadostdout
na etapa 1.Finalmente, o motivo pelo qual não é
-O=-
é por causa da maneira comogetopt
a biblioteca C padrão funciona ao analisar as opções de linha de comando. Quando você tem uma opção de letra única que não aceita parâmetros (por exemplo,-v
para verbose e-r
recursiva) você pode especificá-las individualmente (-v -r
) ou como um bloco (-vr
) e você usa apenas um único traço antes delas. Se uma opção de letra única recebe um parâmetro (por exemplo,-w <outfile>
),getopt
espera que a próxima coisa após a opção seja um parâmetro. So-w foo
e-wfoo
são iguais na medida em que escrevem no arquivofoo
. No entanto,-vw foo
e-wv foo
seria interpretado de forma diferente.-vw foo
seria verboso e escreveria no arquivo foo, mas-wv foo
escreveria no arquivov
e teriafoo
como um argumento de linha de comando adicional.Argumentos longos são especificados por dois traços no início. Ao processar esses argumentos, ele espera que o parâmetro esteja após um
=
sinal. Se você olhar para trás na seção citada do wget, verá que ela informa-O file
a versão "curta" da opção e--output-documet=file
a versão longa.