OVH Cloud OVH Cloud

[INFO + 2Q] Fermeture fenêtre Terminal en fin de shell-script

12 réponses
Avatar
blanc
Bonjour à tous,

Peut-être le connaissez-vous déjà, mais comme je l'ai perso cherché
plusieurs fois en vain, je pense qu'il peut être utile à plusieurs.

Voici donc le moyen que j'ai trouvé de fermer la fenêtre du Terminal (et
de quitter celui-ci si c'est la seule fenêtre ouverte) en fin
d'exécution d'un shell-script que l'on aurait lancé par un double-clic
(fichier xxx.command).

Bien sûr, il existe la solution de créer à partir du T un fichier
xxx.term (par Fichier --> Enregistrer sous) après avoir coché la case
"fermeture en fin de script" et de modifier ce fichier par éditeur afin
qu'il lance l'exécution du script en question :

<http://groups.google.fr/group/fr.comp.os.mac-os.x/msg/d33c7bca8b0b39c8?
hl=fr&>

Mais cette solution est assez complexe et nécessite d'avoir deux
fichiers (le .term et le .command) pour chaque script, et je voulais
éviter cela.

La solution que je propose consiste à rajouter les lignes suivantes
(appel à Applescript) à la fin du script ou avant un éventuel exit :

osascript -e 'tell application "Terminal"
set nb to count of windows
if nb > 1 then close first window
if nb <= 1 then quit
end tell' &

Supprimez la quatrième ligne (et le test nb>1) si vous ne souhaitez pas
quitter le T.

Deux questions maintenant :

1) Pourquoi ne puis-je pas mettre de else dans le "if-statement",
contrairement à ce qui est indiqué ici :

<http://developer.apple.com/documentation/AppleScript/Conceptual/AppleSc
riptLangGuide/index.html>,

et ceci aussi bien avec osascript que dans l'Editeur de Script ?

2) Dans certaines circonstances, si le T est déjà ouvert, le lancement
par double-clic ne fonctionne pas (et ceci aussi bien avec un .term
qu'un .command). Quelqu'un sait-il pourquoi, et comment y remédier ?

JPaul.

--
/==/==\\-\ Jean-Paul BLANC
/ /--/--//\\ quelque-part (somewhere)
|/| L |\\\ en (in)
\/|| = |||\\\ FRANCE

2 réponses

1 2
Avatar
jgsker
Le mardi 17 Avril 2007 à 17:32 par blanc :
Bonjour à tous,

Peut-être le connaissez-vous déjà, mais comme je l'ai perso
cherché
plusieurs fois en vain, je pense qu'il peut être utile à
plusieurs.

Voici donc le moyen que j'ai trouvé de fermer la fenêtre du
Terminal (et
de quitter celui-ci si c'est la seule fenêtre ouverte) en fin
d'exécution d'un shell-script que l'on aurait lancé par un
double-clic
(fichier xxx.command).

Bien sûr, il existe la solution de créer à partir du T un
fichier
xxx.term (par Fichier --> Enregistrer sous) après avoir coché
la case
"fermeture en fin de script" et de modifier ce fichier par
éditeur afin
qu'il lance l'exécution du script en question :

hl=fr&>

Mais cette solution est assez complexe et nécessite d'avoir deux
fichiers (le .term et le .command) pour chaque script, et je voulais
éviter cela.

La solution que je propose consiste à rajouter les lignes suivantes
(appel à Applescript) à la fin du script ou avant un
éventuel exit :

osascript -e 'tell application "Terminal"
set nb to count of windows
if nb > 1 then close first window
if nb <= 1 then quit
end tell' &

Supprimez la quatrième ligne (et le test nb>1) si vous ne souhaitez
pas
quitter le T.

Deux questions maintenant :

1) Pourquoi ne puis-je pas mettre de else dans le "if-statement",
contrairement à ce qui est indiqué ici :

riptLangGuide/index.html>,

et ceci aussi bien avec osascript que dans l'Editeur de Script ?

2) Dans certaines circonstances, si le T est déjà ouvert, le
lancement
par double-clic ne fonctionne pas (et ceci aussi bien avec un .term
qu'un .command). Quelqu'un sait-il pourquoi, et comment y remédier ?

JPaul.

--
/==/==- Jean-Paul BLANC
/ /--/--// quelque-part (somewhere)
|/| L | en (in)
/|| = ||| FRANCE


Bonjour,
si tu veux que la fenêtre se ferme toute seule à la fin d'un script, va dans les préférences de Terminal.
cliquer sur l’onglet Réglages en haut, puis sur l’onglet Shell dans l’onglet plus en bas. Choisir « fermer la fenêtre » dans Lorsque le shell quitte.
Avatar
jgsker
Le mardi 17 Avril 2007 à 17:32 par blanc :
Bonjour à tous,

Peut-être le connaissez-vous déjà, mais comme je l'ai perso
cherché
plusieurs fois en vain, je pense qu'il peut être utile à
plusieurs.

Voici donc le moyen que j'ai trouvé de fermer la fenêtre du
Terminal (et
de quitter celui-ci si c'est la seule fenêtre ouverte) en fin
d'exécution d'un shell-script que l'on aurait lancé par un
double-clic
(fichier xxx.command).

Bien sûr, il existe la solution de créer à partir du T un
fichier
xxx.term (par Fichier --> Enregistrer sous) après avoir coché
la case
"fermeture en fin de script" et de modifier ce fichier par
éditeur afin
qu'il lance l'exécution du script en question :

hl=fr&>

Mais cette solution est assez complexe et nécessite d'avoir deux
fichiers (le .term et le .command) pour chaque script, et je voulais
éviter cela.

La solution que je propose consiste à rajouter les lignes suivantes
(appel à Applescript) à la fin du script ou avant un
éventuel exit :

osascript -e 'tell application "Terminal"
set nb to count of windows
if nb > 1 then close first window
if nb <= 1 then quit
end tell' &

Supprimez la quatrième ligne (et le test nb>1) si vous ne souhaitez
pas
quitter le T.

Deux questions maintenant :

1) Pourquoi ne puis-je pas mettre de else dans le "if-statement",
contrairement à ce qui est indiqué ici :

riptLangGuide/index.html>,

et ceci aussi bien avec osascript que dans l'Editeur de Script ?

2) Dans certaines circonstances, si le T est déjà ouvert, le
lancement
par double-clic ne fonctionne pas (et ceci aussi bien avec un .term
qu'un .command). Quelqu'un sait-il pourquoi, et comment y remédier ?

JPaul.

--
/==/==- Jean-Paul BLANC
/ /--/--// quelque-part (somewhere)
|/| L | en (in)
/|| = ||| FRANCE


Bonjour,
si tu veux que la fenêtre se ferme toute seule à la fin d'un script, va dans les préférences de Terminal.
cliquer sur l’onglet Réglages en haut, puis sur l’onglet Shell dans l’onglet plus en bas. Choisir « fermer la fenêtre » dans Lorsque le shell quitte.
1 2