Re-bonjour, C'est tout à fait ça ;-) Il ne marchait pas avant mais je ne m'en rendais pas compte vu qu'il n'y a plus eu aucun fichier ajouté dans le répertoire... Le find est effectivement une solution plus adaptée...
Merci à tous pour vos réponses. David. Le 08/09/2017 à 12:14, Francois Lafont a écrit : > Hello, > > On 09/08/2017 11:57 AM, David BERCOT wrote: > >> if [ -e "/etc/apt/sources.list.d/*" ] >> then >> rm /etc/apt/sources.list.d/* >> fi > > Je ne suis pas sûr d'avoir compris comment était > ton code à l'origine mais je pense qu'il n'était > pas correct (ce qui ne l'a pas empêché de marcher > pendant un certain temps semble-t-il). > > Avec les doubles quotes, tu demandes à bash de > tester si un fichier qui s'appelle * (avec vraiment > comme nom juste le caractère *) existe dans le > répertoire /etc/apt/sources.list.d/. Et on imagine > bien que ce n'est pas ce que tu veux demander à > bash. > > Sans les doubles quotes, là le caractère * devient > spécial et bash le développe en fonction de ce qu'il > y a dans ton répertoire. > > Par exemple si dans /etc/apt/sources.list.d/, tu as > titi.list et toto.list (et c'est tout) alors tout > va se passer comme si tu avais écris : > > [ -e /etc/apt/sources.list.d/titi.list /etc/apt/sources.list.d/toto.list ] > > et là tu as fort logiquement une erreur vu que -e > n'accepte _qu'un seul_ argument, pas plus. D'où le > message d'erreur que tu obtiens. > > Si le répertoire ne contenait qu'un seul fichier, là > ça marcherait. En fait, sans les "...", le code marche > mais juste pour 0 ou 1 fichier dans le répertoire, pas > plus. :) > > Perso, si je peux éviter les * dans un script, je le > fais, surtout pour du rm. À ta place je ferais plutôt ceci : > > find /etc/apt/sources.list.d/ -maxdepth 1 -mindepth 1 -type f -delete > > voire, tant qu'on y ait : > > find /etc/apt/sources.list.d/ -maxdepth 1 -mindepth 1 -type f -name > '*.list' -delete > > J'espère que c'est plus clair pour toi maintenant. > À+ > > -- > François Lafont > >