web-dev-qa-db-fra.com

Créer un programme exécutable avec un script shell ..?

J'ai créé deux fichiers de script Shell (.sh), audio.sh et video.sh pour mon projet Pi CCTV.

Et j'ai combiné ces deux scripts:

sh -x video.sh & sh -x audio.sh &

J'ai mis la commande ci-dessus dans un fichier Shell et j'ai finalement créé le fichier test.sh, qui contient maintenant les deux fichiers Shell simultanément.

Cependant, je ne suis pas convaincu que je devrais exécuter la commande: Sudo ./test.sh. Je voudrais créer un fichier exécutable (double-cliquez et lancez) qui peut lancer test.sh.

Une vidéo YouTube montre qu'il est possible de créer un script Apple sous Mac OS (en reliant les deux fichiers, de le compiler et de l'exécuter) et de l'exporter au moyen d'un programme exécutable (format .app). Si le programme est lancé, les deux scripts Shell sont lancés ensemble dans deux fenêtres de terminal, comme vous le voyez dans la vidéo: https://www.youtube.com/watch?v=hkY4_qYWfqI

Est-il possible de faire une telle chose dans Ubuntu 16.04?

Créer un programme qui exécute les deux scripts Shell simultanément?

Des idées?

1
Felix Lee

Un fichier .desktop vous fournira ce que vous voulez.

Créez le fichier suivant, avec un nom de fichier tel que ANYTHING.desktop:

[Desktop Entry]
Encoding=UTF-8
Exec=gksudo /MAKE/THIS/THE/PATH/TO/test.sh
Path=/MAKE/THIS/THE/PATH/TO/THE/OTHER/FILES
Type=Application
Terminal=true
Name=Pi CCTV project
Categories=AudioVideo;

Enregistrez-le où vous voulez, par exemple dans ~/Desktop, et il s'exécutera lorsque vous cliquerez dessus.

Vous pouvez également l'enregistrer dans ~/.local/share/applications si vous souhaitez qu'il apparaisse dans votre menu.

Ceci exécute test.sh avec gksudo au lieu de Sudo, pour vous donner un dialogue de mot de passe graphique.

Dans test.sh ajoutez une wait à la fin ainsi:

sh -x video.sh & sh -x audio.sh & wait

Cela est nécessaire pour que la fenêtre ne se ferme pas tant que les deux programmes ne sont pas terminés.

Si vous voulez vraiment deux fenêtres, remplacez test.sh par:

xterm -e sh -x video.sh & xterm -e sh -x audio.sh & wait

et remplacez Terminal=true par false dans le fichier .desktop.

3
Martin Thornton