私は文書を書くので、長いオプションを好む。なぜならそれは自己説明的だからです。--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=auto
vsを試してみて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