Je déconnais dans le terminal sur Red Hat Linux, et quand j'ai tapé l'astérisque ( *
) suivi de retour, il a exécuté l'un des programmes de mon répertoire. Pourquoi?
Ma meilleure supposition est qu'Unix l'a traité comme un caractère générique et a donc exécuté le premier programme alphabétique. Étant donné que my_program.exe
et one_of_my_programs.program
peut être exécuté en tapant simplement le nom du fichier, l'opérateur générique représente tous les fichiers possibles. Puisqu'un programme est d'abord alphabétique, Unix l'exécute. Est-ce un bon jugement?
linux
command-line
bash
unix
user6086585
la source
la source
*
ordre alphabétique, mais bash en est un qui le fait.Réponses:
Votre interprétation est correcte. Le reste des fichiers sera présenté comme sa liste de paramètres.
Notez qu'il ne le fera que si le programme a le bit exécutable défini et que le répertoire courant est dans la
PATH
liste.Quelques notes qui peuvent aider à comprendre: -
./*
l'PATH
entrée n'est pas obligatoire.. *
ou. ./*
et que le premier fichier correspondant est un script, il n'est pas nécessaire qu'il soit exécutable, ni que le répertoire en cours se trouve dansPATH
(peut ne pas être vrai pour les shells autres quebash
).la source
PATH
avec le même nom que le premier fichier, cette autre commande sera exécutée.mkdir foo; cd foo; touch rm xyz; ls; *; ls
.*
s'agit d'un alias.. *
ou. ./*
on peutbash *
(ou tout autre shell).Cela suggère que cela
.
fait partie de votrePATH
variable. C'est une très mauvaise idée pour des raisons de sécurité (naturellement, Windows a dû en faire un défaut non modifiable).Cependant, cette "suggestion" n'est que modérément valide: si vous avez un fichier nommé
rm
dans votre répertoire actuel,*
vous exécuterez bien la valeur par défautrm
:Comme vous pouvez le voir, ce n'était pas
rm
dans le répertoire courant (un fichier vide et non exécutable) qui a été exécuté mais plutôt par défaut du système/bin/rm
.Vérifiez toujours vos commandes lorsque des caractères génériques sont impliqués. Voici l'un des messages les plus terrifiants à lire:
Ceci est le résultat de l'appel
, plus ou moins le pire emplacement d'un espace parasite que l'on puisse trouver.
la source
rm()
qui ajoute-i
aux paramètres ou vérifie les paramètres et demande une confirmation s'il y a plus d'un certain nombre.mv /tmp/ohno /tmp/ohnoes
( google.fr/search?q=ohnoes&source=lnms&tbm=isch )