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,
le 07/08/2011 à 17:07, François Valenduc a écrit dans le message <4e3eaa33$0$28916$ :
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.
-- Benoit Izac
Bonjour,
le 07/08/2011 à 17:07, François Valenduc a écrit dans le message
<4e3eaa33$0$28916$426a74cc@news.free.fr> :
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
le 07/08/2011 à 17:07, François Valenduc a écrit dans le message <4e3eaa33$0$28916$ :
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.
-- Benoit Izac
François Valenduc
Le 07/08/11 17:21, Benoit Izac a écrit :
Bonjour,
le 07/08/2011 à 17:07, François Valenduc a écrit dans le message <4e3eaa33$0$28916$ :
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.
Le 07/08/11 17:21, Benoit Izac a écrit :
Bonjour,
le 07/08/2011 à 17:07, François Valenduc a écrit dans le message
<4e3eaa33$0$28916$426a74cc@news.free.fr> :
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.
le 07/08/2011 à 17:07, François Valenduc a écrit dans le message <4e3eaa33$0$28916$ :
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.
Fabien LE LEZ
On Sun, 07 Aug 2011 17:07:31 +0200, François Valenduc :
for i in $( cat /home/francois/config/liste ); do echo $i ln -s "$i" .
xargs -d 'n' -I X ln -s X . < /home/francois/config/liste
On Sun, 07 Aug 2011 17:07:31 +0200, François Valenduc
<francois.valenduc@tvcablenet.be>:
for i in $( cat /home/francois/config/liste ); do
echo $i
ln -s "$i" .
xargs -d 'n' -I X ln -s X . < /home/francois/config/liste
En suivant vos conseils sur l'IFS et les infos trouvées sur la page http://www.commentcamarche.net/faq/5027-comment-lire-un-fichier-ligne-par-ligne, je m'en étais sorti avec le script suivant:
old_IFS=$IFS # sauvegarde du séparateur de champ IFS=$'n' # nouveau séparateur de champ, le caractère fin de ligne for ligne in $(cat /home/francois/config/liste) do ln -s $ligne . done IFS=$old_IFS
Mais effectivement, çà marche aussi avec xargs.
Bonne soirée.
Le 07/08/11 18:23, Fabien LE LEZ a écrit :
J'avais écrit :
xargs -d 'n' -I X ln -s X . < /home/francois/config/liste
En suivant vos conseils sur l'IFS et les infos trouvées sur la page
http://www.commentcamarche.net/faq/5027-comment-lire-un-fichier-ligne-par-ligne,
je m'en étais sorti avec le script suivant:
old_IFS=$IFS # sauvegarde du séparateur de champ
IFS=$'n' # nouveau séparateur de champ, le caractère fin de ligne
for ligne in $(cat /home/francois/config/liste)
do
ln -s $ligne .
done
IFS=$old_IFS
En suivant vos conseils sur l'IFS et les infos trouvées sur la page http://www.commentcamarche.net/faq/5027-comment-lire-un-fichier-ligne-par-ligne, je m'en étais sorti avec le script suivant:
old_IFS=$IFS # sauvegarde du séparateur de champ IFS=$'n' # nouveau séparateur de champ, le caractère fin de ligne for ligne in $(cat /home/francois/config/liste) do ln -s $ligne . done IFS=$old_IFS
Mais effectivement, çà marche aussi avec xargs.
Bonne soirée.
Francois Lafont
Bonjour,
J'avais posé une question plus ou moins connexe il y a quelques temps ici même et on m'avait donné comme solution un truc dans le genre ça :
cat /home/francois/config/liste | while read i; do echo "$i" ln -s "$i" . done #--------------------------------------
Voici le fil en question : https://groups.google.com/group/fr.comp.os.linux.configuration/browse_thread/thread/dbd5c5c059ec6e04?hl=fr#
Si jamais vous avez des fichiers dont le nom commence ou se termine par des espaces, alors il faut ajouter « IFS=$'n' » au script ci-dessus entre le « while » et le « read ».
-- François Lafont
Bonjour,
J'avais posé une question plus ou moins connexe il y a quelques temps
ici même et on m'avait donné comme solution un truc dans le genre ça :
cat /home/francois/config/liste | while read i; do
echo "$i"
ln -s "$i" .
done
#--------------------------------------
Voici le fil en question :
https://groups.google.com/group/fr.comp.os.linux.configuration/browse_thread/thread/dbd5c5c059ec6e04?hl=fr#
Si jamais vous avez des fichiers dont le nom commence ou se termine par
des espaces, alors il faut ajouter « IFS=$'n' » au script ci-dessus
entre le « while » et le « read ».
cat /home/francois/config/liste | while read i; do echo "$i" ln -s "$i" . done #--------------------------------------
Voici le fil en question : https://groups.google.com/group/fr.comp.os.linux.configuration/browse_thread/thread/dbd5c5c059ec6e04?hl=fr#
Si jamais vous avez des fichiers dont le nom commence ou se termine par des espaces, alors il faut ajouter « IFS=$'n' » au script ci-dessus entre le « while » et le « read ».
-- François Lafont
Fabien LE LEZ
On Sun, 07 Aug 2011 17:07:31 +0200, François Valenduc :
#!/bin/bash cd /home/francois/Images/test rm -f *
C'est dangereux. Si jamais le répertoire /home/francois/Images/test n'est pas accessible (erreur de permission, etc.), tu vas supprimer les fichiers du répertoire courant.
Au minimum, rajoute "set -e" au début de ton script.
On Sun, 07 Aug 2011 17:07:31 +0200, François Valenduc
<francois.valenduc@tvcablenet.be>:
#!/bin/bash
cd /home/francois/Images/test
rm -f *
C'est dangereux. Si jamais le répertoire /home/francois/Images/test
n'est pas accessible (erreur de permission, etc.), tu vas supprimer
les fichiers du répertoire courant.
Au minimum, rajoute "set -e" au début de ton script.
On Sun, 07 Aug 2011 17:07:31 +0200, François Valenduc :
#!/bin/bash cd /home/francois/Images/test rm -f *
C'est dangereux. Si jamais le répertoire /home/francois/Images/test n'est pas accessible (erreur de permission, etc.), tu vas supprimer les fichiers du répertoire courant.
Au minimum, rajoute "set -e" au début de ton script.
François Valenduc
Le 07/08/11 20:13, Fabien LE LEZ a écrit :
On Sun, 07 Aug 2011 17:07:31 +0200, François Valenduc :
#!/bin/bash cd /home/francois/Images/test rm -f *
C'est dangereux. Si jamais le répertoire /home/francois/Images/test n'est pas accessible (erreur de permission, etc.), tu vas supprimer les fichiers du répertoire courant.
Au minimum, rajoute "set -e" au début de ton script.
Effectivement, j'y ai pensé un peu trop tard, mais heureusement, j'avais un backup ! Donc,j'ai rajouté ceci:
if test /home/francois/Images/test; then rm -f /home/francois/Images/test/* else mkdir /home/francois/Images/test/ fi
Le 07/08/11 20:13, Fabien LE LEZ a écrit :
On Sun, 07 Aug 2011 17:07:31 +0200, François Valenduc
<francois.valenduc@tvcablenet.be>:
#!/bin/bash
cd /home/francois/Images/test
rm -f *
C'est dangereux. Si jamais le répertoire /home/francois/Images/test
n'est pas accessible (erreur de permission, etc.), tu vas supprimer
les fichiers du répertoire courant.
Au minimum, rajoute "set -e" au début de ton script.
Effectivement, j'y ai pensé un peu trop tard, mais heureusement, j'avais
un backup ! Donc,j'ai rajouté ceci:
if test /home/francois/Images/test; then
rm -f /home/francois/Images/test/*
else
mkdir /home/francois/Images/test/
fi
On Sun, 07 Aug 2011 17:07:31 +0200, François Valenduc :
#!/bin/bash cd /home/francois/Images/test rm -f *
C'est dangereux. Si jamais le répertoire /home/francois/Images/test n'est pas accessible (erreur de permission, etc.), tu vas supprimer les fichiers du répertoire courant.
Au minimum, rajoute "set -e" au début de ton script.
Effectivement, j'y ai pensé un peu trop tard, mais heureusement, j'avais un backup ! Donc,j'ai rajouté ceci:
if test /home/francois/Images/test; then rm -f /home/francois/Images/test/* else mkdir /home/francois/Images/test/ fi
Nicolas George
François Valenduc , dans le message <4e3ee690$0$3946$, a écrit :
if test /home/francois/Images/test; then rm -f /home/francois/Images/test/*
Mauvais design. La manière correcte de programmer sous Unix n'est jamais de tester si quelque chose existe, toujours d'essayer de faire.
mkdir rep 2> /dev/null chdir rep || exit rm -f *
François Valenduc
, dans le message <4e3ee690$0$3946$426a74cc@news.free.fr>, a écrit :
if test /home/francois/Images/test; then
rm -f /home/francois/Images/test/*
Mauvais design. La manière correcte de programmer sous Unix n'est jamais de
tester si quelque chose existe, toujours d'essayer de faire.