wget’s --output-document = opção falhou quando contém ~ caractere

0

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

Depois, preciso indicar um arquivo no diretório inicial, mas o caractere ~ falhou ao tentar --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>/ ?

    
por fauve 21.05.2016 / 19:36

3 respostas

4

A expansão de til só funciona no começo de uma palavra. (Pelo menos no bash, consulte, por exemplo, link )

Você pode usar, digamos, --something=$HOME/filename se precisar apenas consultar o diretório pessoal do usuário atual. Como --output-document tem um argumento obrigatório, escrever o argumento em uma opção separada também funciona, mas para argumentos opcionais ele não parece funcionar (*), então você provavelmente quer usar o formato --foo=bar normalmente.

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

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

    
por 21.05.2016 / 20:46
1

Até onde eu sei, o '=' não deveria estar lá ...

wget --option-document ~/.vimrc
    
por 21.05.2016 / 20:21
0

Eu não usaria em documentação, nem em "raiva", mas se você realmente quiser til você pode fazer

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
    
por 22.05.2016 / 02:54