Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Créer des liens symboliques à partir d'un fichier

31 réponses
Avatar
François Valenduc
Bonjour à tous,
J'essaie de créer des liens symboliques à partir d'un fichier. J'utilise
le script suivant:

#!/bin/bash
cd /home/francois/Images/test
rm -f *
for i in $( cat /home/francois/config/liste ); do
echo $i
ln -s "$i" .
done

Le fichier "liste" contient donc une liste de fichier pour lequel je
veux créer des liens symboliques dans le fichier "test". Le but est
d'utiliser ensuite ce dossier comme source d'images de fond d'écran avec
KDE. Le problème est que çà ne fonctionne pas pour les noms de fichier
contenant des espaces.

Quelqu'un connaît-il une solution à mon problème ?
Merci d'avance,

François Valenduc

10 réponses

1 2 3 4
Avatar
Nicolas George
Doug713705 , dans le message <j1n2j6$d6o$, a
écrit :
Pourquoi ? Quel gain apporte cette méthode par rapport à l'autre ?



À court terme, une meilleure résistance aux race conditions, ce qui est
assez mineur.

À moyen terme, de bonnes habitudes qui éviteront des trous de sécurité
béants.
Avatar
Benoit Izac
Bonjour,

le 07/08/2011 à 17:38, François Valenduc a écrit dans le message
<4e3eb185$0$26831$ :

J'essaie de créer des liens symboliques à partir d'un fichier. J'utilise
le script suivant:

#!/bin/bash
cd /home/francois/Images/test
rm -f *
for i in $( cat /home/francois/config/liste ); do
echo $i
ln -s "$i" .
done

Le fichier "liste" contient donc une liste de fichier pour lequel je
veux créer des liens symboliques dans le fichier "test". Le but est
d'utiliser ensuite ce dossier comme source d'images de fond d'écran avec
KDE. Le problème est que çà ne fonctionne pas pour les noms de fichier
contenant des espaces.



for i in "$( cat /home/francois/config/liste )"; do

Ou alors tu changes IFS.



Merci pour le conseil mais çà ne fonctionne pas. Il n'y a qu'un lien
symbolique créé pour le dernier fichier de la liste.



Effectivement, j'ai dit une bêtise, avec ma version i vaut la totalité
du fichier liste et la boucle n'est exécutée qu'une fois.

--
Benoit Izac
Avatar
Erwan David
Benoit Izac écrivait :

Bonjour,

le 07/08/2011 à 17:38, François Valenduc a écrit dans le message
<4e3eb185$0$26831$ :

J'essaie de créer des liens symboliques à partir d'un fichier. J'utilise
le script suivant:

#!/bin/bash
cd /home/francois/Images/test
rm -f *
for i in $( cat /home/francois/config/liste ); do
echo $i
ln -s "$i" .
done

Le fichier "liste" contient donc une liste de fichier pour lequel je
veux créer des liens symboliques dans le fichier "test". Le but est
d'utiliser ensuite ce dossier comme source d'images de fond d'écran avec
KDE. Le problème est que çà ne fonctionne pas pour les noms de fichier
contenant des espaces.



for i in "$( cat /home/francois/config/liste )"; do

Ou alors tu changes IFS.



Merci pour le conseil mais çà ne fonctionne pas. Il n'y a qu'un lien
symbolique créé pour le dernier fichier de la liste.



Effectivement, j'ai dit une bêtise, avec ma version i vaut la totalité
du fichier liste et la boucle n'est exécutée qu'une fois.



zutre remarque :
mieux vaut "$(< /home/francois/config/liste)", le cat n'est pas nécessaire.

--
Le travail n'est pas une bonne chose. Si ça l'était,
les riches l'auraient accaparé
Avatar
Fabien LE LEZ
On Sun, 07 Aug 2011 21:25:04 +0200, François Valenduc
:

Donc,j'ai rajouté ceci:



Je t'invite à tester ton script.

Test 1 :

rm -rf /home/francois/Images
Puis appel de ton script

Test 2 :

chmod a-x /home/francois/Images/test/
Puis appel de ton script


Dans les deux cas, si je ne m'abuse, tu effaceras les fichiers du
répertoire courant.
Avatar
Fabien LE LEZ
On 07 Aug 2011 21:19:15 GMT, Nicolas George
<nicolas$:

mkdir rep 2> /dev/null



Ou plutôt "mkdir -p rep", non ?
Avatar
Fabien LE LEZ
On Sun, 7 Aug 2011 22:11:54 +0000 (UTC), Doug713705
:

Pourquoi ? Quel gain apporte cette méthode par rapport à l'autre ?



Entre autres, que se passe-t-il si /home/francois/Images/test est un
fichier ?
Avatar
Benoit Izac
Bonjour,

le 08/08/2011 à 17:38, Fabien LE a écrit dans le message
:

Pourquoi ? Quel gain apporte cette méthode par rapport à l'autre ?



Entre autres, que se passe-t-il si /home/francois/Images/test est un
fichier ?



chdir va échouer et rm ne sera pas exécute.

--
Benoit Izac
Avatar
Benoit Izac
Bonjour,

le 08/08/2011 à 06:39, Erwan David a écrit dans le message
:

for i in "$( cat /home/francois/config/liste )"; do







mieux vaut "$(< /home/francois/config/liste)", le cat n'est pas nécessaire.



Je ne pense pas que ce soit portable ; je n'ai pas vu de trace dans
SUSv3 et ça ne fonctionne pas avec dash.

--
Benoit Izac
Avatar
Benoit Izac
Bonjour,

le 08/08/2011 à 17:38, Fabien LE a écrit dans le message
:

Pourquoi ? Quel gain apporte cette méthode par rapport à l'autre ?



Entre autres, que se passe-t-il si /home/francois/Images/test est un
fichier ?



chdir va échouer et rm ne sera pas exécuté.

--
Benoit Izac
Avatar
Fabien LE LEZ
On Mon, 08 Aug 2011 19:26:04 +0200, Benoit Izac
:

chdir va échouer et rm ne sera pas exécuté.



Et les liens seront créés dans le répertoire courant.
1 2 3 4