[zsh] ls *.jpg *.png *.jpeg 2>/dev/null

Ce qui ne concerne ni le forum ni des problèmes
Répondre
Avatar de l’utilisateur
Stdrome1209
yeomen
Messages : 266
Inscription : sam. 29 nov. 2014, 19:39

[zsh] ls *.jpg *.png *.jpeg 2>/dev/null

Message par Stdrome1209 »

Salut à toute et à tous, j'ai besoin d'une commande pour un script :

Code : Tout sélectionner

ls *.jpg *.png *.jpeg 2>/dev/null
sauf que cette dernière qui fonctionne sous bash, ne semble pas fonctionner sous zsh pourquoi ?

Et surtout comment la formuler avec zsh ?
Gaming desktop : Corsair Obsidian 350D, Intel Core I5 4690, Nvidia GTX 770, Asus H97M-E, 8 Go de DDR3, SSD 120 Go, HDD 500 Go, Powered by Arch Linux.

Notebook : Asus PU500CA, Intel Core i5-3317U, 4 Go de DDR3, SSD 240 Go, Powered by Arch Linux.

Netbook : LDLC Mercure MA1-2-S Slim, Intel Celeron N2830, 2 Go de DDR3, SSD 60 Go, Powered by Arch Linux.
Avatar de l’utilisateur
papajoke
Elfe
Messages : 773
Inscription : sam. 30 août 2014, 19:54

Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null

Message par papajoke »

on n'utilise jamais ls dans un bash !!!!!! malgré ce que disent les tutos OpenClassrooms :evil:
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 !
Dernière modification par papajoke le lun. 28 mars 2016, 16:07, modifié 1 fois.
Arch stable - Kde 5 / zsh - btrfs/mbr - Intel Core i3 - 6Go RAM - GeForce 405 video-nouveau
Avatar de l’utilisateur
Stdrome1209
yeomen
Messages : 266
Inscription : sam. 29 nov. 2014, 19:39

Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null

Message 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.
Gaming desktop : Corsair Obsidian 350D, Intel Core I5 4690, Nvidia GTX 770, Asus H97M-E, 8 Go de DDR3, SSD 120 Go, HDD 500 Go, Powered by Arch Linux.

Notebook : Asus PU500CA, Intel Core i5-3317U, 4 Go de DDR3, SSD 240 Go, Powered by Arch Linux.

Netbook : LDLC Mercure MA1-2-S Slim, Intel Celeron N2830, 2 Go de DDR3, SSD 60 Go, Powered by Arch Linux.
Avatar de l’utilisateur
papajoke
Elfe
Messages : 773
Inscription : sam. 30 août 2014, 19:54

Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null

Message 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'
Arch stable - Kde 5 / zsh - btrfs/mbr - Intel Core i3 - 6Go RAM - GeForce 405 video-nouveau
Avatar de l’utilisateur
Stdrome1209
yeomen
Messages : 266
Inscription : sam. 29 nov. 2014, 19:39

Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null

Message 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.
Gaming desktop : Corsair Obsidian 350D, Intel Core I5 4690, Nvidia GTX 770, Asus H97M-E, 8 Go de DDR3, SSD 120 Go, HDD 500 Go, Powered by Arch Linux.

Notebook : Asus PU500CA, Intel Core i5-3317U, 4 Go de DDR3, SSD 240 Go, Powered by Arch Linux.

Netbook : LDLC Mercure MA1-2-S Slim, Intel Celeron N2830, 2 Go de DDR3, SSD 60 Go, Powered by Arch Linux.
Avatar de l’utilisateur
papajoke
Elfe
Messages : 773
Inscription : sam. 30 août 2014, 19:54

Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null

Message par papajoke »

Stdrome1209 a écrit :voici le script fini
ou comment apprendre sur des mauvaises bases ...
Arch stable - Kde 5 / zsh - btrfs/mbr - Intel Core i3 - 6Go RAM - GeForce 405 video-nouveau
Avatar de l’utilisateur
Piczel
Chu Ko Nu
Messages : 314
Inscription : dim. 03 mai 2015, 19:17
Localisation : Terre du Milieu

Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null

Message par Piczel »

euh, rien à voir, mais chez moi ls *.jpg *.png 2> /dev/null fonctionne très bien ..
lili : Lenovo E540 | ArchLinux
abraham : RaspBerry Pi 3 B | ArchLinux
isaac : RaspBerry Pi 3 B | ArchLinux
Github
The best way to accelerate a computer running Windows is at 9.81m/s²
10 types de geeks, ceux qui savent compter en binaire, et les autres.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17186
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null

Message par benjarobin »

Cela reste juste une mauvaise pratique !
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
Piczel
Chu Ko Nu
Messages : 314
Inscription : dim. 03 mai 2015, 19:17
Localisation : Terre du Milieu

Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null

Message 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 ?
lili : Lenovo E540 | ArchLinux
abraham : RaspBerry Pi 3 B | ArchLinux
isaac : RaspBerry Pi 3 B | ArchLinux
Github
The best way to accelerate a computer running Windows is at 9.81m/s²
10 types de geeks, ceux qui savent compter en binaire, et les autres.
Avatar de l’utilisateur
papajoke
Elfe
Messages : 773
Inscription : sam. 30 août 2014, 19:54

Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null

Message 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 !!!):

Code : Tout sélectionner

vi $(fgrep -l function $(find . -name '*.c'))
- 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 :shock:
* envie de consommer plus de ressources :twisted:
* flemme d'apprendre un langage mais préfère utiliser la ligne de commande ...

Code : Tout sélectionner

$ echo ${LANG:3:2} 
FR
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...
Arch stable - Kde 5 / zsh - btrfs/mbr - Intel Core i3 - 6Go RAM - GeForce 405 video-nouveau
Moviuro
Elfe
Messages : 765
Inscription : dim. 17 juin 2012, 22:49

Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null

Message 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 :)
psycho : Latitude E6430 ; BTRFS over LUKS, UEFI & secureboot
schizo : Acer 8942G ; KDE 4, BTRFS over LUKS ; W7 (prend la poussière)
toxo : i5-6600K, bspwm, VM W10 en PCI-passthrough
deadman : Lenovo Thinkcenter, OpenBSD 6.0-stable
popho.be : Kimsufi KS-3, FreeBSD 11.0
Loi de Murphy : Le jour où tu as besoin d'une backup, tu te dis que tu aurais dû en mettre en place
Venez sur IRC en plus du forum !
lemust83
yeomen
Messages : 206
Inscription : ven. 11 déc. 2015, 21:20

Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null

Message par lemust83 »

Bonjour
Il y a aussi ce tuto en français qui n'est pas d'hier mais reste valable:
Tour: Arch (Xfce) 64 Testing: 6-Core: AMD Ryzen 5 2600X type: MT MCP speed: 2152 MHz min/max: 2200/3600 MH
UEFI: American Megatrends v: 3803 date: 01/22/2018
Graphics:
Device-1: AMD Baffin [Radeon RX 460/560D / Pro
450/455/460/555/555X/560/560X]
driver: amdgpu v: kernel
Display: server: X.Org 1.20.8 driver: amdgpu,ati unloaded: modesetting
resolution: 1920x1080~60Hz
OpenGL: renderer: Radeon RX 560 Series
Manjaro en Dual (grub).
Avatar de l’utilisateur
Stdrome1209
yeomen
Messages : 266
Inscription : sam. 29 nov. 2014, 19:39

Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null

Message 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.
Gaming desktop : Corsair Obsidian 350D, Intel Core I5 4690, Nvidia GTX 770, Asus H97M-E, 8 Go de DDR3, SSD 120 Go, HDD 500 Go, Powered by Arch Linux.

Notebook : Asus PU500CA, Intel Core i5-3317U, 4 Go de DDR3, SSD 240 Go, Powered by Arch Linux.

Netbook : LDLC Mercure MA1-2-S Slim, Intel Celeron N2830, 2 Go de DDR3, SSD 60 Go, Powered by Arch Linux.
Avatar de l’utilisateur
Kooothor
archer
Messages : 103
Inscription : dim. 19 oct. 2008, 17:01

Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null

Message par Kooothor »

Deux autres articles intéressants pour écrire de meilleurs scripts :

http://redsymbol.net/articles/unofficia ... rict-mode/
http://www.davidpashley.com/articles/wr ... l-scripts/
Moviuro
Elfe
Messages : 765
Inscription : dim. 17 juin 2012, 22:49

Re: [zsh] ls *.jpg *.png *.jpeg 2>/dev/null

Message par Moviuro »

Utilisation de [ dans un script bash ?... :non:
psycho : Latitude E6430 ; BTRFS over LUKS, UEFI & secureboot
schizo : Acer 8942G ; KDE 4, BTRFS over LUKS ; W7 (prend la poussière)
toxo : i5-6600K, bspwm, VM W10 en PCI-passthrough
deadman : Lenovo Thinkcenter, OpenBSD 6.0-stable
popho.be : Kimsufi KS-3, FreeBSD 11.0
Loi de Murphy : Le jour où tu as besoin d'une backup, tu te dis que tu aurais dû en mettre en place
Venez sur IRC en plus du forum !
Répondre