web-dev-qa-db-fra.com

Qui traite de l'étoile * en echo *

Qui traite (interprète) le * dans

echo *

L'echo se voit-il que l'étoile ou la coquille s'en occuper et renvoyer une liste de noms de fichiers ..

Qu'en est-il de

cp temp temp*
15
faressoft

Comme déjà indiqué, la coquille se développe * alors echo reçoit comme arguments quel que soit la coquille trouver dans le répertoire actuel. Toutefois, notez que si l'expansion ne conduit à rien, c'est-à-dire si le répertoire ne contient aucun fichier non caché, le * est laissé inchangé et transmis comme à la commande appelée (sauf si des options non standard sont utilisées avec des coquilles telles que bash.) echo * ne va pas alors se comporter comme un homme pauvre ls comme le premier imprimer ne viendra rien pendant que ce dernier imprimera *.

De la même manière, cp /tmp/temp temp* créera un fichier nommé temp* Dans le répertoire actuel s'il n'y a pas encore au moins un fichier dont le nom commence par temp.

Enfin, si vous voulez le * À passer inchangée quel que soit le cas, vous pouvez le protéger de l'expansion à l'aide de citations simples '*', double citation "*" ou backslash \*.

5
jlliagre

À Bash, la coquille y traite. Vous voyez que si vous essayez même * sans écho

Note - basé sur certains commentaires, je suggérerais d'exécuter * Entrée, pour créer un répertoire et utiliser la commande tactile pour effectuer certains fichiers et vous assurer aucun d'entre eux, ou du moins à vous assurer le premier alphabétiquement, n'est pas le nom. de tout script ou commande sur le chemin.

$ *
bash: a: command not found

$ echo *
a a.aa a.ab a.b a.htm a.tx

Alors ls * est un peu un cliché

Sous Windows, * est traitée par la commande, alors dir *.* n'est pas un cliché.

Notez - Voir quelques commentaires, j'ajouterais, il y a un risque d'exécution * puis entrez. Si vous avez un fichier appelé RM qui est d'abord dans la liste des répertoires, c'est dangereux car tout ce qui serait supprimé. De plus, et cela est moins improbable, si le premier fichier de la liste des répertoires est le nom d'un script sur le chemin, il fonctionnera.

4
barlop