La opción --output-document= de wget falló cuando contenía el carácter ~

La opción --output-document= de wget falló cuando contenía el carácter ~

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/filenamesi solo necesita consultar el directorio de inicio del usuario actual. Dado que --output-documentse 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=barformato 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=autovs. ls --color autoDije "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

información relacionada