[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [HS] copier un fichier en incluant un chemin



salut,

c'est très domage que

* install ne soit pas plus utilisé: le nom est
trompeur de du coup il est plutôt utilisé dans des makefiles pour
installer des fichiers dans les bons répertoires avec les bons
propriétaires et les bons droits.
* -D soit une spécificité (pourtant bien utile) du GNU project.

On Fri, Oct 17, 2025 at 11:36:29PM +0200, Pierre Estrem wrote:
> Je vais adopter la solution en set/mkdir -p/cp - d'autant que je ne
> connaissais pas l'option "-t" de cp

> (sauf si je devais rencontrer des
> conflits avec le paramètre $1 car je dois inclure cela dans mon script de
> post-installation de preseed.

dans ce cas là tu peux passer par une fonction

inlay() {
	mkdir -p "$1"
	cp -t "$@"
}

qui est cool parce qu'elle prend un nombre arbitraire de fichiers

inlay /etc/config/autostart terminal.desktop gimp.desktop

sinon tu peux simplement passer par des variables mais tu perds le coté
tableau.

to=/etc/config/autostart fichiers=terminal.desktop

mkdir -p "$to"
cp -t "$to" "$fichiers"

avec sh (dash dans les distros qui se respectent et/ou qui utilisent
busybox), tu peux permettre l'expansion pour avoir une liste de fichiers
quand meme:

to=/etc/config/autostart fichiers='terminal.desktop gimp.desktop'

mkdir -p "$to"
cp -t "$to" $fichiers

ce qui va devenir

mkdir -p /etc/config/autostart
cp -t /etc/config/autostart terminal.desktop gimp.desktop

attention parce que:
* si tu as un espace dans un nom de fichier, ca va merder
* les globs sont interprétés apres les variables. c'est super pratique
  mais il faut le retenir

to=/etc/config/autostart fichiers='*.desktop'

en zsh tu peux juste passer par un tableau et il n'est pas utile
de proteger les variable de l'expansion et du word spliting
(lequels doivent être explicité )

to=/etc/config/autostart fichiers=(terminal.desktop gimp.desktop)

mkdir -p $to
cp -t $to $fichiers

et en bash je sais plus et je m'en fous! au nom des générations
futures, je milite pour sa disparition. :)

notes que dans les 2 cas tu peux rendre le truc plus lisible en passant
à la ligne

to=/etc/config/autostart
fichiers='
	terminal.desktop
	gimp.desktop
'

to=/etc/config/autostart
fichiers=(
	terminal.desktop
	gimp.desktop
)

bien à toi

-- 
Marc Chantreux
Pôle CESAR (Calcul et services avancés à la recherche)
Université de Strasbourg
14 rue René Descartes,
BP 80010, 67084 STRASBOURG CEDEX
03.68.85.60.79

Attachment: signature.asc
Description: PGP signature


Reply to: