〜文字を含めると、wgetの--output-document =オプションは失敗します。

〜文字を含めると、wgetの--output-document =オプションは失敗します。

私は文書を書くので、長いオプションを好む。なぜならそれは自己説明的だからです。--output-document=彼の短い同等物よりも読みやすいです-O

その後、私のホームディレクトリにファイルを指定する必要がありますが、~試みるとその文字が失敗します--output-document=~/.vimrc

長いオプションを使用する必要がありますが、ホームディレクトリを自動的に含むパスも表示する必要があります。

まあ、?などの構文を使用しないソリューションがあります/home/<your name>/

答え1

チルダ拡張は単語の先頭でのみ機能します。 (少なくともbashでは、以下を参照してください。https://www.gnu.org/software/bash/manual/html_node/Tilde-Expansion.html)

--something=$HOME/filenameこれは、現在のユーザーのホームディレクトリを参照するだけの場合に機能します。必須パラメータのため、--output-document別のオプションにパラメータを書き込むことも可能ですが、オプションのパラメータ(*)では機能しないようです。通常、その--foo=bar形式を使用することをお勧めします。

コンテキストが文書化されている場合は、少なくとも対応する短いオプションに言及すると便利です。なぜなら、書くのが短く、読者が他の人が書いたコードでそのオプションを偶然見つけることができるからです。特にwget -O

(*たとえば、ls --color=autovsを試してみてls --color autoください。私が見つけることができる最も直接的な言及は、コマンドラインプログラムのマニュアルページにあり、getoptライブラリドキュメントはあまり明確ではないので「〜のようです」と言います。)

答え2

私が知っている限り、「=」はそこにいるべきではありません...

wget --option-document ~/.vimrc

答え3

私はそれを文書や "angry"に使用しません。しかし、本当にチルダが欲しいなら、できる次のいずれかを実行します。

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

関連情報