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 17/10/2022, à 17:25

cmontesquat

Script d'ouverture de fichier

Bonjour

Je viens de passer sous Ubuntu 22.04.1 LTS, et mon script de lancement des fichiers de travail ne fonctionne plus intégralement.
Avant, il fonctionnait en utilisant au clic droit sur le nom du script, l'option "Lancer" et non pas "Lancer dans un Terminal"
Maintenant il n'y a plus que l'option "Exécuter comme un programme".
Donc voici ce qui se passe quand on clique sur cette option "Exécuter comme un programme" :

  1. 1 toutes les lignes de ce style fonctionnent --> xdg-open /home/admcyrill/PersoTravail/PTempUSB.odt

Les fichiers s'ouvrent normalement et il ne reste aucune fenêtre Terminal résiduelle

  1. 2 en revanche celles-ci ne fonctionne pas (aucun ficher ne s'ouvre) --> xdg-open /home/admcyrill/PersoTravail/S16DUnAutreALAutreAnnoté.pdf

Pour ce dernier point :
si je fait un copier coller de la ligne dans une fenêtre terminal, la ligne s'exécute correctement et la fenêtre Terminal rend la main et on peut la fermer, mais il faut le faire manuellement, sans fermer le Visionneur de PDF.
si j'exécute cette commande dans un script en faisant "Exécuter comme un programme", on voit une fenêtre Terminal s'ouvrir et se fermer instantanément. Aucun ficher n'est ouvert.
si je substitue evince à xdg-open, le fichier s'ouvre, mais la fenêtre Terminal ne rend pas la main, ce qui fait que les autres fichiers ne s'ouvrent pas ; si je ferme cette fenêtre Terminal manuellement, cela ferme Evince et le fichier ouvert.
Quid ? Comment réobtenir un fonctionnement comme lors de la version précédente ?
Merci.

Hors ligne

#2 Le 17/10/2022, à 19:14

Tawal

Re : Script d'ouverture de fichier

Hello,

C'est difficile à dire comme ça.
Le mieux serait de poster le contenu du script.

Le script lancé depuis un terminal fonctionne bien ?
Ajoute cette ligne au début du script (juste après le shebang) :

exec 1> >(tee -a $HOME/log_script) 2>&1

Cela va te créer un log "log_script" dans ton home.
Log que tu pourras consulter après avoir essayé de lancer ton script graphiquement.

En gros, en attente d'informations ...

Edit:
Correction d'une erreur dans la commande et de fautes d'orthographes ailleurs tongue

Dernière modification par Tawal (Le 17/10/2022, à 19:18)


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#3 Le 17/10/2022, à 23:22

kamaris

Re : Script d'ouverture de fichier

Peut-être l'association application <-> type-mime a-t-elle été cassée lors de la mise à jour.
Que renvoie

xdg-mime query default application/pdf

? Pour remettre evince en application par défaut pour les fichiers pdf, cette commande devrait faire l'affaire :

xdg-mime default org.gnome.Evince.desktop application/pdf

Hors ligne

#4 Le 18/10/2022, à 17:59

cmontesquat

Re : Script d'ouverture de fichier

Merci. Voici les réponses.

  1. 1 Le script (qui est plein de commentaires car c'est la partie qui ne fonctionne pas, voir les dernières lignes)

    #!/bin/bash
    
    exec 1> >(tee -a $HOME/log_script) 2>&1
    
    # Remarque : les fichiers qui comportent un espace doivent avoir un "\" avant leur espace lorsqu'il sont appelé en script
    
    #Si le premier ficher writer n'est pas lancer avec xdg-open, le programme s'arrête à cette ligne et n'ouvre pas les fichiers suivants (il faut pour cela fermer ce premier fichier)
    #xdg-open /home/admcyrill/PersoTravail/PTempUSB.odt
    #xdg-open /home/admcyrill/PersoTravail/S16DeAutreAautre.odt
    #xdg-open /home/admcyrill/PersoTravail/Arabe\ MethodeMedine\ T1GrammaireCM.odt
    #xdg-open /home/admcyrill/PersoTravail/Arabe\ MethodeMedine\ T1Repertoire.ods
    #xdg-open /home/admcyrill/PersoTravail/Grec.ods
    #libreoffice --writer /home/admcyrill/PersoTravail/S16DeAutreAautre.odt
    #libreoffice --writer /home/admcyrill/PersoTravail/Arabe\ MethodeMedine\ T1GrammaireCM.odt
    #libreoffice --calc /home/admcyrill/PersoTravail/Arabe\ MethodeMedine\ T1Repertoire.ods
    #libreoffice --calc /home/admcyrill/PersoTravail/Nage.ods
    
    #sleep 5
    #/usr/bin/nautilus
    
    #sleep 5
    #On ne peut lancer plusieurs occurrences de Evince, il vaut donc passer par xdg-open qui associe au type de fichier en cause, le logiciel par défaut
    #evince /home/admcyrill/PersoTravail/Arabe\ MethodeMedine\ T2\ Corrigé.pdf
    #evince /home/admcyrill/PersoTravail/S16DUnAutreALAutreAnnoté.pdf
    #La comamnce ne mémorise la page à lauquelle il faut ouvrir le fichier que pour le premier fichier et ne ferme pas la console Terminal d'appel
    #evince /home/admcyrill/PersoTravail/Arabe\ MethodeMedine\ T2\ Corrigé.pdf /home/admcyrill/PersoTravail/S16DUnAutreALAutreAnnoté.pdf
    xdg-open /home/admcyrill/PersoTravail/Arabe\ MethodeMedine\ T2\ Corrigé.pdf
    xdg-open /home/admcyrill/PersoTravail/S16DUnAutreALAutreAnnoté.pdf
    
    #sleep 5
    #/usr/bin/firefox
    
    exit 0
  1. 2 La trace log_script
    Le fichier une seule ligne avec le n° 1 mais vide (impossible de faire un copier coller car la ligne est vide)

  1. 3 L'association ficher PDF / Evince.

    :~$ xdg-mime query default application/pdf
    org.gnome.Evince.desktop

    Mais on le savait puisque j'avais précisé que la ligne du script copier dans le Terminal au prompt s'exécute correctement

Cordialement.

Hors ligne

#5 Le 18/10/2022, à 19:11

Tawal

Re : Script d'ouverture de fichier

Essaie de mettre un & en fin de ligne de commande ouvrant un fichier.
Cela met le processus en arrière plan et permet au reste du script de se dérouler.

Je te proposerais donc un truc du genre :

#!/bin/bash

exec 1> >(tee -a $HOME/log_script) 2>&1

xdg-open /home/admcyrill/PersoTravail/PTempUSB.odt &
xdg-open /home/admcyrill/PersoTravail/S16DeAutreAautre.odt &
xdg-open "/home/admcyrill/PersoTravail/Arabe MethodeMedine T1GrammaireCM.odt" &
xdg-open "/home/admcyrill/PersoTravail/Arabe MethodeMedine T1Repertoire.ods" &
xdg-open /home/admcyrill/PersoTravail/Grec.ods &

sleep 5
/usr/bin/nautilus

sleep 5

evince "/home/admcyrill/PersoTravail/Arabe MethodeMedine T2 Corrigé.pdf" &
evince /home/admcyrill/PersoTravail/S16DUnAutreALAutreAnnoté.pdf &

sleep 5
/usr/bin/firefox

exit 0

Dis quel fichiers n'ont pas été ouverts.
Et donne le retour de :

cat ~/log_script

Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#6 Le 18/10/2022, à 20:19

cmontesquat

Re : Script d'ouverture de fichier

Merci.
Je n'ai fait les essais (j'avais effectivement testé aussi cela) qu'avec les PDF car c'est là où j'ai le problème.

  1. 1 Essai 1

    evince "/home/admcyrill/PersoTravail/Arabe\ MethodeMedine\ T2\ Corrigé.pdf" &
    evince /home/admcyrill/PersoTravail/S16DUnAutreALAutreAnnoté.pdf & 
    $ cat log_script
    cat: log_script: Aucun fichier ou dossier de ce type
  1. 2 Essai 2

    evince /home/admcyrill/PersoTravail/Arabe\ MethodeMedine\ T2\ Corrigé.pdf &
    evince /home/admcyrill/PersoTravail/S16DUnAutreALAutreAnnoté.pdf &
    $ cat log_script
    cat: log_script: Aucun fichier ou dossier de ce type

Sans les & en fin de ligne, le premier fichier PDF se lance, la fenêtre Terminal reste ouverte ; si je ferme le fichier PDF ouvert, le deuxième fichier PDF s'ouvre alors, la fenêtre Terminal est toujours ouverte et se ferme quand je ferme ce deuxième fichier PDF ouvert.
Si de remplace evince par xdg-open et que je rajoute & en fin de ligne, c'est pareil, cela ne fonctionne pas.


Salutation...

Hors ligne

#7 Le 18/10/2022, à 20:32

Tawal

Re : Script d'ouverture de fichier

Essaie en mettant le chemin absolu de Evince :

/usr/bin/evince   ton_fichier

Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#8 Le 20/10/2022, à 13:56

cmontesquat

Re : Script d'ouverture de fichier

Merci.
Cela lance les deux fichiers PDF MAIS ne ferme pas la fenêtre Terminal. Cela ne génère aucune trace du script.

Le rajout de & en fin de ligne de commande, fait que rien ne se passe.

J'avais aussi essayé d'utiliser  ce paramètr(e sans succès :  -o, --new-window            Ouvrir une nouvelle fenêtre (information de evince --help).

Le problème se résume donc à comment faire pour fermer cette fenêtre terminal ?

Cordialement.

Hors ligne

#9 Le 20/10/2022, à 14:53

Tawal

Re : Script d'ouverture de fichier

Pour que le terminal se ferme, il faut que les processus lancés dans ce terminal soient terminés ou en arrière plan.

Je trouve étrange que sans le & final, tout se passe bien et qu'avec rien ne se passe.
C'est pas normal.
Ouvre un terminal,
lance cette commande :

/usr/bin/evince un_fichier_de_ton_choix  &

Puis, une fois que tu as la main, lance cette commande pour voir si evince est en train de tourner :

ps -elf | grep evince

poste le retour.


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#10 Le 20/10/2022, à 20:55

cmontesquat

Re : Script d'ouverture de fichier

Bonjour

  1. 1. Essai 1

    $ /usr/bin/evince /home/admcyrill/PersoTravail/Arabe\ MethodeMedine\ T2\ Corrigé.pdf &
    [1] 194411

    Le programme rend la main.

    ps -elf | grep evince
    0 S admcyri+  194663  140950  2  80   0 - 228250 do_pol 20:47 pts/3   00:00:05 /usr/bin/evince /home/admcyrill/PersoTravail/Arabe MethodeMedine T2 Corrigé.pdf
    0 S admcyri+  194669    1747  0  80   0 - 39196 do_pol 20:47 ?        00:00:00 /usr/libexec/evinced
    0 S admcyri+  194870  192918  0  80   0 -  2933 pipe_r 20:50 pts/4    00:00:00 grep --color=auto evince
  1. 2 Esai 2

    $ /usr/bin/evince /home/admcyrill/PersoTravail/Arabe\ MethodeMedine\ T2\ Corrigé.pdf

    Donc le programme ne rend pas la main.

    ~$ ps -elf | grep evince
    0 S admcyri+  194663  140950 11  80   0 - 228250 do_pol 20:47 pts/3   00:00:05 /usr/bin/evince /home/admcyrill/PersoTravail/Arabe MethodeMedine T2 Corrigé.pdf
    0 S admcyri+  194669    1747  0  80   0 - 39196 do_pol 20:47 ?        00:00:00 /usr/libexec/evinced
    0 S admcyri+  194730  192918  0  80   0 -  2933 pipe_r 20:48 pts/4    00:00:00 grep --color=auto evince
  1. 3 Essai3
    J'ai donc refait un essai avec ces deux commandes dans le script :

    /usr/bin/evince /home/admcyrill/PersoTravail/Arabe\ MethodeMedine\ T2\ Corrigé.pdf &
    /usr/bin/evince /home/admcyrill/PersoTravail/S16DUnAutreALAutreAnnoté.pdf &

    Rien ne se passe. Je n'y comprends rien.

    $ cat log_script
    admcyrill@PCPerso:~$ 

Cordialement.

Hors ligne

#11 Le 20/10/2022, à 21:57

Tawal

Re : Script d'ouverture de fichier

Dans le 1er essai, est-ce que Evince s'est ouvert avec le bon fichier ?

Car le processus, lui, est bien présent.

Dernière modification par Tawal (Le 20/10/2022, à 21:58)


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#12 Le 21/10/2022, à 05:32

cmontesquat

Re : Script d'ouverture de fichier

Merci

Oui, quand les fichiers s'ouvrent, ce sont toujours les bons.

Cordialement.

Hors ligne

#13 Le 29/04/2023, à 03:42

Coeur Noir

Re : Script d'ouverture de fichier

Le problème est-il réglé ? Sinon je propose cette hypothèse…

Avant, il fonctionnait en utilisant au clic droit sur le nom du script, l'option "Lancer" et non pas "Lancer dans un Terminal"
Maintenant il n'y a plus que l'option "Exécuter comme un programme".

Avant, Nautilus ( l'explorateur de fichiers ) permettait d'exécuter des scripts et d'autres trucs depuis n'importe quel emplacement.
Maintenant il ne le permet plus - enfin si mais de façon plus restreinte : le seul type de fichiers qu'il veut bien « exécuter » ce sont des lanceurs ( des fichiers en .desktop )
et à condition qu'ils se trouvent dans ~/.local/share/applications ou ~/Bureau ou /usr/share/applications - ailleurs et autre chose, ça marchera pô, Nautilus est un explorateur, pas un « exécuteur ».

Ton script n'est probablement pas en cause.
Il faudrait créer pour lui un lanceur en bonne et due forme, lanceur qui … lancera ton script via sa ligne Exec=sh -c /chemin/absolu/vers_le/script.sh
exemple

Si tu places tes scripts.sh dans ~/.local/bin alors ça simplifiera le chemin dans leur lanceur, qui deviendra relatif avec Exec=sh -c nom_d'un_script.sh
et ça te permettra aussi de l'exécuter depuis un terminal en tapant simplement son nom.
Le dossier $HOME/.local/bin - quand il existe - est automatiquement ajouté à la variable d'environnement $PATH.
Les lanceurs .desktop placés dans ~/.local/share/applications ou /usr/share/applications sont automatiquement affichés dans la vue des applications ( d'où tu peux les mettre en favori dans le dock, par exemple. )

Chaque script .sh devra lui présenter le droit d'exécution ; les lanceurs en .desktop pas nécessairement ( sous Gnome et avec Nautilus, en tout cas. )

Dernière modification par Coeur Noir (Le 29/04/2023, à 03:59)


DébuterDocBien rédigerRetour commandeInsérer image | illustrations & captures d'écran <>

Hors ligne