fr.comp.os.linux.debats
Affichage de l'article :
Re: Question (de débutant)_sur_une_comm

Date : Le 01 avril 2008
From : YBM
Sujet : Re: Question (de débutant)_sur_une_comm

Francois a écrit :
> YBM a écrit :
>> normal : c'est le shell qui interprète notes* et, comme il y a
>> un répertoire dont le nom commence par notes dans le répertoire
>> courants, la commande exécutée est :
>>
>> find . -type f -name notes
>>
>> (facile à voir : mets un echo devant)
>
> C'est effectivement ce que tu dis qu'il se passe, mais je ne comprends
> pas pourquoi, sous prétexte qu'il y a un répertoire notes dans le
> répertoire courant, le * disparaît ?

C'est l'inverse qu'il faut comprendre : c'est parce que dans le
répertoire courant précédent il n'y a AUCUN fichier dont le nom
commence par "notes" que l'* ne "disparaît" pas : faute de mieux
le shell transmet l'argument tel que à la commande. À mon avis
il ferait mieux de refuser en sortant une erreur du genre
'bsh: notes* : no match' ou au moins un warning.

Dans le second répertoire, il existe un répertoire nommé "notes",
donc le shell remplace "notes*" par la liste à un élément "notes"
imagine que tu fasses la même chose dans le répertoire où sont
situés les fichiers eux-même, le shell aurait exécuté :

find . -type f -name notes.ods notes.tex notes.csv

ce qui aurait conduit, je pense, à une erreur de syntaxe pour
find.

> Je comprends pas trop.

un exemple : sous unix un éditeur est capable de considérer aussi
bien un que plusieurs fichiers, appelons le vi, tandis que sous
dos un hypothétique edit.com est pareil.

Aucun des deux n'a été prévu pour prendre en compte des jokers
comme * ou ? dans leurs arguments.

Sous UNIX : vi *txt marche (puisque le *txt est traité par le shell)
Sous DOS : edit *.txt ne marche pas

Donc sous UNIX tout programme a automatiquement (merci le shell)
des fonctionnalités plus riches.

De plus cela permet de vérifier le dit "principe de moindre surprise" :
si tu as l'habitude que dir *.txt marche, tu vas t'attendre à ce que
bidule *.txt marche aussi... et bien sous DOS/Windows ça va dépendre
du bidule.exe en question : parfois oui, parfois non.

Ça a quand même un autre (petit) inconvénient, une commande comme

mv /tmp/docs/* .
où on oublierait le point final, pourrait, si par malchance, le
dernier fichier de /tmp/docs était un répertoire ne pas faire
ce que l'on veut du tout... tandis que sous DOS/Win :
move c:\temp\*.*
copie bien les fichiers dans le répertoire courant.

de même une bonne blague comme un oubli dans tar a des
conséquences irritantes :
tar cf notes*
au lieu de :
tar cf notes.tar.gz notes*


Posez vos questions, réponses et remarques sur les forums de FrameIP



mot clé : ipv6 une debutant question ipv4 tcpip voip comp os sur ip debats re fr linux vpn comm de

Copyright © 2003-2010 FrameIP TcpIP. Tous droits réservés. Les marques et marques commerciales mentionnées appartiennent à leurs propriétaires respectifs. L'utilisation de ce site Web TcpIP implique l'acceptation des conditions d'utilisation et du règlement sur le respect de la vie privée.
Sécurité entreprise Comparatif Adsl SSII Reseaux Sécurité Test ADSL