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 21/09/2021, à 12:05

Sciensous

clic droit, script et liste de fichiers

hello pas simple de faire un bon titre et de rechercher sur le net; donc je fais appelle au forum:

quand on clique droit sur une liste de fichiers en graphique, pour lancer un script l'option %F permet d'avoir cette liste entre guillemets simples; les fichiers peuvent avoir des espaces
du genre: 'fichier1' fichier 2' 'fichier 3 et autre'

question: dans le script (sh) lui-même, y-a-t-il une méthode simple de faire une boucle sur cette liste ? (autrement que recherche des ' est introduction de sauts de ligne ou autre combines de ce type)

car avec un for,les blancs de fichiers coupent le nom
et avec des " tout est pris

merci de votre aide
wink


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#2 Le 21/09/2021, à 12:59

ar barzh paour

Re : clic droit, script et liste de fichiers

? est-ce possible comme ça

#!/bin/sh
liste="'fichier1' 'fichier 2' 'fichier 3 et autre'"
( IFS="'" ; for f in $liste ; do echo $f ; done )

le résultat

fichier1
 
fichier 2
 
fichier 3 et autre

Dernière modification par ar barzh paour (Le 21/09/2021, à 13:01)


PC          : B760M DS3H DDR4,  12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne

#3 Le 21/09/2021, à 22:26

kamaris

Re : clic droit, script et liste de fichiers

Tu es censé pouvoir utiliser %F et %U directement, sans mettre de guillemets autour :

for f in %F; do echo "$f"; done

Tu peux remplacer echo par ce que tu veux.

Dernière modification par kamaris (Le 21/09/2021, à 22:27)

Hors ligne

#4 Le 21/09/2021, à 22:57

Hizoka

Re : clic droit, script et liste de fichiers

Je confirme, pas de " autour malgré tous les exemples sur le net...

Sinon, %F et %U te renvoient une liste d'urls considérée comme 1 seule url...

L'idée est d'appeler ton script depuis le fichier desktop :

exec=mon_script %F

Puis de traiter les url dans ton script

for f in "${@}"; do echo "$f"; done

Dernière modification par Hizoka (Le 21/09/2021, à 22:58)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#5 Le 22/09/2021, à 08:25

Sciensous

Re : clic droit, script et liste de fichiers

merci pour toutes ces réponses, je vais essayer et vous mettrai un retour.
(il me semble avoir essayé la boucle directement mais ça ne marchait pas: coupure à chaque espace)
je ne sais pas si j'ai assez insisté mais je ne suis pas encore passé au bash mais suis resté en sh tongue

sinon j'étais parti sur un shopt roll et avais oublié le fameux IFS hmm

Dernière modification par Sciensous (Le 22/09/2021, à 08:27)


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#6 Le 22/09/2021, à 09:50

Hizoka

Re : clic droit, script et liste de fichiers

Tu n'as pas besoin de modifier l'IFS pour le coup.

Bash permet pas mal de choses intéressantes smile


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#7 Le 22/09/2021, à 10:07

Sciensous

Re : clic droit, script et liste de fichiers

bon désolé mais ça ne marche pas; surement car je n'ai pas précisé que le script est appelé par un .desktop avec les options -F %F
(le -F c'est un indicateur pour moi)

avec ce %F et dans le script avec "for f in $@" tout se passe comme si il n'y a qu'un seul champ
(je fais un shift pour le -F puis regarde $# pour vérifier le nombre de champs)


antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )

Hors ligne

#8 Le 22/09/2021, à 10:17

Hizoka

Re : clic droit, script et liste de fichiers

Fichier desktop :

[Desktop Entry]
Type=Service
X-KDE-ServiceTypes=KonqPopupMenu/Plugin
MimeType=video/x-matroska;
Actions=hizo-mkv-delete-attachments;
TryExec=hizo-service-menus
X-KDE-Submenu=Hizo Service Menus

[Desktop Action hizo-mkv-delete-attachments]
Name=MKV : Supprimer les fichiers attachés
Icon=tag-delete
Exec=hizo-service-menus "hizo-mkv-delete-attachments" %U

Script hizo-service-menus :

#/bin/bash
# Traite la liste des fichiers
for File in "${@:2}"
do
    echo "File : $File"
done

Je commence à 2 car $1 me sert de repaire comme toi avec ton -F


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#9 Le 23/09/2021, à 07:38

ar barzh paour

Re : clic droit, script et liste de fichiers

remarque  importante : dans mon exemple , la variable f n'est valable qu'à l'intérieure des parenthèses
exemple

liste="'fichier1' 'fichier 2' 'fichier 3 et autre'"
( IFS="'" ; for f in $liste ; do echo $f ; done )
fichier1
fichier 2
fichier 3 et autre
# en dehors des parenthèses, l'IFS n'est pas modifié ,le résultat de la commande est impacté
for f in $liste ; do echo $f ; done
'fichier1'
'fichier
2'
'fichier
3
et
autre'

bon maintenant je suis de la vielle école !!!
j'ai essayé de répondre à

question: dans le script (sh) lui-même, y-a-t-il une méthode simple de faire une boucle sur cette liste ?

Dernière modification par ar barzh paour (Le 23/09/2021, à 07:40)


PC          : B760M DS3H DDR4,  12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750  @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )

Hors ligne