~ 文字が含まれている場合、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

(* たとえば、 tryls --color=autols --color auto。私が「と思われる」と言ったのは、これについて私が見つけた最も直接的な言及はコマンドライン プログラムのマニュアル ページでありgetopt、ライブラリのドキュメントはそれほど明確ではないためです。)

答え2

私の知る限り、「=」はそこにはないはずです...

wget --option-document ~/.vimrc

答え3

私は文書では使用しませんし、「怒り」でも使用しませんが、本当にチルダを使いたいのであればできるどちらかを行う

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

関連情報