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

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

관련 정보