Comment remplacer mon nom d'utilisateur dans un script avec une variable

9

Je veux créer un script d'installation pour mon PC personnel et je veux le rendre plus flexible.

Comment remplacer mon nom d'utilisateur par la variable utilisateur actuelle?

Exemple: téléchargement vers: / home / THISUSER / Téléchargements /

FixXxeR
la source
2
Vous pouvez utiliser la variable $HOMEpour la maison et $USERpour l'utilisateur :)
dadexix86
2
@ dadexix86, vous pouvez aussi poster une réponse. Cette question est beaucoup trop bon marché pour perdre du temps dans les commentaires
Sergiy Kolodyazhnyy
@Serg oui, mais je suis presque sûr qu'il s'agit d'un doublon, et je recherche celui d'origine :)
dadexix86
Notez que le dossier Téléchargements existe uniquement sur les systèmes anglais. Ils peuvent être renommés si l'utilisateur a choisi une localisation différente.
Byte Commander
le téléchargement n'était que par exemple. Les fichiers seront supprimés après l'installation. Mais merci pour l'info utile
FixXxeR

Réponses:

21

Vous pouvez utiliser la variable $HOMEpour la maison et $USERpour l'utilisateur.

Votre exemple peut alors être $HOME/Downloadsou /home/$USER/Downloads.

dadexix86
la source
10
Tous les systèmes n'utilisent pas / home pour les répertoires personnels, donc la meilleure pratique consiste à utiliser $ HOME si vous faites référence au répertoire personnel.
asmeurer
3
@asmeurer, nous ne traitons qu'avec Ubuntu et les dérivés officiels. Quelle version par défaut n'utilise pas / home?
Rinzwind
4
Ce n'est pas parce que ce site concerne uniquement Ubuntu que vous devez éviter d'écrire du code portable et d'utiliser les meilleures pratiques.
asmeurer
15

Si vous voulez faire cela, vous devez utiliser ...

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"

ce serait donc

echo $(xdg-user-dir DOWNLOAD)

et il montrera l'emplacement de téléchargement par défaut (dans mon cas /discworld/Downloads). Fonctionne pour tous ces mots. Comme ...

echo $(xdg-user-dir DESKTOP)
Rinzwind
la source
C'est la vraie voie universelle,
ça
Juste xdg-user-dir DOWNLOADsi vous voulez l'imprimer. : P
kos
Que fait morequand !isatty(stdin)?
chat
@JacobVlijm Il existe des systèmes sur lesquels xdg-user-dirs n'est pas installé. Probablement moins sous Ubuntu, mais c'est certainement moins universel que d'utiliser $ HOME et $ USER.
jazzpi
@jazzpi Puisque nous sommes sur Ask Ubuntu , les répertoires de l'utilisateur ci-dessus dans le cadre de la question sont universels, contrairement à $ HOME / Downloads.
Jacob Vlijm