我編寫文檔,所以我更喜歡使用長選項,因為它是自我描述的。--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
.
(* 例如, try ls --color=auto
vs ls --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