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 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 ....

03b03e853376acec37a180ad44b99t.jpg

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 smile


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 smile 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 smile

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 smile

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 smile

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

n3o51 a écrit :

je veut pas tous les lire d'un coup smile 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é smile


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

Hizoka a écrit :

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 smile

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 tongue
ç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 roll


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

sputnick a écrit :

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 cool: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 wink

@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