salut Pierre, On Thu, Nov 27, 2025 at 01:35:47AM +0100, Pierre Estrem wrote: > Merci pour ton aide.
Avec plaisir.
> Je commencerai par tes commandes dont j'apprendrai bien des choses.
> Ensuite je visiterai la solution "construction d'un paquet".
à te lire, je crois pourtant que tu tentes de faire un blend debian
et c'est donc plutôt vers le packaging que je me dirigerais
https://www.debian.org/blends/
et le tuto de Charles est assez lumineux. je compte y contribuer des que
j'en aurais le temps.
mais puisque le script semble être une possibilité d'apprendre, voici la
version commenté
pas la peine de tester l'existance du fichier: -f donne à rm la
possiblité de louper une suppression sans "échouer" (il retourne tjrs 0)
rm -f /log.txt
set permet de configurer le comportement du shell
- pour activer une optionn + pour désactiver
+e est le comportement normal mais ca ne semble pas etre le cas
chez toi alors je la force
e: errexit: quitter des qu'une erreur n'est pas captée
donc
stage1 &&
stage2 &&
stage3
peut s'écrire
set -e
stage1
stage2
stage3
x: xtrace
affiche les commandes executées
du coup mon espoir en tappant
set +e -x
c'est de balancer toutes les commandes tappées dans stderr
et d'etre le plus laxiste possible avec les erreurs (ce que je ne
conseille pas)
exec permet de lancer une commande sans fork (ton shell se transforme
donc en autre chose)
* ca permet de faire un exit dans ton code
* ton pstree gagne 1 étage
exemple d'usage ici:
https://git.unistra.fr/mc/liebe_dash/-/blob/stable/bin/tsveverything?ref_type=heads#L47
astuce: si tu fais exec sur rien, le shell fait un exec sur lui-même
ce qui permet au passage de redéfinir (ou créer de nouvelles) les
redirections. donc
exec 2>/log.txt
veut dire "a partir de maintenant, toutes les sdterr sont redirigées
vers log.txt"
ensuite:
grep -v '^ *#' packages.list | xargs -n1 apt-get install -y
xargs transforme une liste de mots (ou de lignes si -d'\n')
en arguments pour la commande. il va tenter de bourrer un maximum
de mots dans la meme commande puis l'executer.
seq 5 | xargs printf 'le chiffre %s\n'
est une façon plus robuste (plus de quotes, plus de depassement
de taille) d'écrire
printf 'le chiffre %s\n' $(seq 5)
par contre
seq 30 | xargs -n10 echo
ou juste
seq 30 | xargs -n10
va executer
echo 1 2 3 4 5 6 7 8 9 10
echo 11 12 13 14 15 16 17 18 19 20
echo 21 22 23 24 25 26 27 28 29 30
donc
grep -v '^ *#' packages.list |
xargs -n1 apt-get install -y
execute apt-get install -y mot pour chaque mot présents dans la sortie
de grep
si ce genre de discussions t'intéresse (shell scripting, vim, awk,
sed, les regexp, ...) je te conseille grandement de t'abonner à
la liste https://groupes.renater.fr/sympa/subscribe/unix.
a+
--
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
signature.asc
Description: PGP signature

