我编写文档,所以我更喜欢使用长选项,因为它是自我描述的。--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