A opção --output-document= do wget falhou ao conter o caractere ~

A opção --output-document= do wget falhou ao conter o caractere ~

Eu escrevo uma documentação, então prefiro usar opções longas porque são autodescritivas. --output-document=é mais legível do que seu equivalente curto -O.

Então, tenho que indicar um arquivo no diretório inicial, mas o ~caractere falhou quando tento --output-document=~/.vimrc.

Eu realmente preciso usar uma opção longa, mas também preciso indicar um caminho que contenha automaticamente o diretório inicial.

Então, existe uma solução que não usa uma sintaxe como /home/<your name>/?

Responder1

A expansão til só funciona no início de uma palavra. (Pelo menos no bash, veja, por exemplohttps://www.gnu.org/software/bash/manual/html_node/Tilde-Expansion.html)

Você poderia usar, digamos, --something=$HOME/filenamese precisar apenas consultar o diretório inicial do usuário atual. Como --output-documentrecebe um argumento obrigatório, escrever o argumento em uma opção separada também funciona, mas para argumentos opcionais parece não funcionar (*), então você provavelmente desejará usar o --foo=barformato normalmente.

Se o contexto for documentação, pode ser útil pelo menos mencionar também as opções curtas correspondentes, uma vez que elas são mais curtas para escrever e seus leitores podem tropeçar nelas em código escrito por outros de qualquer maneira. Especialmente para opções comuns como wget -O.

(* Por exemplo, try ls --color=autovs ls --color auto. Eu disse "parece", já que a menção mais direta que posso encontrar é a página de manual do programa de linha de comando getopt, a documentação da biblioteca não é tão clara.)

Responder2

Pelo que eu sei, o '=' não deveria estar lá ...

wget --option-document ~/.vimrc

Responder3

Eu não usaria em documentação, nem 'com raiva', mas se você realmente quiser til vocêpodefaça qualquer um dos

VAR=~/.vimrc; wget ... --output-document="$VAR" 
unset VAR # to keep things tidy
# or put in ( subshell ) to keep pre-existing VAR 
# quotes only needed if $HOME (or anything you substitute for .vimrc)
# can contain whitespace or glob characters ?*[ which is pretty rare

wget ... --output-document="$(echo ~/.vimrc)"
# or if $HOME can begin with - or contain backslash, also pretty rare:
wget ... --output-document="$(printf '%s\n' ~/.vimrc)"
# both times quotes as above

informação relacionada