~ 문자를 포함하면 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.

(* 예를 들어, try ls --color=autovs 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

관련 정보