#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 !
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.
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 ?
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.
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
… 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 ?
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.
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 !
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