Cómo reemplazar mi nombre de usuario en un script con variable

9

Quiero hacer un script de instalación para la PC de mi casa y quiero que sea más flexible.

¿Cómo reemplazar mi nombre de usuario con la variable de usuario actual?

Ejemplo: descargar a: / home / THISUSER / Downloads /

FixXxeR
fuente
2
Puede usar la variable $HOMEpara el hogar y $USERpara el usuario :)
dadexix86
2
@ dadexix86 también puede publicar una respuesta. Esta pregunta es demasiado barata para perder el tiempo en los comentarios
Sergiy Kolodyazhnyy
@Serg sí, pero estoy casi seguro de que es un duplicado, y estoy buscando el original :)
dadexix86
Tenga en cuenta que la carpeta Descargas solo existe en los sistemas en inglés. Se pueden renombrar si el usuario elige una localización diferente.
Byte Commander
la descarga fue solo por ejemplo. Los archivos se eliminarán después de la instalación. Pero gracias por la útil información
FixXxeR

Respuestas:

21

Puede usar la variable $HOMEpara el hogar y $USERpara el usuario.

Su ejemplo puede ser $HOME/Downloadso /home/$USER/Downloads.

dadexix86
fuente
10
No todos los sistemas usan / home para directorios de inicio, por lo que la mejor práctica es usar $ HOME si hace referencia al directorio de inicio.
Asmeurer
3
@asmeurer solo tratamos con Ubuntu y derivados oficiales. ¿Qué versión predeterminada no usa / home?
Rinzwind
44
El hecho de que este sitio sea solo sobre Ubuntu no significa que deba evitar escribir código portátil y usar las mejores prácticas.
Asmeurer
15

Si desea hacer esto, debe usar ...

more ~/.config/user-dirs.dirs
# This file is written by xdg-user-dirs-update
# If you want to change or add directories, just edit the line you're
# interested in. All local changes will be retained on the next run
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
# absolute path. No other format is supported.
# 
XDG_DESKTOP_DIR="/discworld/Desktop"
XDG_DOWNLOAD_DIR="/discworld/Downloads"
XDG_TEMPLATES_DIR="/discworld/Templates"
XDG_PUBLICSHARE_DIR="/discworld/Public"
XDG_DOCUMENTS_DIR="/discworld/Documents"
XDG_MUSIC_DIR="/discworld/Music"
XDG_PICTURES_DIR="/discworld/Pictures"
XDG_VIDEOS_DIR="/discworld/Videos"

entonces eso sería

echo $(xdg-user-dir DOWNLOAD)

y mostrará la ubicación de descarga predeterminada (en mi caso /discworld/Downloads). Funciona para todas estas palabras. Me gusta ...

echo $(xdg-user-dir DESKTOP)
Rinzwind
fuente
Esta es la forma universal real , siempre funciona :)
Jacob Vlijm
Solo xdg-user-dir DOWNLOADsi quieres imprimirlo. : P
kos
¿Qué hace morecuándo !isatty(stdin)?
gato
@JacobVlijm Hay sistemas donde xdg-user-dirs no está instalado. Probablemente menos en Ubuntu, pero definitivamente es menos universal que usar $ HOME y $ USER.
jazzpi
@jazzpi Dado que estamos en Ask Ubuntu , los directorios de usuarios anteriores dentro del alcance de la pregunta son universales, mientras que `$ HOME / Downloads` definitivamente no lo es.
Jacob Vlijm