Ich schreibe eine Dokumentation und verwende daher lieber lange Optionen, da diese selbstbeschreibend sind und --output-document=
sich besser lesen lassen als das kurze Äquivalent -O
.
Anschließend muss ich eine Datei im Home-Verzeichnis angeben, allerdings ~
schlägt beim Versuch das Zeichen fehl --output-document=~/.vimrc
.
Ich muss wirklich eine lange Option verwenden, aber ich muss auch einen Pfad angeben, der automatisch das Home-Verzeichnis enthält.
Es gibt also eine Lösung, die keine Syntax wie /home/<your name>/
? verwendet.
Antwort1
Die Tilde-Erweiterung funktioniert nur am Anfang eines Wortes. (Zumindest in Bash, siehe z. B.https://www.gnu.org/software/bash/manual/html_node/Tilde-Expansion.html)
Sie können es beispielsweise verwenden, --something=$HOME/filename
wenn Sie nur auf das Home-Verzeichnis des aktuellen Benutzers verweisen müssen. Da --output-document
ein obligatorisches Argument verwendet wird, funktioniert es auch, das Argument in einer separaten Option zu schreiben, aber für optionale Argumente scheint es nicht zu funktionieren (*), daher möchten Sie wahrscheinlich --foo=bar
normalerweise das Format verwenden.
Wenn es sich bei dem Kontext um Dokumentation handelt, kann es sinnvoll sein, zumindest auch die entsprechenden Kurzoptionen zu erwähnen, da diese kürzer zu schreiben sind und Ihre Leser sie ohnehin in von anderen geschriebenem Code finden könnten. Insbesondere bei allgemeinen Optionen wie wget -O
.
(* Beispielsweise „try “ ls --color=auto
im Vergleich zu ls --color auto
„. Ich sagte „scheinbar“, da die direkteste Erwähnung hierzu, die ich finden kann, die Manpage des Kommandozeilenprogramms ist getopt
; die Bibliotheksdokumentation ist nicht so klar.)
Antwort2
Soweit ich weiß, sollte das '=' da nicht stehen...
wget --option-document ~/.vimrc
Antwort3
Ich würde weder in der Dokumentation noch in 'in anger' verwenden, aber wenn Sie wirklich Tilde wollen,dürfentun Sie entweder
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