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