Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 tongue)

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

greg2007 a écrit :

deuxio que veut dire précisement le '!', ainsi que -w et -a? (je suis embetant mais j'aimerai savoir tongue)

extrait du man test a écrit :

-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` wink

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

greg2007 a écrit :

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! tongue


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 tongue

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