#1 Le 16/11/2009, à 21:47
- n3o51
Une liste en bash
Bonsoir a tous
Voila je voudrais savoir si quelqu'un peut me dire comment renvoyer une liste de mes fichiers AVI de mon repertoire videos.
En créer une liste avec dialog
genre
1. Mon1erfilm.avi
2. Mon2emefilm.avi
etc ....
et ensuite de pouvoir ouvrir cela avec mplayer sans gui
Merci par avance ....
Dernière modification par n3o51 (Le 16/11/2009, à 21:55)
Welcome to the real world
________________________________
Hors ligne
#2 Le 16/11/2009, à 23:40
- n3o51
Re : Une liste en bash
Si je pouvais au moins avoir comment renvoyer ce resultat dans une liste en faite
Welcome to the real world
________________________________
Hors ligne
#3 Le 17/11/2009, à 00:17
- AnsuzPeorth
Re : Une liste en bash
Bjr,
Ben avec la commande ls, cela va te lister tes fichiers !
Je vois pas trop ou tu coince ?
Pour xdialog, je ne me souviens plus trop ...! Faudrait que je m'y replonge !
Si tu n'es pas bloqué avec xdialog, préfère zenity ou gtkdialog.
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#4 Le 17/11/2009, à 05:47
- n3o51
Re : Une liste en bash
nonjour , Je bloque pour renvoyer le ls dans la liste xdialog ensuite.
Non je préfererai utiliser dialog ou xdialog car c'est pour mon pc avec WMII.
Dernière modification par n3o51 (Le 17/11/2009, à 05:48)
Welcome to the real world
________________________________
Hors ligne
#5 Le 17/11/2009, à 10:10
- Geoffrey35
Re : Une liste en bash
ls *.avi | xargs
Je pense
Ubuntu, c'est pas non plus...
Hors ligne
#6 Le 17/11/2009, à 13:47
- AnsuzPeorth
Re : Une liste en bash
Bjr,
prends contact avec twocats, je pense qu'il a déjà fait ce que tu veux
http://forum.ubuntu-fr.org/viewtopic.ph … 3#p3073753
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#7 Le 17/11/2009, à 17:47
- sensini
Re : Une liste en bash
pourquoi pas seulement mplayer *.avi ?
C'est ce que j'utilise
http://doc.ubuntu-fr.org/aptitude
http://bepo.fr
Pensez à chercher sur un moteur de recherche avant de demander http://google.fr/ ;)
Hors ligne
#8 Le 17/11/2009, à 18:46
- n3o51
Re : Une liste en bash
je veut pas tous les lire d'un coup merci ansuz je vais le contacter.
Merci a tous je laisse ouvert pour l'instant
EDIT bon finalement d'apres ce que je vois c'est xdialog et non dialog donc si quelqu'un peut me solutionner cela ça m'aiderai bien
Dernière modification par n3o51 (Le 17/11/2009, à 18:48)
Welcome to the real world
________________________________
Hors ligne
#9 Le 18/11/2009, à 01:07
- Hizoka
Re : Une liste en bash
Un truc en speed :
Création du fichier qui affichera dialog avec les choix :
echo '#! /bin/bash
dialog --title "Choix de la video :"
--ok-label "Valider" --cancel-label "Quitter"
--checklist "Utiliser la barre d\'espace et les fleches pour choisir." 22 90 22 ' > /tmp/liste_avi
Il faut te rendre dans le dossier de tes avi :
cd ton_dossier
On liste les videos avi, un par ligne :
liste=$(ls -1 *.avi)
On duplique chaque nom de fichier qu'on met entre " avec un off (ou on) à la fin qu'on ajoute au fichier de dialog :
while read line
do
echo "\"$line\" \"$line\" off " >> /tmp/liste_avi
done <<< "$liste"
On ajoute un \ à chaque fin de ligne :
sed -i 's@$@\\@' /tmp/liste_avi
On recupere le nombre de ligne presente dans le fichier :
derniere_ligne=$(wc -l /tmp/liste_avi)
derniere_ligne=${derniere_ligne% *}
On remplace le dernier \ par 2> /tmp/choix_avi :
sed -i "${derniere_ligne}s@off.*@off 2> /tmp/choix_avi@" /tmp/liste_avi
Il ne reste plus qu'à lancer dialog :
bash /tmp/liste_avi
Apres :
Tous les fichiers sélectionnés se retrouvent dans le fichier /tmp/choix_avi, à toi d'en faire ce que tu veux avec mplayer.
Je rappelle que je l'ai fait vite fait, il y a des façon de simplifier le code mais bon c'est à revoir après...
Dernière modification par Hizoka (Le 18/11/2009, à 01:09)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#10 Le 18/11/2009, à 04:15
- sputnick
Re : Une liste en bash
Ou bien on peux faire simple et propre :
dialog --title "Choix de la video : " \
--separate-output \
--ok-label "Valider" \
--cancel-label "Quitter" \
--checklist "Utiliser la barre d'espace et les fleches pour choisir." \
22 90 22 $(
shopt -s nocaseglob nullglob
cd /path/to/chemin/vers/videos
env printf '%s - off ' *.avi
) 2>/tmp/liste
J'ai ajouté --separate-output qui enleve les doubles apostrophes dans le fichier de sortie /tmp/liste et aussi shopt -s nocaseglob nullglob qui permet de ne pas considerer un fichier vide *.avi comme valide ( nullglob ) et nocaseglob comme son nom l'indique permet de gerer les globs de facon case insensitive.
Dernière modification par sputnick (Le 18/11/2009, à 04:25)
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#11 Le 18/11/2009, à 04:32
- Hizoka
Re : Une liste en bash
putain quand on maitrise on peut faire de super trucs...
tu peux expliquer plus clairement la ligne : "shopt -s nocaseglob nullglob", ce que c'est et co
par contre ça ne marche pas chez moi tout ca, ecran noir...
Dernière modification par Hizoka (Le 18/11/2009, à 04:33)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#12 Le 18/11/2009, à 06:00
- n3o51
Re : Une liste en bash
idem marche pas merci a vous deux quand meme
@hizo pourquoi
bash /tmp/liste_avi
c'est pas dialog plutot ?
Welcome to the real world
________________________________
Hors ligne
#13 Le 18/11/2009, à 08:49
- Hizoka
Re : Une liste en bash
oui on s'en fiche
tu le nommes comme tu veux mais je l'ai nommé comme ça car c'est le script sur lequel apparait la liste des fichiers avi.
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#14 Le 18/11/2009, à 14:35
- sensini
Re : Une liste en bash
je veut pas tous les lire d'un coup merci ansuz je vais le contacter.
Merci a tous je laisse ouvert pour l'instant
Au temps pour moi, j'avais mal compris la question, désolé
http://doc.ubuntu-fr.org/aptitude
http://bepo.fr
Pensez à chercher sur un moteur de recherche avant de demander http://google.fr/ ;)
Hors ligne
#15 Le 18/11/2009, à 18:38
- n3o51
Re : Une liste en bash
@Hizo merci mais j'ai du mal a suivre ...
je voulais un truc simple qui liste envoie tout dans dialog et apres je choisis ce que je veut lancer avec un no je pense
1. Mon1erfilm.avi
2. Mon2emefilm.avi
je met 1 et il me lance le premier
Welcome to the real world
________________________________
Hors ligne
#16 Le 18/11/2009, à 18:53
- Hizoka
Re : Une liste en bash
bah, tu parles de dialog, donc je fais en sorte que ça fonctionne avec dialog...
on est obligé de créer le script dialog entier dans un fichier car avec des variables ou autre ça ne passe pas.
Si tu veux juste une liste à la con comme ça avec simplement 1 fichier à choisir, utilise :"select" qui te fait une liste comme ça avec juste le numero à choisir.
cd ton dossier
liste_avi=$(ls *.avi | sed 's/^/"/ ; s/$/"/ ; s/ /_/g' | tr '\n' ' ')
select film in ${liste_avi}
do
echo "Vous avez choisis : ${film}"
break
done
1) "Mes_vacances.avi"
2) "Ses_vacances.avi"
#? 1
Vous avez choisis : "Mes_vacances.avi"
Dernière modification par Hizoka (Le 18/11/2009, à 18:55)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#17 Le 18/11/2009, à 19:09
- sputnick
Re : Une liste en bash
putain quand on maitrise on peut faire de super trucs...
tu peux expliquer plus clairement la ligne : "shopt -s nocaseglob nullglob", ce que c'est et co
par contre ça ne marche pas chez moi tout ca, ecran noir...
Je te donne une bonne doc sur shopt : http://www.bash-hackers.org/wiki/doku.php?id=internals:shell_options
Cela permet de "setter" des parametres etendus du shell.
Avec nocaseglob, tu va matcher FOOBAR.AVI tout comme foobar.avi avec un glob : *.avi
Avec nullglob, le glob *.avi ne retournera rien si il ne trouve rien dans le repertoire au lieu de retourner *.avi comme une valeure correcte.
Pour que ca marche, evidement, vous devez remplacer /path/to/chemin/vers/videos par le vrai chemin de vos videos et avoir des *.avi dedans.
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#18 Le 18/11/2009, à 19:21
- Hizoka
Re : Une liste en bash
Pour que ca marche, evidement, vous devez remplacer /path/to/chemin/vers/videos par le vrai chemin de vos videos et avoir des *.avi dedans.
Merci de l'info mais ça a été fait
ça marche chez toi ?
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#19 Le 18/11/2009, à 19:41
- sputnick
Re : Une liste en bash
Ca ne fonctionnera pas avec des fichiers contenant des espaces car alors dialog considere un mot avec espace comme plusieurs arguments differents.
Perso, je me sert de rename 's/ /_/g' *.avi avant si besoin.
EDIT : Bien sur ca marche chez moi.
Dernière modification par sputnick (Le 18/11/2009, à 19:41)
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#20 Le 18/11/2009, à 19:55
- Hizoka
Re : Une liste en bash
en effet avec les espaces ça ne passe pas.
ça marche avec rename 's/ /_/g' *.avi
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#21 Le 18/11/2009, à 20:31
- sputnick
Re : Une liste en bash
A mon avis la demande ne concerne pas dialog en lui meme, mais un truc simple pour choisir une video en CLI. Donc :
(
cd /path/to/avi
shopt -s nocaseglob nullglob
select item in *.avi; do mplayer "$item"; break; done
)
Les parentheses sont la pour creer un sous shell. Les modifications avec shopt ne durent que le temps ou on lance la commande, idem pour le cd, il est temporaire pendant le temps d'execution du sous shell...
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#22 Le 18/11/2009, à 20:38
- Hizoka
Re : Une liste en bash
la je dis respect...
putain moi qui trouvais que je commencais à me débrouiller
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#23 Le 18/11/2009, à 21:05
- n3o51
Re : Une liste en bash
A mon avis la demande ne concerne pas dialog en lui meme, mais un truc simple pour choisir une video en CLI. Donc :
( cd /path/to/avi shopt -s nocaseglob nullglob select item in *.avi; do mplayer "$item"; break; done )
Les parentheses sont la pour creer un sous shell. Les modifications avec shopt ne durent que le temps ou on lance la commande, idem pour le cd, il est temporaire pendant le temps d'execution du sous shell...
Ca ma l'air pas mal :D
par contre puis je faire ça dans une fonction
Merci hizoka c'est super sympa je vais regarder
Merci a tous
Dernière modification par n3o51 (Le 18/11/2009, à 21:06)
Welcome to the real world
________________________________
Hors ligne
#24 Le 18/11/2009, à 21:56
- sputnick
Re : Une liste en bash
@Hizoka merci
@n3o51 pas de contre indication pour faire une fonction.
SelectMedia()
{
(
shopt -s nocaseglob nullglob
select item; do
mplayer "$item"
done
)
}
Il te reste plus qu'a appeler la fonction avec n'importe quel argument contenant un média lisible par mplayer : exemple :
SelectMedia ~/un/path/{*.avi,*.flv,*.mp3}
On peux mettre cette fonction dans le ~/.bashrc pour pouvoir l'appeler de n'importe quel terminal ensuite.
Dernière modification par sputnick (Le 18/11/2009, à 22:04)
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#25 Le 18/11/2009, à 22:22
- n3o51
Re : Une liste en bash
OHhh et bien merci
Du coup je vais m'en faire un pour lire les musiques avec mpc ...
Merci encore a vous !!!
PS : je vais essayer de regarder pour mettre more en plus avec un pipe de façon a automatiser car si je dois renvoyer ça a chaque fois ..
Je vais mettre more et de façon a le faire toujours cherche /home/n3o/Vidéos/*.avi
Dernière modification par n3o51 (Le 18/11/2009, à 22:28)
Welcome to the real world
________________________________
Hors ligne