Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

#1 Le 30/12/2009, à 01: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). cool
(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 big_smile

#!/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, à 17: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, à 01: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 : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#3 Le 30/12/2009, à 01: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) http://tinyurl.com/yzm7cee
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne

#4 Le 30/12/2009, à 01:27

sputnick

Re : [Résolu] Script et emplacement

Encore plus simple :
mkdir -p ~/.local/share/docky/themes


bashfr.org(random);
<arciks1994> dou tu connai qel age j'ai ?

Hors ligne

#5 Le 30/12/2009, à 01:36

Kshegzyaj

Re : [Résolu] Script et emplacement

Wow, c'est rapide big_smile
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, à 01:40

FRUiT

Re : [Résolu] Script et emplacement

 
 
cd "`dirname "$0"`"

Dernière modification par FRUiT (Le 30/12/2009, à 01:41)


Neon Suite by FRUiT (kde4.6) http://tinyurl.com/yzm7cee
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne

#7 Le 30/12/2009, à 01: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 : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#8 Le 30/12/2009, à 01: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 : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#9 Le 30/12/2009, à 01: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, à 02: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, à 02:15

nesthib

Re : [Résolu] Script et emplacement

Kshegzyaj a écrit :

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 &
Kshegzyaj a écrit :

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, à 02:16)


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#11 Le 30/12/2009, à 02:26

sputnick

Re : [Résolu] Script et emplacement

Allé, après les fêtes faut manger sain et allégé wink

#!/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, à 02:36)


bashfr.org(random);
<arciks1994> dou tu connai qel age j'ai ?

Hors ligne

#12 Le 30/12/2009, à 02:49

nesthib

Re : [Résolu] Script et emplacement

bien pensé le install wink
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 : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#13 Le 30/12/2009, à 02: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...


bashfr.org(random);
<arciks1994> dou tu connai qel age j'ai ?

Hors ligne

#14 Le 30/12/2009, à 03: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 : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#15 Le 30/12/2009, à 03: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...


bashfr.org(random);
<arciks1994> dou tu connai qel age j'ai ?

Hors ligne

#16 Le 30/12/2009, à 03: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 wink (on ne pense jamais assez à utiliser find!)


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#17 Le 30/12/2009, à 12: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. big_smile

Dernière modification par Kshegzyaj (Le 30/12/2009, à 12: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, à 12: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, à 12:55)


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#19 Le 30/12/2009, à 19: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)


bashfr.org(random);
<arciks1994> dou tu connai qel age j'ai ?

Hors ligne

#20 Le 31/12/2009, à 17: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 smile


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

Haut de page ↑