나는 문서를 작성하므로 자기 설명적이기 때문에 긴 옵션을 선호합니다. --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