Escribo una documentación, así que prefiero usar opciones largas porque es autodescriptiva. --output-document=
es más legible que su equivalente corto -O
.
Luego, tengo que indicar un archivo en el directorio de inicio, pero el ~
carácter falló cuando lo intenté --output-document=~/.vimrc
.
Realmente necesito usar una opción larga, pero también necesito indicar una ruta que contenga automáticamente el directorio de inicio.
Entonces, ¿existe una solución que no use una sintaxis como /home/<your name>/
?
Respuesta1
La expansión de tilde sólo funciona al principio de una palabra. (Al menos en bash, ver, por ejemplohttps://www.gnu.org/software/bash/manual/html_node/Tilde-Expansion.html)
Podría usarlo, por ejemplo, --something=$HOME/filename
si solo necesita consultar el directorio de inicio del usuario actual. Dado que --output-document
se necesita un argumento obligatorio, escribir el argumento en una opción separada también funciona, pero para los argumentos opcionales no parece funcionar (*), por lo que probablemente quieras usar el --foo=bar
formato normalmente.
Si el contexto es documentación, podría ser útil al menos mencionar también las opciones cortas correspondientes, ya que son más cortas de escribir y sus lectores podrían tropezar con ellas en código escrito por otros de todos modos. Especialmente para opciones comunes como wget -O
.
(* Por ejemplo, try ls --color=auto
vs. ls --color auto
Dije "parece", ya que la mención más directa de esto que puedo encontrar es la página de manual del programa de línea de comandos getopt
, la documentación de la biblioteca no es tan clara).
Respuesta2
Hasta donde yo sé, el '=" no debería estar ahí...
wget --option-document ~/.vimrc
Respuesta3
No lo usaría en documentación, ni 'en ira', pero si realmente quieres tildepoderhacer cualquiera de
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