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/10/2014, à 21:21

Compte anonymisé

Raccourcis vers fichier .sh (Bash)

Bonsoir à tous

J'ai fait un petit script (à l'aide de Tiramiseb et d'autre me permettant de détecter automatiquement Captvty et de l'installer comme je le souhaite

voici le script

#!/bin/bash
# indique au système que l'argument qui suit est le programme utilisé pour exécuter ce fichier.
# En cas général les "#" servent à faire des commentaires comme ici

version=$(wget -q -O- http://captvty.fr/ | grep -o -m 1 'captvty-.*.zip' | sed 's/captvty-\(.*\).zip/\1/')
wget -q -A.html -O/tmp/captvty-$version.html  http://captvty.fr/?captvty-$version.html  && wget -q -A.zip -O/tmp/captvty-$version.zip http://captvty.fr/?captvty-$version.zip && rm /tmp/captvty-$version.html
mkdir -p ~/Captvty/captvty-$version
mv -iv /tmp/captvty-$version.zip ~/Captvty/captvty-$version/
unzip -q -d ~/Captvty ~/Captvty/captvty-$version/captvty-$version.zip 

Ce fichier s'appelle "Captvty-Install-Auto.sh" et je l'ai placé dans ~/ après avoir cocher (autoriser l'application du fichier comme un programme)

J'ai fait un raccourcis sur le bureau (Captvty-Install-Auto.desktop) / Captvty (Install Auto) où j'ai mit ceci

[Desktop Entry]
Comment[fr_FR]=Intallation automatique de Captvty
Exec=bash '~/Captvty-Install-Auto.sh'
GenericName[fr_FR]=Description
Icon=~/Captvty/Icone/Captvty.exe_14_32512_0_10_48x48x32.png
MimeType=
Name[fr_FR]=Captvty (Install Auto)
Path=bash ~/Captvty-Install-Auto.sh
Terminal=false
TerminalOptions=
Type=Application
Version=1.0

Malheureusement j'ai toujours l'erreur

Message_erreur a écrit :

Erreur lors du lancement de l'application.
Détails : Le changement de répertoire « bash ~/Captvty-Install-Auto.sh » a échoué (Aucun fichier ou dossier de ce type)

Quelqu'un pourrait-il m'aider ?

#2 Le 26/10/2014, à 10:43

Banhart

Re : Raccourcis vers fichier .sh (Bash)

Salut,

Visiblement tu veux lancer ton script bash ~/Captvty-Install-Auto.sh et le shell ne trouve pas ton script ~/Captvty-Install-Auto.sh
Deux options :
- soit tu changes le chemin de lancement de ton script
- soit tu fait un cd dans le répertoire et tu laisses le bash ~/Captvty-Install-Auto.sh

Dernière modification par Banhart (Le 26/10/2014, à 10:44)

Hors ligne

#3 Le 26/10/2014, à 12:38

Compte anonymisé

Re : Raccourcis vers fichier .sh (Bash)

Banhart a écrit :

Salut,

Visiblement tu veux lancer ton script bash ~/Captvty-Install-Auto.sh et le shell ne trouve pas ton script ~/Captvty-Install-Auto.sh
Deux options :
- soit tu changes le chemin de lancement de ton script
- soit tu fait un cd dans le répertoire et tu laisses le bash ~/Captvty-Install-Auto.sh

ça ne m'avance à rien.. ce que je souhaite c'est un raccourci à mettre sur le bureau

#4 Le 27/10/2014, à 10:40

tiramiseb

Re : Raccourcis vers fichier .sh (Bash)

Salut,

Le problème est explicite : Le changement de répertoire « bash ~/Captvty-Install-Auto.sh » a échoué.

Tu lui as dit de s'exécuter dans un répertoire qui s'appellerait « bash ~/Captvty-Install-Auto.sh » en lui donnant ça comme valeur de "Path". Soit tu supprimes la lignes "Path", soit tu mets, par exemple, "/tmp", ou alors "~"...

Le path, c'est l'endroit où le système doit se placer pour exécuter le script.



PS : c'est dommage de ne pas avoir suivi toutes nos explications dans l'autre discussion, ton script serait plus joli s'il était plus simple...

Hors ligne

#5 Le 28/10/2014, à 19:15

Compte anonymisé

Re : Raccourcis vers fichier .sh (Bash)

tiramiseb a écrit :

Tu lui as dit de s'exécuter dans un répertoire qui s'appellerait « bash ~/Captvty-Install-Auto.sh » en lui donnant ça comme valeur de "Path". Soit tu supprimes la lignes "Path", soit tu mets, par exemple, "/tmp", ou alors "~"...

Ok, mais le problème que j'ai également eut, c'est qu'il n’accepte plus le "~" dans les raccourcis alors qui l'accepte dans le terminal

J'ai également mis un raccourci dans /usr/bin afin de pouvoir l’exécuter via un terminal

tiramiseb a écrit :

PS : c'est dommage de ne pas avoir suivi toutes nos explications dans l'autre discussion, ton script serait plus joli s'il était plus simple...

C'est vrai que le tien est plus simple et plus jolie mais il ne répond pas à ce que je souhaite
en tous les cas, un grand merci de toutes tes explications sur les commandes, ce que tel ou tel chose veut dire.. sans metalux, melixgaro et toi, jamais j'aurai su faire ce que j'ai fait

Dernière modification par NéoUbuntonien (Le 28/10/2014, à 19:21)

#6 Le 28/10/2014, à 21:53

melixgaro

Re : Raccourcis vers fichier .sh (Bash)

Salut,

au lieu de /usr/bin il faudrait utiliser /usr/local/bin. il me semble que ce sont les préconisations officielles. Normalement, /usr/local/bin est par défaut dans ta variable PATH. Ou alors, s'il n'y a qu'un seul compte sur ta machine, tu te fais un dossier bin dans ton home, tu y mets tous tes scripts maisons et et tu ajoute /home/${USER}/bin à PATH.

Dernière modification par melixgaro (Le 28/10/2014, à 21:54)


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#7 Le 28/10/2014, à 22:25

Compte anonymisé

Re : Raccourcis vers fichier .sh (Bash)

Que veux-tu dire en parlant de "variable PATH", la variable du lanceur ?
Ce qui est bien dans la config actuel c'est que je peux lancer le script directement par le terminal en donnant son nom sans aucune autre information
Si non, le dossier PATH dans mon home est une très bonne idée mais dans ce cas, il sera impossible de les utiliser directement via le terminal
Actuellement les fichiers sont dans la racine de mon home et j'ai mit les raccourcis dans /usr/bin.
Est-ce que si je met ces raccourcis dans /usr/local/bin je pourrais lancer les fichiers directement sur le terminal ?

#8 Le 28/10/2014, à 23:36

melixgaro

Re : Raccourcis vers fichier .sh (Bash)

D'accord, désolé je pensais que tu avais vu la variable PATH (étant donné que tu joues avec les scripts et bash en ce moment).

  • Prolégomènes

    Donc ouvre un terminal et tape :

    echo ${PATH}

    chez moi j'ai un truc qui ressemble à ceci

    /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

    Tu vois que c'est une succession de dossier, séparés par un signe ':'.
    À chaque fois que je lance une commande dans le terminal, le shell (en l’occurrence bash) cherche dans les dossiers de la variable PATH où se trouve l'exécutable. La recherche se fait dans l'ordre des dossiers. Donc d'abord /usr/lib/lightdm/lightdm puis /usr/local/sbin puis ...

    Example avec firefox, l'exécutable se trouve dans /usr/bin. Le shell ne cherchera pas dans /sbin, /bin, /usr/games et /usr/local/games.

  • Personnalisation de la variable
    Tu peux créer un dossier bin dans ton home

    /home/${USER}/bin

    y mettre tes scripts (ou un lien symbolique vers eux) après les avoir rendu exécutables (en graphique ou avec chmod u+x).

    Évidemment, si tu t'arrêtes là (et tu l'as souligné), tu ne pourras pas lancer tes programmes de n'importe où par le terminal. Mais si tu fais

    export PATH=~/bin:${PATH}

    alors la recherche des exécutables par le shell se fera aussi dans ton dossier ~/bin.

    Si tu fermes le terminal et le réouvre, il faudra remodifier la variable PATH. Pour ajouter de façon permanente ~/bin à la variable PATH, il faut ajouter la ligne

    export PATH=~/bin:${PATH}

    dans le fichier ~/.bashrc

  • Nota

    Tu vois que l'ordre des dossiers dans la variable PATH. Des fois, pour des raisons x ou y, tu installes deux versions d'un programme (ex : libre office). Si tu installes la nouvelle version d'un programme dans un dossier situé à la fin de la variable PATH, tu ne pourras pas le lancer en tapant simplement son nom car c'est l'ancienne version qui prendra le dessus. Il faudra taper explicitement son chemin, du genre /chemin/a/la/fin/programme_nouveau

  • Nota (bis)
    Pour répondre explicitement à la question : oui si tu mets le lien dans /usr/local/bin ça marchera de la façon qu'en mettant dans /usr/bin (si ta variable PATH a une valeur standard, c'est-à-dire contient /usr/local/bin).

Dernière modification par melixgaro (Le 28/10/2014, à 23:38)


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#9 Le 29/10/2014, à 00:28

Gaara

Re : Raccourcis vers fichier .sh (Bash)

Salut,
Sinon tu peux utiliser LinkIt !


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#10 Le 29/10/2014, à 00:31

Compte anonymisé

Re : Raccourcis vers fichier .sh (Bash)

Merci melixgaro

En fouillant un peu, j'ai trouvé ceci :
6.1 Variables d'environnement au niveau session utilisateur

doc-ubuntu a écrit :
  • ~/.profile - C'est probablement le meilleur endroit pour placer une définition de variable d'environnement. En effet, il est exécuté automatiquement par le gestionnaire de connexion lors du démarrage d'une session graphique, mais aussi lors du démarrage d'une session en mode console texte.

  • ~/.bash_profile ou ~/.bash_login - Si l'un de ces fichiers existe, il sera exécuté par Bash préférentiellement à ~/.profile lors d'une connexion sur une console. (Bash utilisera ~/.bash_profile de préférence à ~/.bash_login). Cependant, ces fichiers n'auront par défaut aucune influence sur une session en mode graphique.

  • ~/.bashrc - Du fait de la manière dont Ubuntu configure par défaut les divers fichiers de scripts, c'est sans doute l'endroit le plus facile pour définir des variables. La configuration par défaut garantit a peu près que ce fichier sera exécuté à chaque invocation de *bash* ainsi que lors de la connexion à l'environnement graphique. Cependant du point de vue des performances, ce n'est pas l'idéal car les variables seront inutilement redéfinies à chaque fois. (NdT : à chaque fois que vous ouvrez un terminal par exemple?)

Si je comprend bien, .profile est privilégié à .bashrc Qu'en penses-tu ?

Dernière modification par NéoUbuntonien (Le 29/10/2014, à 00:34)

#11 Le 29/10/2014, à 00:43

Compte anonymisé

Re : Raccourcis vers fichier .sh (Bash)

Gaara a écrit :

Salut,
Sinon tu peux utiliser LinkIt !

C'est sympa mais je préfère les méthodes qui me permettent de mieux comprendre ubuntu et son fonctionnement

#12 Le 29/10/2014, à 00:49

melixgaro

Re : Raccourcis vers fichier .sh (Bash)

à NéoUbuntonien
j'avoue que ces fichiers profile/bashrc/bash_profile/bash_login m'ont toujours pris la tête et je n'ai jamais pris le moment de bien regarder qui fait quoi ou comment. Je n'utilise que .bashrc (sauf pour un petit truc une fois) et ça a toujours eu le comportement que j'attendais. Donc je ne peux pas vraiment te répondre. Peut-être tiramiseb pourra te répondre, vu qu'il est certainement plus qualifié que moi pour ce genre de subtilité big_smile


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#13 Le 29/10/2014, à 11:39

tiramiseb

Re : Raccourcis vers fichier .sh (Bash)

Pompompom,

Désolé pour le délai de ma réponse, mes journées c'est plutôt rails/montants/placo qu'ordinateur, ces derniers temps smile

Alors, pour le path, la config du shell, tout ça tout ça, c'est particulier car on est avec un lanceur et non avec un shell.
Plutôt que de t'emmerder avec tous ces machins, je propose la chose suivante :

1/ tu mets ton script dans /usr/local/bin
2/ tu utilises la ligne suivante dans ton blabla.desktop :

Exec=/usr/local/bin/Captvty-Install-Auto.sh

A priori ça devrait fonctionner comme ça.

----

Petite digression :

C'est vrai que le tien est plus simple et plus jolie mais il ne répond pas à ce que je souhaite

Je parlais de t'inspirer de ce qu'on a proposé pour simplifier le tien.
Par exemple le téléchargement de la page d'accueil (pour débloquer la possibilité de télécharger) directement dans /dev/null plutôt que de créer un fichier. Mais même ça, ce n'est pas nécessaire : cette page d'accueil est déjà téléchargée lors de la récupération du numéro de version smile
Par ailleurs, pas besoin de passer par /tmp si tu veux garder le zip : mets-le directement au bon emplacement !
Enfin, plutôt que de récupérer la version pour ensuite "retaper" le nom du fichier, vu que grep garde le nom du fichier, eh bien bosse directement avec le nom du fichier.


Je pense que le script suivant répondrait à ce que tu souhaites, j'ai juste fait une modification : plutôt que de créer un répertoire par version, avec dans chaque répertoire de chaque version uniquement un fichier ".zip", mettre tous les ".zip" dans le même répertoire :

#!/bin/bash
mkdir -p ~/Captvty/archives
fichier=$(wget -q -O- http://captvty.fr/ | grep -o -m 1 'captvty-.*\.zip')
wget -q -O ~/Captvty/archives/$fichier http://captvty.fr/?$fichier
unzip -q -d ~/Captvty ~/Captvty/archives/$fichier

Hors ligne

#14 Le 29/10/2014, à 18:42

Compte anonymisé

Re : Raccourcis vers fichier .sh (Bash)

@melixgaro
J'ai suivie ton conseil, merci à toi wink



tiramiseb a écrit :

Je pense que le script suivant répondrait à ce que tu souhaites, j'ai juste fait une modification : plutôt que de créer un répertoire par version, avec dans chaque répertoire de chaque version uniquement un fichier ".zip", mettre tous les ".zip" dans le même répertoire :

#!/bin/bash
mkdir -p ~/Captvty/archives
fichier=$(wget -q -O- http://captvty.fr/ | grep -o -m 1 'captvty-.*\.zip')
wget -q -O ~/Captvty/archives/$fichier http://captvty.fr/?$fichier
unzip -q -d ~/Captvty ~/Captvty/archives/$fichier

Tu es vraiment un chef toi, merci
J'ai suivie ton conseil mais j'ai eu un proplème.. impossible d'installer le fichier zip, j'ai du recommencer pour avoir cette installation menée à son terme
j'ai donc du rajouter la ligne suivante

wget -q -A.html -O /dev/null http://captvty.fr

et mettre

wget -q -A.zip -O ~/Captvty/archives/$fichier http://captvty.fr/?$fichier

au lieu de

wget -q -O ~/Captvty/archives/$fichier http://captvty.fr/?$fichier

Dernière modification par NéoUbuntonien (Le 29/10/2014, à 19:04)

#15 Le 30/10/2014, à 20:57

tiramiseb

Re : Raccourcis vers fichier .sh (Bash)

L'option "-A" permet d'ajouter une restriction : de n'accepter que telle ou telle extension. C'est inutile dans ton cas, tu n'as pas besoin de cette option.

Hors ligne

#16 Le 01/11/2014, à 16:38

Compte anonymisé

Re : Raccourcis vers fichier .sh (Bash)

tiramiseb a écrit :

L'option "-A" permet d'ajouter une restriction : de n'accepter que telle ou telle extension. C'est inutile dans ton cas, tu n'as pas besoin de cette option.

il y a pourtant le "html" qui se charge quelque fois au lieu du "zip", en faisant ça, je dis ce qu'il doit télécharger et ce qu'il ne doit pas télécharger.
il n'y a pas de risque, si je ne met pas le "-A" que le fichier html se charge en lieu et place du zip et le tout avec une extension zip ?
Avant que je ne connaisse ta méthode à savoir /dev/null, j'avais ce genre de problème, c'est en changeant l'extension (en mettant le fichier zip en html) que je me suis rendu compte que ce fichier était en réalité un fichier html

Quand à savoir que le "-A" ajoute une restriction, je le savais c'est d'ailleurs pour ça que je l'ai mis (je l'ai vue dans la doc)

Dernière modification par NéoUbuntonien (Le 01/11/2014, à 16:43)

#17 Le 01/11/2014, à 21:37

tiramiseb

Re : Raccourcis vers fichier .sh (Bash)

En effet, si ça donne un html au lieu d'un zip ça ne collera pas. Mais ajouter "-A.zip" ne forcera pas à télécharger un zip : si c'est un html, ça le refusera, c'est tout.

Hors ligne

#18 Le 23/09/2020, à 10:27

heliofff

Re : Raccourcis vers fichier .sh (Bash)

Gaara a écrit :

Salut,
Sinon tu peux utiliser LinkIt !

Je cherchais désespéramment de créer un raccourci bureau pour un script ssh (pour l'application deemix) qui se lançait en ligne de commande avec bash /home/mon_nom/deemix/deemix-pyweb/deemix-updater.sh

Et grâce à ce merveilleux petit outil c'est super facile ! Il suffit de dire qu'on veut l’exécuter dans un terminal, et d'écrire la ligne de commande pour le lancer ! Je commençait à désespérer de trouver une solution, je ne m'en sortait pas à créer des fichier .desktop !

Merci beaucoup !

Hors ligne