Pages : 1
#1 Le 25/07/2008, à 19:50
- omnimax
basique problème pour un script
Bonjour,
j'aimerai développer un script nautilus (que je place dans .gnome2/nautilus script puis que je rends exécutable chmod +x nom du script, tout en relançant :nautilus --restart)
voici le script, c'est simplement pour "déplacer vers"
#!/bin/bash
destination=`zenity --title="Choisir un dossier" --file-selection --directory`
mv $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS $destination
exit
la boite de dialogue zenity apparait mais le déplacement ne marche pas...pourquoi? j'aimerai bien comprendre?
Dernière modification par greg2007 (Le 25/07/2008, à 20:03)
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#2 Le 25/07/2008, à 20:03
- genma
Re : basique problème pour un script
Que donne un "echo $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
Chez moi ça ne retourne rien ce qui veut dire que la variable n'est pas initialisé (vide)
"Lorsque tu as découvert le libre, tu sais que tu ne pourras plus jamais revenir en arrière".
Utilisateur d'Ubuntu depuis la version 4.10 !
Mon blog ? https://blog.genma.fr
Mon twitter? http://twitter.com/genma
Hors ligne
#3 Le 25/07/2008, à 20:04
- omnimax
Re : basique problème pour un script
chez moi non plus rien
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#4 Le 25/07/2008, à 20:05
- omnimax
Re : basique problème pour un script
comment fait-on pour l'initialiser?
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#5 Le 25/07/2008, à 20:54
- omnimax
Re : basique problème pour un script
je précise çest à partir d'un clic droit sur un fichier/ou dossier que j'enclenche le nautilus script...donc
le NAUTILUS_SCRIPT_SELECTED_FILE_PATHS devrait correspondre au fichier en question sur lequel j'ai ouvert un menu contextuel...
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#6 Le 25/07/2008, à 21:11
- omnimax
Re : basique problème pour un script
personne pour m'aider???
je rappelle le but de ma question faire un script "déplacer vers" avec la boite de dialogue de sélection de dossier de zenity pour le placer dans les nautilus scripts
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#7 Le 25/07/2008, à 21:36
- omnimax
Re : basique problème pour un script
ça y est j'ai trouvé, mais comment supprimer la boite de dialogue confirmant que le déplacement s'est bien passé"Everything went O.K"...j'ai déja testé en enlevant quelques lignes ...sans succès...voila l'original
#!/bin/bash
destination=$(zenity --file-selection --directory --title "Where to move files?")
echo $NAUTILUS_SCRIPT_SELECTED_URIS > ~/.gnome2/temp_move_list
for file in $(cat ~/.gnome2/temp_move_list); do \
file_name=$(echo $file | sed -e 's/file:\/\///g' -e 's/\%20/\ /g')
short_file_name=$(echo $file | sed -e 's#.*/##g' -e 's/\%20/\ /g')
if [[ -w $destination && -a $destination/$short_file_name ]]; then \
confirm=$(zenity zenity --question --text "Overwrite Files?"; echo $?)
if [[ $confirm == 0 ]]; then
mv "$file_name" $destination
if (( $? != 0 )); then
zenity --info --text "Something went wrong" --title "Failure"
else zenity --info --text "Everything went O.K." --title "Success"
fi
fi
elif [[ -w $destination ]]; then \
mv "$file_name" $destination
if (( $? != 0 )); then
zenity --info --text "Something went wrong" --title "Failure"
else zenity --info --text "Everything went O.K." --title "Success"
fi
else zenity --info --title "Failure" --text "$destination does either not\n exist or is not writable"
Dernière modification par greg2007 (Le 25/07/2008, à 21:36)
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#8 Le 25/07/2008, à 21:40
- omnimax
Re : basique problème pour un script
d'ailleurs je pensais pas qu'il fallait un script si compliqué pour faire cela???
if (( $? != 0 )) cela correspond à quoi?
Dernière modification par greg2007 (Le 25/07/2008, à 22:10)
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#9 Le 26/07/2008, à 00:14
- jpages
Re : basique problème pour un script
$? correspond à l'état de sortie de la dernière commande (ici, celles avec mv).
(0 si elle s'est bien déroulée, >0 en cas de problème).
La condition if (( $? != 0 )) est donc vérifiée si le déplacement de fichier a rencontré
un problème (ce que montrent bien les trois lignes suivantes).
"Notre liberté se bâtit sur ce qu'autrui ignore de nos existences." (Alexandre Soljénitsyne)
Hors ligne
#10 Le 26/07/2008, à 08:38
- soupaloignon
Re : basique problème pour un script
Un script avec cette fonction "envoyer vers" ici
http://www.soupaloignon.net/cmsmadesimple/index.php?page=envoyer-vers
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne
#11 Le 26/07/2008, à 17:06
- omnimax
Re : basique problème pour un script
j'aimerai bien ne pas avoir de message d'avertissement lorsque je déplace le fichier...pourquoi est-ce que lorsque je supprime les codes compris entre ***, le script ne marche pas pourtant il s'agit bien des lignes relatives à l'apparition des boites de dailogues?
deuxio que veut dire précisement le '!', ainsi que -w et -a? (je suis embetant mais j'aimerai savoir )
meric pour les autres scripts, ils sont fonctionnels, mais j'aimerai bien comprendre pour ce cas précis
#!/bin/bash
destination=$(zenity --file-selection --directory --title "Where to move files?")
echo $NAUTILUS_SCRIPT_SELECTED_URIS > ~/.gnome2/temp_move_list
for file in $(cat ~/.gnome2/temp_move_list); do \
file_name=$(echo $file | sed -e 's/file:\/\///g' -e 's/\%20/\ /g')
short_file_name=$(echo $file | sed -e 's#.*/##g' -e 's/\%20/\ /g')
if [[ -w $destination && -a $destination/$short_file_name ]]; then \
confirm=$(zenity zenity --question --text "Overwrite Files?"; echo $?)
if [[ $confirm == 0 ]]; then
mv "$file_name" $destination
if (( $? != 0 )); then
zenity --info --text "Something went wrong" --title "Failure"
else zenity --info --text "Everything went O.K." --title "Success"
fi
*** fi
elif [[ -w $destination ]]; then \
mv "$file_name" $destination
if (( $? != 0 )); then
zenity --info --text "Something went wrong" --title "Failure"
else zenity --info --text "Everything went O.K." --title "Success"
fi
else zenity --info --title "Failure" --text "$destination does either not\n exist or is not writable"
fi; \***
done
rm -f ~/.gnome2/temp_move_list
Dernière modification par greg2007 (Le 26/07/2008, à 17:14)
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#12 Le 26/07/2008, à 18:29
- yolsgens
Re : basique problème pour un script
deuxio que veut dire précisement le '!', ainsi que -w et -a? (je suis embetant mais j'aimerai savoir )
-w fichier
Vrai si le fichier existe et est accessible en écriture.! expr
Vrai si expr est fausse.expr1 -a expr2
Vrai si expr1 et expr2 sont toutes les deux vraies.
voilà, pense à regarder 'man test' pour les tests, car [ expression ] n'est qu'une notation pour `test expression`
Dernière modification par yolsgens (Le 26/07/2008, à 18:30)
yolsgens
Hors ligne
#13 Le 26/07/2008, à 18:45
- omnimax
Re : basique problème pour un script
merci bien mais j'avais déja regardé dans les man mais si j'indiquais seulement -w c'est calir que ça n'aurait pas su donner grand chose...
merci
seulement pour ce qui concerne les lignes d'avertissement que je veux enlever, comment dois je procéder de manière à ce que le script soit toujours fonctionnel?
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#14 Le 26/07/2008, à 19:05
- yolsgens
Re : basique problème pour un script
seulement pour ce qui concerne les lignes d'avertissement que je veux enlever, comment dois je procéder de manière à ce que le script soit toujours fonctionnel?
Je connais pas du tout zenity, mais si tu veux pas la ligne qui correspond à else zenity --info --text "Everything went O.K." --title "Success", t'as qu'à la supprimer, la structure de contrôle if marche comme ça:
if suite_de_commandes1
then
suite_de_commandes2
[ elif suite_de_commandes ; then suite_de_commandes ] ...
[ else suite_de_commandes ]
fi
le else est facultatif t'en as pas besoin, donc tu supprime la ligne et ça marchera toujours normalement
yolsgens
Hors ligne
#15 Le 26/07/2008, à 19:47
- omnimax
Re : basique problème pour un script
cela ne marche pas pourtant j'ai respecté la structure du script????
#!/bin/bash
destination=$(zenity --file-selection --directory --title "Where to move files?")
echo $NAUTILUS_SCRIPT_SELECTED_URIS > ~/.gnome2/temp_move_list
for file in $(cat ~/.gnome2/temp_move_list); do \
file_name=$(echo $file | sed -e 's/file:\/\///g' -e 's/\%20/\ /g')
short_file_name=$(echo $file | sed -e 's#.*/##g' -e 's/\%20/\ /g')
if [[ -w $destination && -a $destination/$short_file_name ]]; then \
confirm=$(zenity zenity --question --text "Overwrite Files?"; echo $?)
if [[ $confirm == 0 ]]; then
mv "$file_name" $destination
elif [[ -w $destination ]]; then \
mv "$file_name" $destination
fi
done
rm -f ~/.gnome2/temp_move_list
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne
#16 Le 26/07/2008, à 19:58
- yolsgens
Re : basique problème pour un script
fais gaffe j'vois deux if et un seul fi, ça risque pas de marcher!
yolsgens
Hors ligne
#17 Le 26/07/2008, à 20:05
- omnimax
Re : basique problème pour un script
ok merci je testerai demain
gnome-do ----shu ---shutdown : il est génial ce programme
Dernière modification par greg2007 (Le 26/07/2008, à 20:05)
14.04 unity et Linux Mint KDE 13 zsh-meilleur shell script fire
Hors ligne