Page 1 sur 1
[zsh] ls *.jpg *.png *.jpeg 2>/dev/null
Publié : lun. 28 mars 2016, 15:30
par Stdrome1209
Salut à toute et à tous, j'ai besoin d'une commande pour un script :
sauf que cette dernière qui fonctionne sous bash, ne semble pas fonctionner sous zsh pourquoi ?
Et surtout comment la formuler avec zsh ?
Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null
Publié : lun. 28 mars 2016, 16:01
par papajoke
on n'utilise
jamais ls dans un bash !!!!!! malgré ce que disent les tutos OpenClassrooms
parcourir un répertoire c'est en natif dans bash
et que cette commande ne fonctionne pas dans une console zsh ne pose pas forcément de problème, c'est le shebang du script qui compte !
Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null
Publié : lun. 28 mars 2016, 16:06
par Stdrome1209
papajoke a écrit :on n'utilise pas ls dans un bash !!!!!!
Pourquoi donc ?
papjoke a écrit :et que cette commande ne fonctionne pas dans une console zsh ne pose pas forcément de problème, c'est le shebang du script qui compte !
Je suis en train de découvrir les scripts bash sur OpenClassrooms et donc je tâtonne un peu, j'ai besoin de tester certaines commandes seules dans ma console avant de les intégrer à mon script.
Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null
Publié : lun. 28 mars 2016, 16:24
par papajoke
tout dépend du contexte, et la pas d'infos !
en natif, par exemple :
Code : Tout sélectionner
shopt -s extglob
for fichier in $HOME/Images/*.@(jpg|jpeg|png) ; do
# for fichier in $HOME/Images/*.{jpg,png}; do # autre pattern
echo "-- $fichier"
done
ou :
for fichier in *.jpg *.jpeg; do
sinon, si tu désires utiliser une commande externe, tu as find et stat
------------
pour tester ta commande bash dans une console zsh :
bash -c 'ls $HOME/Images/*.jpg'
Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null
Publié : jeu. 31 mars 2016, 10:47
par Stdrome1209
Merci de ton aide, juste pour info voici le script fini :
Code : Tout sélectionner
#!/bin/bash
# Désignation du dossier cible
while [ -z $cible ]
do
read -ep 'Rentrez le nom du dossier cible : ' cible
done
cd $cible
# Vérification des paramètres
# S'ils sont absents, on met une valeur par défaut
if [ -z $1 ]
then
sortie='galerie.html'
else
sortie=$1
fi
# Préparation des fichiers et dossiers
echo '' > $sortie
if [ ! -e miniatures ]
then
mkdir miniatures
fi
# En-tête HTML
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Ma galerie</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
a img { border:0; }
</style>
</head>
<body><p>' >> $sortie
# Génération des miniatures et de la page
for image in `ls *.png *.jpg *.jpeg *.gif 2>/dev/null`
do
convert $image -thumbnail '200x200>' miniatures/$image
echo '<a href="'$image'"><img src="miniatures/'$image'" alt="" /> </a> '>> $sortie
done
# Pied de page HTML
echo '</p>
</body>
</html>' >> $sortie
Il sert a convertir des images en miniature et à générer une petite galerie HTML, il ne s'agit rien de plus que d'un exercice sur OpenClassroom.
Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null
Publié : jeu. 31 mars 2016, 12:46
par papajoke
Stdrome1209 a écrit :voici le script fini
ou comment apprendre sur des mauvaises bases ...
Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null
Publié : jeu. 31 mars 2016, 13:42
par Piczel
euh, rien à voir, mais chez moi ls *.jpg *.png 2> /dev/null
fonctionne très bien ..
Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null
Publié : jeu. 31 mars 2016, 16:43
par benjarobin
Cela reste juste une mauvaise pratique !
Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null
Publié : jeu. 31 mars 2016, 17:33
par Piczel
Stdrome1209 a écrit :Merci de ton aide, juste pour info voici le script fini :
Code : Tout sélectionner
...
for image in `ls *.png *.jpg *.jpeg *.gif 2>/dev/null`
do
...
Il sert a convertir des images en miniature et à générer une petite galerie HTML, il ne s'agit rien de plus que d'un exercice sur OpenClassroom.
beurk beurk beurk, on vient de t'expliquer que c'était une mauvaise pratique, et que la bonne manière était celle là :
papajoke a écrit :
Code : Tout sélectionner
...
for fichier in $HOME/Images/*.@(jpg|jpeg|png) ; do
# for fichier in $HOME/Images/*.{jpg,png}; do # autre pattern
...
pourquoi ne pas l'utiliser alors ?
Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null
Publié : jeu. 31 mars 2016, 20:38
par papajoke
- appel a une commande externe par : `ls *.png *.jpg *.jpeg *.gif`, c'est l'ancienne notation (tiré du man de bash); préférer $(ls); de plus cela permet d’intégrer des commandes dans des commandes (tiré du man de sh !!!):
- pourquoi utiliser une commande externe alors que la fonction est incluse dans le langage ?
* bash est lent et tu désires être encore plus lent
* envie de consommer plus de ressources
* flemme d'apprendre un langage mais préfère utiliser la ligne de commande ...
c'est inclus dans le langage , mais moi je préfère passer par la ligne de commande car je maîtrise la console :
echo $LANG | cut -c4-5
- pour le ls en particulier, avec un peu de recherche web tu trouveras les raisons de ne pas l'utiliser... mais si tu persistes (nous sommes dans un monde libre) alors fait attention a la version : depuis un mois sous archlinux le retour n'est plus le même : échappement des caractères espace, arobas...
Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null
Publié : jeu. 31 mars 2016, 22:48
par Moviuro
On ne s'improvise pas mâitre de bash : lis
http://mywiki.wooledge.org/BashGuide avec attention.
De même, je te recommande la lecture de
http://www.amazon.fr/Learning-Bash-Shel ... eilly+bash
Et d'aller sur #bash avec des scripts qui ressemblent un peu plus à du bash correct que ce que tu nous montres
Bon courage
Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null
Publié : ven. 01 avr. 2016, 12:05
par lemust83
Bonjour
Il y a aussi ce
tuto en français qui n'est pas d'hier mais reste valable:
Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null
Publié : ven. 08 avr. 2016, 12:58
par Stdrome1209
Merci pour ces conseil, effectivement le tuto d'OpenClassrooms date de 2008, je pense en refaire de plus récents notamment sur des revues spécialisées.
Et effectivement maintenant j'utilise $(ma_commande) et non plus `ma_commande`, merci.
Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null
Publié : mer. 01 juin 2016, 23:08
par Kooothor
Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null
Publié : dim. 05 juin 2016, 18:41
par Moviuro
Utilisation de
[
dans un script bash ?...