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 14/12/2011, à 21:00

cristobal78

(résolu) mettre un lanceur sur le bureau pour un script avec arguments

Bonjour à tous

j'ai déjà fait quelques petits scripts soit qui se lancent et exécutent une tache unique, sans mon intervention ou bien avec interruption dans au cours de son exécution histoire de répondre par ex. à un question  du style "voulez vous continuer (o/n) ?"
Pour eux j'ai mis des lanceurs sur le bureau, avec l'icône de mon choix etc... et ça marche.

Aujourd'hui je me heurte à un pb.
J'ai fait un script avec argument et ai mis un lanceur sur le bureau.
Quand je double click sur mon lanceur le terminal s'entrouvre pour se refermer aussitôt.

Pour mieux comprendre le phénomène j'ai ouvert un terminal et je suis allé dans le menu du terminal  :
édition > préférence profil > titre et commande  et j'ai activé l'option "quand la cde se termine " ---> "conserver le terminal ouvert"

Cela m'a permis de voir que mon script démarrait mais s'arrêtait aussitôt car il détectait que le paramètre  (argument ) est absent !!!

D'où ma question.

Comment fait on pour mettre sur le bureau un lanceur (qui marche !!!) pour un script auquel l'utilisateur doit obligatoirement passer un (ou plusieurs) paramètres ???

a+

Dernière modification par cristobal78 (Le 22/12/2011, à 00:03)


Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE

Hors ligne

#2 Le 15/12/2011, à 08:47

mikedafunk

Re : (résolu) mettre un lanceur sur le bureau pour un script avec arguments


Lubuntu 22.04 sur Lenovo AX81 et pas mal d'Amiga
Mon blog : http://mikedafunk.over-blog.org

Hors ligne

#3 Le 16/12/2011, à 01:06

cristobal78

Re : (résolu) mettre un lanceur sur le bureau pour un script avec arguments

salut mikedafunk

bah non ça ne m'a malheureusement pas aidé car j'ai lu des dizaines de post sur CCM et je n'ai rien vu qui se rapproche de ma question.
Ce que je veux faire c'est mettre un raccourci (lanceur ?) sur le bureau qui exécutera, qui lancera mon script sur un double clik.
Or ça ne marche pas. A la réflexion je ne vois pas comment ça pourrait marcher car dans le cas d'un script avec argument comment, à quel moment vais je pouvoir fournir mon ou mes arguments au script qui est de la forme "./monscript.sh   paramètre" ?

J'ai regardé aussi bien sur la doc ubuntu et n'ai rien vu non plus.

Je suis étonné que personne n'ait écrit de script avec un paramètre et n'ait eu envie de le lancer depuis le bureau par un double click sur l'icône !!!


Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE

Hors ligne

#4 Le 16/12/2011, à 01:19

Bousky

Re : (résolu) mettre un lanceur sur le bureau pour un script avec arguments

Tu peux utiliser zenity, qui affiche une boite de dialogue. Dans la commande du lanceur, il faut mettre quelque-chose comme

script.sh "$(zenity --entry --title="Mon Script" --text="argument 1")" "$(zenity --entry --title="Mon Script" --text="argument 2")" "$(zenity --file-selection --title="Mon Script : fichier")"

Le man donne plus de détails sur cette commande.

Dernière modification par Bousky (Le 16/12/2011, à 01:21)


Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)

Hors ligne

#5 Le 16/12/2011, à 10:17

Sciensous

Re : (résolu) mettre un lanceur sur le bureau pour un script avec arguments

sh -c "script.sh arg1 arg2"

ne marche pas ?


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#6 Le 16/12/2011, à 12:04

cristobal78

Re : (résolu) mettre un lanceur sur le bureau pour un script avec arguments

Aucune chance que ça marche puisque par définition même de la notion d'arguments les arg1 et arg2 ne sont  jamais les mêmes.
Il est  donc impossible de les mettre "en dur" dans la ligne de commande d'un lanceur du bureau.
Il faut trouver un moyen après le lancement de script.sh par double click sur l'icone du bureau de reprendre la main pour introduire arg1 et arg2.

Exemple de script simplissime à lancer depuis le bureau :

#!/bin/bash
# ce script s'apelle "compare"
# exemple : compare 5 9
# pour savoir si arg1 est plus grand ou plus petit que arg2 
if [ $1 -gt $2 ] ; then echo "Réponse  $1 est plus grand que $2" ;  fi
if [ $1 -lt  $2 ] ; then echo "Réponse $1 est plus petit que $2" ;  fi

compare 5  9
Réponse 5 est plus petit que 9.

si on met "compare" dans la ligne de commande du lanceur où veux tu mettre les arguments 5 et 9 dans ce même lanceur puisque ce sera tjrs des nbres différents.???

J'ai commencé à regarder l'idée de Bousky qui lance des boites. Je ne savais pas qu'un bash pouvait faire ça et ça a l'air super intéressant mais pas simple.
Déjà l'exemple de bousky, adapté à mon cas,  plante après l'introduction du 2-eme arg. J'ai du merder qq part.

Quant au man comme toujours très complet et abscons. Je vais tester les exemples du man -pour une fois qu'il y a des exemples dans le man !!!- et essayer de me familiariser avec zenity.

Dernière modification par cristobal78 (Le 16/12/2011, à 12:08)


Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE

Hors ligne

#7 Le 16/12/2011, à 14:45

Postmortem

Re : (résolu) mettre un lanceur sur le bureau pour un script avec arguments

Salut,
Pour récupérer les arguments interactivement, voilà un exemple de script :

#!/bin/bash
i=0
declare -a MY_TAB_ARGS

recup_args()
{
   (( i++ ))
   printf "\nEntrer l'argument $i :\n"
   read
   MY_TAB_ARGS+=( "$REPLY" )
}

while :
do
   printf "\nAvez vous des arguments à passer [N/o] ? "
   read REP
   [[ $REP != [oO] ]] && break
   recup_args
done

(( ${#MY_TAB_ARGS[@]} )) && set "${MY_TAB_ARGS[@]}"

printf "\n\$1 vaut : $1\n"
printf "\$2 vaut : $2\n"

bash

Le bash à la fin permet à la fenêtre de terminal de rester ouverte après l'exécution du script.

Tu créés ensuite un lanceur de type "Application dans un terminal" pour lancer le script (que tu auras rendu exécutable auparavant)
Voilà ce que ça donne à l'exécution :

Avez vous des arguments à passer [N/o] ? o

Entrer l'argument 1 :
toto   titi

Avez vous des arguments à passer [N/o] ? o

Entrer l'argument 2 :
2ème argument

Avez vous des arguments à passer [N/o] ? n

$1 vaut : toto   titi
$2 vaut : 2ème argument

Dernière modification par Postmortem (Le 16/12/2011, à 14:53)


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#8 Le 16/12/2011, à 14:52

twocats

Re : (résolu) mettre un lanceur sur le bureau pour un script avec arguments

Dans le même genre un petit script avec Zenity :

#!/usr/bin/env bash

VERSION=0.1

FIRST_ARG=$(zenity --title="Compare v. ${VERSION}" --entry --text "Entrez la valeur du premier argument :") || exit
SECOND_ARG=$(zenity --title="Compare v. ${VERSION}" --entry --text "Entrez la valeur du second argument :") || exit

if [[ ! ${FIRST_ARG} || ! ${SECOND_ARG} ]]
then
    zenity --error --title="Compare v. ${VERSION}" --text="Ce script a besoin de 2 arguments pour s'éxécuter.\nArrêt du programme."
    exit 1
fi

if [ ${FIRST_ARG} -gt ${SECOND_ARG} ]
then
    zenity --info --title="Compare v. ${VERSION}" --text "${FIRST_ARG} est plus grand que ${SECOND_ARG}." || exit
elif [ ${FIRST_ARG} -lt ${SECOND_ARG} ]
then
    zenity --info --title="Compare v. ${VERSION}" --text "${FIRST_ARG} est plus petit que ${SECOND_ARG}." || exit
elif [ ${FIRST_ARG} -eq ${SECOND_ARG} ]
then
    zenity --info --title="Compare v. ${VERSION}" --text "${FIRST_ARG} est égal que ${SECOND_ARG}." || exit
fi

La réponse est 42

Hors ligne

#9 Le 16/12/2011, à 16:21

cristobal78

Re : (résolu) mettre un lanceur sur le bureau pour un script avec arguments

Merci à vous les cadors du bash !

En vous lisant je mesure la distance qui nous sépare smile en connaissances bash (car apparemment Postmortem et moi sommes voisins géographiques. smile )

Grâce à bousky je me suis mis à lire sur zenity que j'ignorais complètement.
Je me suis ainsi aperçu en étudiant  et en testant les exemples du man -et j'en suis plutôt fier tongue-  que l'un d'entre eux comportait surement  une erreur :

Show an icon in the notification area
           

  zenity --notification --window-icon=update.png --text "System update necessary!"

En effet si le "!" est le dernier caractère ça plante. Quand on "échappe" le ! par un \ alors ça marche : "....necessary "\!"""
Vous confirmez ???

Bien l'exemple de postmortem : ça va me forcer à me plonger dans les fonctions que  je maitrise très mal.

Enfin merci à twocats pour son son script basé sur zenity qui va me faire progresser.

Zenity m'ouvre de belles perspectives. Avec tout ça je vais pouvoir reprendre certains de mes anciens scripts écrits en style "lourdaud" !!!

Dernière modification par cristobal78 (Le 25/01/2017, à 01:45)


Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE

Hors ligne

#10 Le 16/12/2011, à 17:16

Postmortem

Re : (résolu) mettre un lanceur sur le bureau pour un script avec arguments

HS :

cristobal78 a écrit :

car apparemment Postmortem et moi sommes voisins géographiques.

Ex-voisin géographique, je vais mettre à jour mon profil. J'ai quitté cette région de fous qu'est l'Ile de France ! Quoique le 78, y-a bien pire.

Sinon, pour en revenir au sujet, c'est vrai que les boites zenity, ça fait plus classe !


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#11 Le 16/12/2011, à 17:26

Postmortem

Re : (résolu) mettre un lanceur sur le bureau pour un script avec arguments

cristobal78 a écrit :

Show an icon in the notification area
              zenity --notification --window-icon=update.png --text "System update necessary!"
En effet si le "!" est le dernier caractère ça plante. Quand on "échappe" le ! par un \ alors ça marche : "....necessary "\!"""
Vous confirmez ???

Je pense pas que ça soit un bug, ça doit être dû à l'expansion de l'historique. Ça doit se produire seulement si tu lances la commande directement dans un terminal. Si tu la lance dans un script, il ne devrait pas y avoir ce problème


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#12 Le 17/12/2011, à 15:53

degolarson

Re : (résolu) mettre un lanceur sur le bureau pour un script avec arguments

bonjour
je ne parviens pas à faire fonctionner un lanceur Skype avec l'image caméra à l'endroit
je suis allé regarder sur les posts mais je ne m'en sors pas
si je savais comment installer un lanceur qui remplace le lanceur actuel de skype peut être que ça marcherait, c'est pourquoi je poste ici
voici le contenu de mon dernier post :

degolarson a écrit :

je suis allé voir
http://forums.linuxmint.com/viewtopic.php?f=49&t=47646
le gonze Denzil   il a viré sa version de skype et téléchargé depuis Medibuntu ? mais non il l'avait déjà
et il est allé modifier des fichiers :

Denzil a écrit :

    I have the Medibuntu version installed already. The file /usr/bin/skype contained this
    Code: Select all
        #!/bin/sh
        LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so  /usr/bin/skype.real "$@"

    So I deleted LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so, to leave just this,
    Code: Select all
        #!/bin/sh
        /usr/bin/skype.real "$@"
    and the image is now the right way round. Looks like it was trying to fix a problem that wasn't there. Maybe it is needed for some webcams and not others.

j'avoue que je n'ose pas éditer et modifier  des fichiers sans trop comprendre , en plus il ne dit pas sous quelle distribution il tourne
je vais lui écrire dans mon mauvais anglais pour lui demander comment il fait les modifs ,
pour moi ce serait gedit "chemin du fichier" qq'un peut confirmer ?
@+

merci

Dernière modification par degolarson (Le 17/12/2011, à 16:22)


2018-2020 Xubuntu 18.04 LTS 64b    Nov 2020 Debian Buster Laptop Asus PRO79IJ-TY025E      SSD 250Go   RAM 2.9Go puis 4Go en sept2020    2 x Pentium (R) Dual-Core T4200  2GHz    année 2009    LiveboxSosh
IntelMobile4SeriesGMA500, wifi  Atheros 9285   
Doucement, nous sommes pressés 
Les jeunes sont ce qu'en font les vieux cons (Pierre Desproges )

Hors ligne

#13 Le 21/12/2011, à 15:45

cristobal78

Re : (résolu) mettre un lanceur sur le bureau pour un script avec arguments

@ postmortem et @ twocats @ bousky ...

j'ai lu et testé vos deux scripts qui marchent (évidemment  smile ) mais qui sont tous les deux des scripts au cours de l'exécution desquels on est amené interactivement à saisir des arguments.
Il est clair que de tels scripts ne posent aucun problème pour être lancés depuis le bureau ... puisque justement 'ils n'ont pas d'arguments du style $1, $2.

Je sais écrire ce genre de script interactifs en style lourdaud et maintenant grâce à l'exemple de twocats je sais -un peu- me servir de zenity pour écrire ce style de scripts à saisie interactive. Donc merci encore à vous 2.

MAIS

mon pb initial n'était pas celui là. tongue

Je rappelle mon post # 1 :

"...Aujourd'hui je me heurte à un pb.
J'ai fait un script avec argument et l'ai mis un lanceur sur le bureau.
Quand je double click sur mon lanceur le terminal s'entrouvre pour se refermer aussitôt...."

Ayant lu que, à tort ou à raison, il fallait privilégier les scripts avec arguments $1, $2 etc... plutôt que des scripts au cours desquels on demande de saisir des data, je m'étais mis à modifier mes scripts existants dans ce style. Et quand j'ai voulu les lancer depuis un lanceur du bureau patatras... d'où mon post.

Mes conclusions pour l'instant :

1- impossible de créer un lanceur pour un script du genre :  change_name   old_name   new_name
c'est çà dire avec des arguments à droite du nom du script.

2- quitte à faire un script sans arguments il est astucieux d'utiliser zenity qui servira à saisir des arguments interactivement et en plus dans de belles et propres fenêtres de dialogue. C'est simple et efficace.


Si on me répond OUI à ces 2 remarques je mettrai RÉSOLU dans l'entête de mon post #1. smile

a+


Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE

Hors ligne

#14 Le 21/12/2011, à 22:45

Bousky

Re : (résolu) mettre un lanceur sur le bureau pour un script avec arguments

cristobal78 a écrit :

impossible de créer un lanceur pour un script du genre :  change_name   old_name   new_name

C'est justement ce que je te proposais : un script qui prend des arguments, et le lanceur qui demande les arguments (sans modification du script) avant de lancer le script.


Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)

Hors ligne

#15 Le 22/12/2011, à 13:45

Postmortem

Re : (résolu) mettre un lanceur sur le bureau pour un script avec arguments

Salut,

cristobal78 a écrit :

Quand je double click sur mon lanceur le terminal s'entrouvre pour se refermer aussitôt

Pour ça, il suffit de rajouter la ligne suivante à la fin du script :

bash

Pour les arguments, tu peux les mettre dans le lanceur en dur... Ça sera donc toujours les mêmes... Ou il faut les demander interactivement (soit en modifiant ton script, soit dans le lanceur comme l'as dit Bousky dans le post #4)
Sinon, moi pas avoir compris ce que tu veux !

EDIT : en fait, je viens de tester la solution de Bousky et ça ne fonctionne pas depuis un lanceur. Je me retrouve avec un argument 1 qui vaut : $(zenity --entry --title= ou $(zenity --entry --title='Mon Script' --text='argument 1')

Dernière modification par Postmortem (Le 22/12/2011, à 14:32)


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#16 Le 22/12/2011, à 14:40

Bousky

Re : (résolu) mettre un lanceur sur le bureau pour un script avec arguments

Postmortem a écrit :

je viens de tester la solution de Bousky et ça ne fonctionne pas depuis un lanceur. Je me retrouve avec un argument 1 qui vaut : $(zenity --entry --title= ou $(zenity --entry --title='Mon Script' --text='argument 1')

Désolé, j'oublie parfois que les lanceurs n'offrent pas un vrai shell, il faut donc mettre :

sh -c 'mon/script.sh "`zenity …`" … '

Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)

Hors ligne

#17 Le 02/01/2012, à 17:29

ar barzh paour

Re : (résolu) mettre un lanceur sur le bureau pour un script avec arguments

est-ce que cela répond un peu à la demande ?

je suis en 11.10
je créé un lanceur de type "Emplacement" en tapant dans un terminal
gnome-desktop-item-edit --create-new ~/Bureau
Type : Emplacement
Nom: essai
Commande : choisir le script dans le répertoire voulu
soit pou moi: file:///media/Data_c3/shell/es1
le contenu de mon script es1 est le suivant:
#!/bin/sh
#script d'essai
echo "donner un nom de fichier se trouvant dans /media/Dats_c3/shell"
read p1
              gdialog --msgbox $p1 10 40
              cd /media/Data_c3/shell
              ls -ails $p1
              gdialog --msgbox $p1 10 40
exit 0

un clic sur le lanceur demande si on veut afficher ou exécuter le script dans un terminal
répondre exécuter dans un terminal
donner un nom de fichier existant , on a le résultat de la commande

Dernière modification par ar barzh paour (Le 02/01/2012, à 17:40)


PC          : B760M DS3H DDR4,  12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne