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/filename
se precisar apenas consultar o diretório inicial do usuário atual. Como --output-document
recebe 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=bar
formato 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=auto
vs 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