#1 Le 30/12/2009, à 00:01
- Kshegzyaj
[Résolu] Script et emplacement
Salut, étant novice en scripts et autres formes de codage, je viens vous demander un peu d'aide...
Ayant mis à disposition sur mon compte DeviantArt ainsi que sur Gnome-Look quelques themes pour Docky 2, j'ai essayé d'inclure un petit script "d'installation" qui éviterait aux éventuels intéressés de chercher les bons dossiers (bien que ça ne soit pas compliqué à trouver).
(Si vous êtes intéressés, ça se trouve ici.)
Problème : on m'a dit que ça ne marche pas. Lors de mes tests avant d'uploader, j'avais effectué quelques petites recherches (ne trouvant pas grand chose). Ca marchait lors de mes tests, et je soupçonne l'un de mes essais à propos de mes trouvailles d'y être pour quelque chose...Sauf que c'étaient pour la plupart des sites et forums en anglais, et bien que je n'aie pas trop de mal avec l'anglais, c'était quand même assez spécialisé comme vocabulaire, et ajouté à la relative complexité pour un débutant, ça aide pas trop à comprendre, et encore moins à s'en rappeler !
Bref, je viens demander l'aide des spécialistes, je veux me rendre dans le dossier où est contenu le script (et les thèmes), sachant que l'utilisateur est suceptible d'extraire ce dossier un peu n'importe où. Y a-t-il une commande simple pour ça, sans avoir à utiliser du python (il me semble avoir lu ça...)
Et d'ailleurs, pouvez vous en profiter pour éventuellement me corriger, si j'ai fait d'autres erreurs, ou s'il existe une meilleure façon de faire
#!/bin/sh
#Install Inlaid and PlasticGlass themes for Docky in personnal folders
cd `dirname $0`
if [ ! -d ~/.local/share/docky/themes ];
then
mkdir ~/.local/share/docky/themes/
else
true
fi
cp -R Inlaid ~/.local/share/docky/themes/
cp -R PlasticGlass48 ~/.local/share/docky/themes/
cp -R PlasticGlass64 ~/.local/share/docky/themes/
cd ~/
killall docky
docky
Dernière modification par Kshegzyaj (Le 31/12/2009, à 16:38)
Netbook : Asus Eee 1215B / AMD C-60 / 4Go RAM / Radeon HD 6290 / Ubuntu 12.04
Laptop : Packard Bell EasyNote TM85 / Intel Core i5-430M / 4Go RAM / Windows Seven
Fixe : Packard Bell ? / Intel Pentium 4 / 2 Go RAM / Nvidia Geforce 6200LE / Windows XP et Ubuntu 12.04
Console : Nintendo Wii / IBM Broadway / 76 Mo RAM / ATI Hollywood / Debian Lenny
Hors ligne
#2 Le 30/12/2009, à 00:20
- nesthib
Re : [Résolu] Script et emplacement
ne servent à rien :
else
true
et
cd ~/
remplacer
killall docky
docky
par
killall docky && nohup docky &
peux-tu expliquer ce qui ne fonctionne pas (message d'erreur ?) ? le reste me semble correct
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#3 Le 30/12/2009, à 00:23
- FRUiT
Re : [Résolu] Script et emplacement
if [ ! -d ~/.local/share/docky/themes ];
then
mkdir ~/.local/share/docky/themes/
else
true
fi
=
[ -d ~/.local/share/docky/themes ] || mkdir ~/.local/share/docky/themes/
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#4 Le 30/12/2009, à 00:27
- sputnick
Re : [Résolu] Script et emplacement
Encore plus simple :
mkdir -p ~/.local/share/docky/themes
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#5 Le 30/12/2009, à 00:36
- Kshegzyaj
Re : [Résolu] Script et emplacement
Wow, c'est rapide
Donc ça pourrait ressembler à ça :
#!/bin/sh
#Install Inlaid and PlasticGlass themes for Docky in personnal folders
cd `dirname $0`
mkdir -p ~/.local/share/docky/themes
cp -R Inlaid ~/.local/share/docky/themes/
cp -R PlasticGlass48 ~/.local/share/docky/themes/
cp -R PlasticGlass64 ~/.local/share/docky/themes/
killall docky && nohup docky &
docky
@nesthib :
Voila, en terminal, avec mon script de départ :
kshegzyaj@kshegzyaj-desktop:~$ '/home/kshegzyaj/W.I.P/Gnome-Do/Docky 2 Pack/Themes/install'
dirname: opérande surnuméraire `2'
Pour en savoir davantage, faites: « dirname --help ».
cp: ne peut évaluer `Inlaid': Aucun fichier ou dossier de ce type
cp: ne peut évaluer `PlasticGlass48': Aucun fichier ou dossier de ce type
cp: ne peut évaluer `PlasticGlass64': Aucun fichier ou dossier de ce type
[Info 00:30:11.033] Docky version: bzr docky r975
[Info 00:30:11.048] Kernel version: 2.6.31.16
[Info 00:30:11.049] CLR version: 2.0.50727.1433
[Info 00:30:11.306] [DockServices] Dock services initialized.
[Info 00:30:11.478] Setting theme: PlasticGlass48
[Info 00:30:11.899] [PluginManager] Loaded "Trash".
[Info 00:30:11.923] [PluginManager] Loaded "Weather".
[Info 00:30:11.941] [PluginManager] Loaded "GMail".
Terminated
kshegzyaj@kshegzyaj-desktop:~$
Netbook : Asus Eee 1215B / AMD C-60 / 4Go RAM / Radeon HD 6290 / Ubuntu 12.04
Laptop : Packard Bell EasyNote TM85 / Intel Core i5-430M / 4Go RAM / Windows Seven
Fixe : Packard Bell ? / Intel Pentium 4 / 2 Go RAM / Nvidia Geforce 6200LE / Windows XP et Ubuntu 12.04
Console : Nintendo Wii / IBM Broadway / 76 Mo RAM / ATI Hollywood / Debian Lenny
Hors ligne
#6 Le 30/12/2009, à 00:40
- FRUiT
Re : [Résolu] Script et emplacement
cd "`dirname "$0"`"
Dernière modification par FRUiT (Le 30/12/2009, à 00:41)
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#7 Le 30/12/2009, à 00:44
- nesthib
Re : [Résolu] Script et emplacement
grillé par FRUIT → problème d'espace dans le nom de fichier, résolu par les guillemets.
sinon supprime le docky à la fin qui est en trop (déjà lancé par le nohup docky &)
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#8 Le 30/12/2009, à 00:53
- nesthib
Re : [Résolu] Script et emplacement
tu peux également remplacer le :
cd "`dirname "$0"`"
par :
cd "${0%/*}"
qui économise 2 processus (dirname et ``)
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#9 Le 30/12/2009, à 00:56
- Kshegzyaj
Re : [Résolu] Script et emplacement
Oui, en effet, j'ai remarqué qu'il était en trop, je viens de tester tout ça.
Maintenant, ça marche chez moi, en espérant que ça marchera aussi pour les autres.
J'ai compris le mkdir -p par un simple man mkdir, et moi qui me compliquais la vie...:lol: Mais le nohup, à quoi sert-il ? J'ai essayé le script en le supprimant, et je n'ai rien remarqué de différent, mis à part la non-création d'un fichier 'nohup.out'. Un peu gênant ce fichier, ça fait pas très propre je trouve.
Edit : je viens de me rappeller pourquoi j'avais mis cd ~/ à la fin du script : il était destiné à être lancé par un simple double-clic, plus que par terminal, vu que c'est pour simplifier au maximum la vie de l'utilisateur lambda. Sans ça, lorsqu'on ouvre un terminal après ça, on se retrouve dans le dossier du script, et pas dans le dossier personnel...D'ailleurs, ça ne semble pas fonctionner avec le script actuel.
#!/bin/sh
#Install Inlaid and PlasticGlass themes for Docky in personnal folders
cd "${0%/*}"
mkdir -p ~/.local/share/docky/themes
cp -R Inlaid ~/.local/share/docky/themes/
cp -R PlasticGlass48 ~/.local/share/docky/themes/
cp -R PlasticGlass64 ~/.local/share/docky/themes/
killall docky && docky &
cd ~/
Dernière modification par Kshegzyaj (Le 30/12/2009, à 01:04)
Netbook : Asus Eee 1215B / AMD C-60 / 4Go RAM / Radeon HD 6290 / Ubuntu 12.04
Laptop : Packard Bell EasyNote TM85 / Intel Core i5-430M / 4Go RAM / Windows Seven
Fixe : Packard Bell ? / Intel Pentium 4 / 2 Go RAM / Nvidia Geforce 6200LE / Windows XP et Ubuntu 12.04
Console : Nintendo Wii / IBM Broadway / 76 Mo RAM / ATI Hollywood / Debian Lenny
Hors ligne
#10 Le 30/12/2009, à 01:15
- nesthib
Re : [Résolu] Script et emplacement
Le nohup, à quoi sert-il ? J'ai essayé le script en le supprimant, et je n'ai rien remarqué de différent, mis à part la non-création d'un fichier 'nohup.out'. Un peu gênant ce fichier, ça fait pas très propre je trouve.
nohup sert à désolidariser la commande du terminal (tu peux tester ces trois commandes pour comprendre, en fermant à chaque fois le terminal)
gedit
gedit &
nohup gedit &
pour ne pas avoir le fichier nohup.out modifie la ligne en ceci :
killall docky && nohup docky >/dev/null &
Edit : je viens de me rappeller pourquoi j'avais mis cd ~/ à la fin du script : il était destiné à être lancé par un simple double-clic, plus que par terminal, vu que c'est pour simplifier au maximum la vie de l'utilisateur lambda. Sans ça, lorsqu'on ouvre un terminal après ça, on se retrouve dans le dossier du script, et pas dans le dossier personnel...D'ailleurs, ça ne semble pas fonctionner avec le script actuel.
c'est inutile car le fait d'appeler bash (ou sh) fait que ton changement de dossier a lieu dans un sous shell, si cela te change réellement ton emplacement dans un nouveau shell il y a un problème!
#!/bin/sh
#Install Inlaid and PlasticGlass themes for Docky in personnal folders
cd "${0%/*}"
mkdir -p ~/.local/share/docky/themes
cp -R Inlaid ~/.local/share/docky/themes/
cp -R PlasticGlass48 ~/.local/share/docky/themes/
cp -R PlasticGlass64 ~/.local/share/docky/themes/
killall docky && nohup docky >/dev/null &
exit 0
le petit exit 0 à la fin pour la forme (même si c'est en théorie facultatif)
Dernière modification par nesthib (Le 30/12/2009, à 01:16)
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#11 Le 30/12/2009, à 01:26
- sputnick
Re : [Résolu] Script et emplacement
Allé, après les fêtes faut manger sain et allégé
#!/bin/bash
#Install Inlaid and PlasticGlass themes for Docky in personnal folders
cd "${0%/*}" || exit 1
find {Inlaid,PlasticGlass48,PlasticGlass64} -type f -exec install -D {} ~/.local/share/docky/themes/{} \;
killall docky && nohup docky >/dev/null &
Dernière modification par sputnick (Le 30/12/2009, à 01:36)
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#12 Le 30/12/2009, à 01:49
- nesthib
Re : [Résolu] Script et emplacement
bien pensé le install
bon tu vas nous le dégoûter
tiens pour la route une ligne en moins :
#!/bin/bash
#Install Inlaid and PlasticGlass themes for Docky in personnal folders
find "${0%/*}"/{Inlaid,PlasticGlass48,PlasticGlass64} -type f -exec install -D "{}" ~/.local/share/docky/themes/{} \;
killall docky && nohup docky >/dev/null &
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#13 Le 30/12/2009, à 01:59
- sputnick
Re : [Résolu] Script et emplacement
@nesthib, Non car si tu donne en argument ( exemple arbitraire ) /usr/share/doc tu va avoir des repertoires du genre ~/.local/share/docky/themes/usr/share/doc/ et je suis pas sur que ca soit le but...
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#14 Le 30/12/2009, à 02:08
- nesthib
Re : [Résolu] Script et emplacement
oui je viens de voir ça!
sinon une question sur install, si tu as un répertoire vide dans la liste des fichiers à installer il est squizzé non?
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#15 Le 30/12/2009, à 02:11
- sputnick
Re : [Résolu] Script et emplacement
Oui, mais comme la il installe des thèmes, aucun intérêt AMHA à garder des répertoires vides...
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#16 Le 30/12/2009, à 02:14
- nesthib
Re : [Résolu] Script et emplacement
tu as sûrement raison, c'était juste de la curiosité (parfois certains programmes ont besoin qu'un répertoire existe, même vide)
en tout cas bravo pour ta solution (on ne pense jamais assez à utiliser find!)
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#17 Le 30/12/2009, à 11:36
- Kshegzyaj
Re : [Résolu] Script et emplacement
Ah oui, d'accord, j'avais déjà remarqué que fermer un terminal fermait le programme lancé, dans la mesure où le script était destiné à être lancé par double-clic, ça ne me dérangeait pas plus que ça, mais c'est une bonne idée, au cas-où quelqu'un veut quand même le lancer en terminal.
Par contre, mon problème persiste ! Je pensais au départ que ça venait du fait que le script était lancé sans terminal, mais là je l'avais lancé depuis le terminal, et en ouvrant un autre, je me retrouve dans le dossier du script :
kshegzyaj@kshegzyaj-desktop:~/W.I.P/Gnome-Do/Docky 2 Pack/Themes$ '/home/kshegzyaj/W.I.P/Gnome-Do/Docky 2 Pack/Themes/install'
find: "{Inlaid,PlasticGlass48,PlasticGlass64}": Aucun fichier ou dossier de ce type
kshegzyaj@kshegzyaj-desktop:~/W.I.P/Gnome-Do/Docky 2 Pack/Themes$ nohup: redirige stderr sur stdout
Et en plus la commande find semble ne pas fonctionner. Faut-il y rajouter quelque chose ? (J'ai pourtant bien vérifié qu'on se trouvait dans le bon dossier avant de lancer find, via la commande pwd)
Et puisqu'on y est, pourquoi rajouter || exit 1 ? Et à quoi correspond l'option -D de install (le manuel me parle de DEST...)
D'ailleurs, je remarque que je ne vous ai pas encore remercié (bien que ce ne soit pas encore totalement résolu), donc merci de prendre un peu de votre temps pour m'aider avec mes problèmes de débutant.
Dernière modification par Kshegzyaj (Le 30/12/2009, à 11:39)
Netbook : Asus Eee 1215B / AMD C-60 / 4Go RAM / Radeon HD 6290 / Ubuntu 12.04
Laptop : Packard Bell EasyNote TM85 / Intel Core i5-430M / 4Go RAM / Windows Seven
Fixe : Packard Bell ? / Intel Pentium 4 / 2 Go RAM / Nvidia Geforce 6200LE / Windows XP et Ubuntu 12.04
Console : Nintendo Wii / IBM Broadway / 76 Mo RAM / ATI Hollywood / Debian Lenny
Hors ligne
#18 Le 30/12/2009, à 11:53
- nesthib
Re : [Résolu] Script et emplacement
edit: en fait vire les guillemets autour des accolades
que te donne
ls '/home/kshegzyaj/W.I.P/Gnome-Do/Docky 2 Pack/Themes/install'
la commande find ne fontionne pas si tu te places manuellement dans ton dossier install et que tu la lance?
le … || exit 1 permet de stopper le script et d'envoyer un code de retour de 1 (erreur) si la commande … ne s'est pas bien déroulée (code de retour > 0). Ce qui ici est propre mais pas d'une grande utilité car a priori un cd sur le dossier de ton script ne peut pas mal se passer
si j'ai bien compris, je pense que -D permet de créer d'abord les dossiers puis de copier les fichiers mais sputnick t'expliquera ça mieux que moi
Dernière modification par nesthib (Le 30/12/2009, à 11:55)
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#19 Le 30/12/2009, à 18:32
- sputnick
Re : [Résolu] Script et emplacement
man install:
-D Créer tous les répertoires parents de dest sauf le dernier, puis copier source dans dest. Cette option est utile avec le premier format ci-dessus.
(Nouveauté dans fileutils-4.0)
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#20 Le 31/12/2009, à 16:37
- Kshegzyaj
Re : [Résolu] Script et emplacement
Oui, enfin man est une des rares commandes que je connaissais déjà, je voulais plutôt savoir ce que signifiait le 'dest'...
find semble ne toujours pas fonctionner, j'ai tenté de le lancer moi-même en me rendant dans le bon dossier, il fonctionnait correctement. J'ai ajouté pwd et ls afin de vérifier qu'on se trouvait bien dans le bon dossier, et que les dossiers sont présents, mais find renvoie toujours le même message d'erreur.
Je suis revenu à la version précédente du script, qui utilisait cp.
Dans la mesure où cette version fonctionne sans problème, je passe quand même en résolu
Netbook : Asus Eee 1215B / AMD C-60 / 4Go RAM / Radeon HD 6290 / Ubuntu 12.04
Laptop : Packard Bell EasyNote TM85 / Intel Core i5-430M / 4Go RAM / Windows Seven
Fixe : Packard Bell ? / Intel Pentium 4 / 2 Go RAM / Nvidia Geforce 6200LE / Windows XP et Ubuntu 12.04
Console : Nintendo Wii / IBM Broadway / 76 Mo RAM / ATI Hollywood / Debian Lenny
Hors ligne