#1 Le 12/12/2014, à 21:29
- PowaBanga
créer fichier texte en complètant un liste
Mon titre n'est sans doute pas très clair, mais j'aimerais créer automatiquement un script sur base de cette commande :
find $HOME/Images/wallpapers -type f | shuf -n1
La difficulté étant que j'aimerais insérer automatiquement du texte entre les lignes de la sorte suivante :
#!/bin/bash
gsettings set org.gnome.desktop.background picture-uri "file://Wallpaper1"
WALLPAPER=Wallpaper2
$WALLPAPER
$WALLPAPER()
{
gsettings set org.gnome.desktop.background picture-uri "file://$WALLPAPER"
sleep 450
WALLPAPER=Wallpaper3
}
$WALLPAPER()
{
gsettings set org.gnome.desktop.background picture-uri "file://$WALLPAPER"
sleep 450
WALLPAPER=Wallpaper4
}
$WALLPAPER()
{
gsettings set org.gnome.desktop.background picture-uri "file://$WALLPAPER"
sleep 450
WALLPAPER=Wallpaper5
}
rm -rf ~/monscript
echo "SCRIPT" -> ~/monscript
Je pense que les script expliquent parfaitement bien ce que je souhaite faire, mais je ne sais pas du tout comment, donc ça serait super top si quelqu'un savait m'aider :-)
Dernière modification par PowaBanga (Le 12/12/2014, à 21:30)
Hors ligne
#2 Le 13/12/2014, à 00:15
- Compte anonymisé
Re : créer fichier texte en complètant un liste
étrange le script, personnellement j'ai rien compris, c'est supposé faire quoi ? changer de fond d'écran aléatoirement tout les 450 secondes ?
si c'est ça je te propose celui là en remplacement
#!/bin/bash
while true
do
wallpaper=$(find $HOME/Images/wallpapers -type f | shuf -n1)
gsettings set org.gnome.desktop.background picture-uri "file://$wallpaper"
sleep 450
done
Et où veut tu rajouter des lignes ? Dans le script lui même ? Pourquoi faire ?
#3 Le 13/12/2014, à 14:15
- PowaBanga
Re : créer fichier texte en complètant un liste
ben en fait l'idée c'est de faire une playliste, pour être sûr qu'il ait affiché tous mes wallpaper une fois avant d'en remettre une qu'il a peut-être déjà mis une demi heure plus tot...
Hors ligne
#4 Le 13/12/2014, à 14:24
- Watael
Re : créer fichier texte en complètant un liste
salut,
il faudrait créer un tableau, en supprimer les fichiers utilisés, et le régénérer lorsqu'il est vide.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#5 Le 13/12/2014, à 14:48
- PowaBanga
Re : créer fichier texte en complètant un liste
c'est là toute ma question... Comment fait-on cela ?
Il faudrait pouvoir le faire en ligne de commande...
Dernière modification par PowaBanga (Le 13/12/2014, à 14:50)
Hors ligne
#6 Le 13/12/2014, à 14:58
- pingouinux
Re : créer fichier texte en complètant un liste
Bonjour,
En adaptant le script de Anonyme68
#!/bin/bash
while true
do
while read wallpaper
do
gsettings set org.gnome.desktop.background picture-uri "file://$wallpaper"
sleep 450
done < <(find $HOME/Images/wallpapers -type f | shuf)
done
Hors ligne
#7 Le 13/12/2014, à 15:10
- Watael
Re : créer fichier texte en complètant un liste
quelque chose comme ça :
#!/bin/bash
fillin(){
while read f; do liste+=( "$f" ); done < <(find $HOME/Images/wallpapers -type f | shuf)
}
while true
do
((${#liste[@]})) || fillin
gsettings set org.gnome.desktop.background picture-uri "file://${liste[0]}"
unset liste[0]
liste=( "${liste[@]}" )
sleep 450
done
je n'ai pas testé
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#8 Le 14/12/2014, à 13:04
- PowaBanga
Re : créer fichier texte en complètant un liste
Voilà qui est déjà beaucoup mieux que le script que j'utilisais auparavant, merci pour vos réponses.
Mais voilà, j'aime bien faire dans le détail, et l'inconvénient de votre commande, c'est que lorsque que je redémarrerais mon ordi, il relancera une nouvelle playliste au lieu de reprendre là ou il était. D'où l’intérêt de générer 'un fichier playliste'
Cependant vos réponses m'on permis d'élaborer une ébauche de script pouvant subvenir à mes besoins :
#!/bin/bash
creation ()
{
#------- Ici, il me manque une commande pour savoir quel wallpaper est actuellement affiché --------------#
#-- et limite, pour faire un truc parfait, il me faudrait savoir quoi faire si le wallpaper actuel -------#
#----------------- n'existe pas, ou n'est pas dans la playliste ------------------------------------------#
echo "#!/bin/bash
$WALLNOW=???" > .wallpaper
#-------
chmod +x .wallpaper
while true
do
while read wallpaper
do
#-----------------------------------------------------------
echo "
$wallpaper
}
$wallpaper ()
{
WALLNOW=$wallpaper
gsettings set org.gnome.desktop.background picture-uri "file://$WALLNOW"
sleep 5
" >> .wallpaper
#-----------------------------------------------------------
done < <(find $HOME/Images/wallpapers -type f | shuf)
done
#-----------
echo "
exit
}
$WALLNOW
" >> .wallpaper
#----------- Pour finir, il me faudrait une commande pour supprimer la 3ième et 4 ième ligne --#
#----------- de mon script afin d'éviter qu'il n'y ait des erreurs ----------------------------#
execution
}
execution ()
{
bash .wallpaper
rm -rf .wallpaper
creation
}
if [ -f "/home/lio/.wallpaper" ];then
echo "Le fichier existe !"
execution;
else
echo "Le fichier n'existe pas !"
creation
execution;
fi
Donc en résumé, il me manque principalement le moyen d'afficher le wallpaper actuel dans une variable, et celui de supprimer la ligne 3 et 4 de mon fichier texte :-)
Hors ligne