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.

#26 Le 28/09/2021, à 18:22

grisouille

Re : [RESOLU] Script pour ouvrir un terminal contenant une commande ?

j'ai un p'tit script tout bête pour faire une peu la même chose (mais pour les vidéos)
et j'utilise xsel qui permet de récuperer le "copier" ou le "sélectionner"
xsel --clipboard ou xsel --primary

tiens je mets le script, tu peux t'en inspirer mais associer à un lanceur ça fait le taf

#!/bin/bash
# REQUIRES:     youtube-dl, xsel, zenity, xterm
# Télécharge le lien youtube de la vidéo qui est dans le presse papier
# en priorité celui du selectionné 
nameProg="$(basename "$0")"
# repertoire téléchargement
cd $(xdg-user-dir DOWNLOAD)
# selectionné souris
video=$(xsel --primary)
# test si le selectionné commence par http 
if [[ ! "$video" =~ "http"* ]]; then
	video=$(xsel --clipboard)	
	#sinon test si le presse papier commence par http
	if [[ ! "$video" =~ "http"* ]]; then	
		notify-send "Erreur de lien"
		exit 1	
	fi	
else
		down=$(xterm -title youtube-download -e "youtube-dl -o '%(title)s.%(uploader)s.%(ext)s' -f best "$video" ")
fi

#vide le presse-papier
xsel -c -b
notify-send "$nameProg terminé "
exit 0

Hors ligne

#27 Le 28/09/2021, à 18:51

Watael

Re : [RESOLU] Script pour ouvrir un terminal contenant une commande ?

la regex vérifie seulement que l'adresse contient htt, éventuellement suivi par un p.

#!/bin/bash

# repertoire téléchargement
cd $(xdg-user-dir DOWNLOAD)

rgx='^https*://'
for clipboard in "$(xsel --primary)" "$(xsel --clipboard)"
do
    [[ $clipboard =~ $rgx ]] && { video=$clipboard; break;}
done
if test -z "$video"
then
    notify-send "erreur lien non copié"
    exit 1
fi

xterm -title youtube-download -e "youtube-dl -o '%(title)s.%(uploader)s.%(ext)s' -f best "$video" "

Dernière modification par Watael (Le 28/09/2021, à 19:44)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#28 Le 28/09/2021, à 19:06

grisouille

Re : [RESOLU] Script pour ouvrir un terminal contenant une commande ?

merci ! wink

Hors ligne

#29 Le 28/09/2021, à 19:26

beuguissime

Re : [RESOLU] Script pour ouvrir un terminal contenant une commande ?

Bonsoir,

Tester https:// me paraît de meilleur aloi en 2021. wink

Hors ligne

#30 Le 28/09/2021, à 19:44

Watael

Re : [RESOLU] Script pour ouvrir un terminal contenant une commande ?

je modifie.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#31 Le 29/09/2021, à 10:10

Zakhar

Re : [RESOLU] Script pour ouvrir un terminal contenant une commande ?

Hizoka a écrit :

Y a 2 types de coller (du moins sous KDE) :
- Une sélection de texte puis clic molette pour coller le texte.
- Une sélection de texte, ctrl + c et ctrl + v pour coller
C'est très pratique pour gérer 2 trucs en parallèle.

Oui, en fait c'est X11, si tu regardes de manpage de xsel que je suggérais, tu te rends compte de ça !

https://manpages.ubuntu.com/manpages/fo … el.1x.html

Le "clic milieu" correspond traditionnellement au "Primary" clipboard.
Les autres méthodes sont sans doute attachées aux clipboard "Secondary" (à vérifier !).


"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)

Hors ligne

#32 Le 05/11/2021, à 08:12

GR 34

Re : [RESOLU] Script pour ouvrir un terminal contenant une commande ?

Petit déterrage :

Le code de Watael (re-merci)  :

xterm -e 'read -p "youtube-dl "; youtube-dl "$REPLY"; /bin/bash'

me convient parfaitement et je trouverais pratique que le xterm se ferme à la fin du processus de téléchargement de la vidéo. J'ai cherché mais pas trouvé vu mon niveau déplorable en bash. wink

Si quelqu'un peut m'aider... Merci d'avance.


Karantez-vro...  Breizhad on ha lorc'h ennon !
«Les animaux sont mes amis. Et je ne mange pas mes amis.» George Bernard Shaw
https://www.l214.com/

Hors ligne

#33 Le 05/11/2021, à 12:01

MicP

Re : [RESOLU] Script pour ouvrir un terminal contenant une commande ?

Bonjour

GR 34 a écrit :

… je trouverais pratique que le xterm se ferme à la fin du processus de téléchargement de la vidéo …

Essaye avec :

xterm -e 'read -p "youtube-dl "; youtube-dl "$REPLY"'

Hors ligne

#34 Le 05/11/2021, à 12:41

GR 34

Re : [RESOLU] Script pour ouvrir un terminal contenant une commande ?

MicP a écrit :

Bonjour

GR 34 a écrit :

… je trouverais pratique que le xterm se ferme à la fin du processus de téléchargement de la vidéo …

Essaye avec :

xterm -e 'read -p "youtube-dl "; youtube-dl "$REPLY"'

Bonjour,

C'est super, ça marche impec : un grand grand merci et bonne journée.

J'aimerais comprendre le code en question, le -e je vois mais pas la suite.


Karantez-vro...  Breizhad on ha lorc'h ennon !
«Les animaux sont mes amis. Et je ne mange pas mes amis.» George Bernard Shaw
https://www.l214.com/

Hors ligne

#35 Le 05/11/2021, à 13:19

MicP

Re : [RESOLU] Script pour ouvrir un terminal contenant une commande ?

Bonjour

la commande read est une commande interne (builtin) du shell bash
dont on peut trouver la description suivante dans la page man de bash ou des builtins

…
      read [-ers] [-a tableau] [-d délimiteur] [-i texte] [-n nb_car] [-N nb_car] [-p invite]  [-t  délai]  [-u  df]
       [nom ...]
              Une  ligne est lue depuis l'entrée standard ou à partir du descripteur de fichier df fourni en argument
              à l'option -u, découpée en mots comme décrit ci-dessus dans Découpage en mots, puis le premier  mot  de
              cette  ligne  est affecté au premier nom, le second mot au second nom, et ainsi de suite. S'il y a plus
              de mots que de noms, les mots restants et leurs séparateurs intercalaires sont affectés au dernier nom.
              S'il  y  a moins de mots lus dans le flux d'entrée que de variables, des valeurs vides sont affectées à
              celles restantes. Les caractères contenus dans la variable IFS sont utilisés pour découper la ligne  en
              mots  en  utilisant les mêmes règles que celles utilisées par l’interpréteur pour le développement (dé‐
              crites précédemment dans Découpage en mots). Le caractère contre-oblique (\) permet de supprimer  toute
              signification  spéciale pour le caractère suivant et autorise la continuation de ligne. Les options, si
              fournies, ont les significations suivantes :
              -a tableau
                     Les mots sont affectés aux indices successifs d'une variable tableau de nom tableau, en  commen‐
                     çant à 0. tableau est détruit avant que de nouvelles valeurs ne soient affectées. Les autres ar‐
                     guments nom sont ignorés.
              -d délimiteur
                     Le premier caractère de délimiteur est utilisé pour terminer la ligne de  saisie,  plutôt  qu'un
                     changement  de  ligne.  Si délimiteur est la chaîne vide, read termine une ligne quand il lit un
                     caractère NUL.
              -e     Si l'entrée standard provient  d'un  terminal,  la  bibliothèque  readline  (consultez  READLINE
                     ci-dessus)  est utilisée pour obtenir la ligne. Readline utilise les configurations d'édition en
                     cours (ou par défaut, si l'édition de ligne n'était pas préalablement active), mais  utilise  le
                     complètement de nom de fichier par défaut de readline.
              -i texte
                     Si  readline  est utilisée pour lire la ligne, texte est placé dans le tampon d'édition avant le
                     début de l'édition.
              -n nb_car
                     read s'arrête après avoir lu nb_car caractères plutôt que d'attendre une ligne complète  en  en‐
                     trée, mais un délimiteur est respecté si moins de nb_car caractères ont été lus avant le délimi‐
                     teur.
              -N nb_car
                     read s'arrête après avoir lu exactement nb_car caractères plutôt que d'attendre une  ligne  com‐
                     plète en entrée, sauf si une fin de fichier (EOF) est rencontrée ou si read dépasse son délai de
                     réponse. Les délimiteurs rencontrés en entrée ne sont pas traités spécialement  et  n'entraînent
                     pas  la  fin  de read avant que nb_car caractères n'aient été lus. Le résultat pas découpé selon
                     les caractères dans IFS ; le but est que la variable soit exactement des caractères lus (à l'ex‐
                     ception du caractère contre-oblique ; consultez ci-dessous l'option -r).
              -p invite
                     Afficher  invite  sur  la sortie d'erreur standard, sans caractère final de changement de ligne,
                     avant d'essayer de lire toute nouvelle saisie. L'invite est affichée seulement si l'entrée vient
                     d'un terminal.
              -r     La  contre-oblique n'agit pas comme un caractère de protection. La contre-oblique est considérée
                     comme faisant partie de la ligne. En particulier, une contre-oblique suivie d'un  changement  de
                     ligne ne peut pas être considérée comme une continuation de ligne.
              -s     Mode  silencieux.  Si une entrée arrive à partir d'un terminal, les caractères ne sont pas affi‐
                     chés.
              -t attente
                     Conduire read à expirer et renvoyer un échec si une ligne complète en entrée (ou un nombre indi‐
                     qué  de  caractères)  n'a pas été lue dans le délai en seconde. délai est un nombre décimal avec
                     éventuellement des chiffres après la virgule (NdT : point en l'occurrence). Cette  option  n'est
                     effective que si read lit l'entrée à partir d'un terminal, d'un tube, ou depuis un autre fichier
                     spécial ; elle n'a aucun effet lors de la lecture d'un fichier normal. Si read expire, read sau‐
                     vegarde toute entrée partielle lue dans la variable nom indiquée. Si délai est nul, read se ter‐
                     mine immédiatement, sans essayer de lire des données. L’état de sortie est 0 si une  entrée  est
                     disponible pour le descripteur de fichier indiqué, non nulle sinon. L'état final est supérieur à
                     128 si le délai est dépassé.
              -u df  Lire l'entrée à partir du descripteur de fichier df.

              Si aucun nom n'est fourni, la ligne lue, sans autre modification que le retrait du délimiteur  de  fin,
              est  affectée  à la variable REPLY. Le code renvoyé est zéro, sauf si une fin de fichier (EOF) est ren‐
              contrée, si read dépasse son délai de réponse (auquel cas le code renvoyé est plus grand  que 128),  en
              cas d’erreur d’affectation (comme une affectation de variable à une variable en lecture seule) ou si un
              descripteur de fichier incorrect est fourni en argument de -u.

…

Dernière modification par MicP (Le 05/11/2021, à 13:20)

Hors ligne

#36 Le 05/11/2021, à 15:00

Tawal

Re : [RESOLU] Script pour ouvrir un terminal contenant une commande ?

Hello,

Et le ; (point virgule) sépare 2 commandes distinctes.
Elles s'exécutent l'une après l'autre.


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

#37 Le 05/11/2021, à 15:32

GR 34

Re : [RESOLU] Script pour ouvrir un terminal contenant une commande ?

Ok merci bien MicP, j'ai bien compris le read -p

@ Tawal : merci aussi mais heureusement le point-virgule faisait partie de mes maigres connaissances. smile

Dernière modification par GR 34 (Le 05/11/2021, à 15:34)


Karantez-vro...  Breizhad on ha lorc'h ennon !
«Les animaux sont mes amis. Et je ne mange pas mes amis.» George Bernard Shaw
https://www.l214.com/

Hors ligne

#38 Le 06/11/2021, à 10:45

GR 34

Re : [RESOLU] Script pour ouvrir un terminal contenant une commande ?

Je viens de lever un lièvre : quand le téléchargement de la vidéo par youtube-dl échoue, le xterm se ferme sans m'avertir !


Karantez-vro...  Breizhad on ha lorc'h ennon !
«Les animaux sont mes amis. Et je ne mange pas mes amis.» George Bernard Shaw
https://www.l214.com/

Hors ligne

#39 Le 06/11/2021, à 13:20

GR 34

Re : [RESOLU] Script pour ouvrir un terminal contenant une commande ?

J'ai tenté ça :

if "ERROR: unable to download video"; then xmessage -timeout 5 OK; else xmessage ERREUR ; fi

mais ça me donne le message du Else ERREUR à chaque fois que la vidéo soit chargée ou non. Je ne teste pas la bonne chose !

Dernière modification par GR 34 (Le 06/11/2021, à 14:27)


Karantez-vro...  Breizhad on ha lorc'h ennon !
«Les animaux sont mes amis. Et je ne mange pas mes amis.» George Bernard Shaw
https://www.l214.com/

Hors ligne

#40 Le 07/11/2021, à 16:22

kamaris

Re : [RESOLU] Script pour ouvrir un terminal contenant une commande ?

xterm -e 'read -p "youtube-dl "; youtube-dl "$REPLY" || /bin/bash'

Le terminal ne restera ouvert que si youtube-dl est sorti en erreur, et tu pourras lire son message, s'il y en a un.

Hors ligne

#41 Le 07/11/2021, à 16:33

GR 34

Re : [RESOLU] Script pour ouvrir un terminal contenant une commande ?

Génial ! Merci kamaris. Un grand merci ! smile

Dernière modification par GR 34 (Le 07/11/2021, à 16:44)


Karantez-vro...  Breizhad on ha lorc'h ennon !
«Les animaux sont mes amis. Et je ne mange pas mes amis.» George Bernard Shaw
https://www.l214.com/

Hors ligne