Vous obtenez le message d'erreur de l'interpréteur de commandes. La même chose se produirait si vous entriez la commande suivante.
echo ~/UniGen/* 2> /dev/null
L'interpréteur de commandes zsh développe *
ne trouve aucun fichier correspondant, puis génère un message d'erreur indiquant ceci. Votre commande externe rm
et ma commande intégrée echo
ne s'exécutent jamais. La redirection ne se produit que lorsque l'une ou l'autre des commandes écrit dans stderr
. Dans ce cas, l'interpréteur de commandes zsh écrit dans stderr
.
Essayez plutôt ce qui suit. Ici, le shell zsh est inclus dans la redirection.
{ rm ~/UniGen/*; } 2> /dev/null
Pour information : Bash fonctionne différemment sur rm ~/UniGen/* 2> /dev/null
. Lorsqu'un shell bash développe *
pour ne pas trouver de correspondance, la chaîne "/Users/WGroleau/UniGen/*"
est transmis à la commande rm
commande. Dans ce cas, rm
produirait le message suivant à l'adresse stderr
qui serait redirigé vers /dev/null
. En d'autres termes, le message suivant n'apparaît pas.
rm: /Users/WGroleau/UniGen/*: No such file or directory
Quoi qu'il en soit, y compris les crochets {}
supprimerait le message d'erreur pour zsh et bash.
Sur la base d'une commentaire laissée par l'utilisateur1934428 concernant le nomatch
un comportement similaire à celui de bash peut être émulé en utilisant le subshell ci-dessous.
(unsetopt nomatch;rm ~/UniGen/* 2> /dev/null)
Ici, "/Users/WGroleau/UniGen/*"
est transmis à la commande rm
commande.