• [^] # Re: * est un caractère spécial

    Posté par (site web personnel) . En réponse au message Commande find et déspécialisation. Évalué à 3. Dernière modification le 23 août 2018 à 17:08.

    donc en fait techniquement c'est une mauvaise idée, il vaudrait mieux faire '*.jpg' afin d'être certain que le shell (quel qu'il soit) n'expande rien et envoie la formule telle quelle.

    Oui, clairement.

    En fait, ce qui aurais été bien, c'est que le shell provoque une erreur quand l'expansion de wildcard ne marche pas. C'est ce que fait zsh par exemple :

    bash$ echo *.nosuchext
    *.nosuchext
    zsh$ $ echo *.nosuchext
    zsh: no matches found: *.nosuchext
    

    La solution de bash, qui sauf erreur de ma part date du Bourne Shell original, est à mon avis choisie par flemme des concepteurs de faire des erreurs propres : le shell passe le wildcard en l'état à la commande en espérant que la commande en fasse quelque chose de pertinent. Des fois, ça marche :

    $ ls *.nosuchext
    ls: cannot access '*.nosuchext': No such file or directory
    

    Pour find, le résultat est on ne peut moins déroutant.

    Un intérêt de la solution zsh est aussi que ça permet un super jeu de mots :

    $ have fire ?
    zsh: no matches found: ?
    

    ;-)