Que fait un astérisque à la fin d’une commande mv

Donc je vais et déplace un tas de fichiers

mv /source /dest & mv /source/* /dest/dest/ & ... ... 

alors je suis imprudent et

 mv /source/filena* /dest/dest/ * 

OMG! ^c^c^c^c [Pas de réponse du commandement du terminal] Que se passe-t-il réellement ici?

Que se passe-t-il lorsque je mets un astérisque à la fin d’une commande au lieu d’un & (esperluette)?

Le shell développe le caractère générique * . La commande mv ne voit jamais le caractère générique, mais uniquement le résultat de l’extension.

Le caractère générique * développe dans la liste des fichiers du répertoire en cours dans l’ordre lexicographique. Si le dernier fichier est un répertoire, tous les fichiers précédents ( /source.filenafoo , /source/filenabar , /dest/dest , hello ) sont déplacés vers ce sous-répertoire. Si le dernier fichier n’est pas un répertoire, mv plaint que “target a.png n’est pas un répertoire” (ou des mots à cet effet).

Voir Que fait mv ./* sans spécifier de destination? pour des exemples plus détaillés.

Un astérisque à la fin d’une ligne de commande est traité de la même manière qu’un astérisque n’importe où ailleurs sur la ligne – il s’agit d’un caractère générique correspondant à zéro ou plusieurs caractères. Plus précisément, dans cet exemple, le * dans mv /source/filena* /dest/dest/ * est remplacé par le nom de chaque fichier et dossier de votre répertoire actuel (sauf ceux commençant par un point), et tout ce qui arrive à être le dernier dans cette liste est où mv va essayer de tout mettre.