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

Attachment: signature.asc
Description: PGP signature

Répondre à