Derniers journaux de kyu :

Journal : PowerShell: tapez rm -rf c:\Windows ! ;)

Posté par Fabien Engels (page perso, ) le 15 novembre 2006
0
La nouvelle version du shell de Microsoft vient de sortir en version stable comme l'indique Clubic ici :
http://www.clubic.com/actualite-65426-windows-powershell-dis(...)

L'idée de ce journal n'est pas de lancé un troll, mais surtout de partager ma joie de pouvoir enfin avoir un shell digne de ce nom sous Windows. Et le plus fort, c'est que les commande Linux y sont reconnues.

Le principe de ce shell, n'est pas de traiter du texte comme sous Linux, mais des objets (grosso modo du C#) pour des exemples comparants la syntaxe avec KSH :

http://blogs.msdn.com/powershell/archive/2006/04/25/583272.a(...)

Enfin bref, une bonne nouvelle pour les admins Linuxiens qui ont aussi des serveurs Windows.

> Lire le journal (174 commentaires, moyenne: 3).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

GNU is Not Unix

Posté par ptifeth (page perso, ) le 15/11/2006 à 13:13. (lien). Évalué à 9.

Those who do not understand Unix are condemned to reinvent it, poorly.

Henry Spencer, November 1987

  • [^]Re: GNU is Not Unix

    Posté par Fabien Engels (page perso, ) le 15/11/2006 à 13:22. (lien). Évalué à 5.

    En quoi, c'est plus pauvre ? Tu devrais regarder le lien montrant la syntaxe, ça donne des choses assez sympa. Enfin bref, j'ai fais l'erreur de mettre "Microsoft" dans le journal ^_^

    C'est sur que c'est pas aussi mature que du Bash et consort, mais au moins ça va dans le bon sens. Et ça fait un argument a envoyer aux anti linuxien primaires qui considère la ligne de commande comme has-been.

    • [^]Re: GNU is Not Unix

      Posté par Yth (Jabber id, ) le 15/11/2006 à 13:29. (lien). Évalué à 10.

      Ben... *C'est* has-been la ligne de commande, c'est juste qu'on n'a pas encore inventé mieux...

      Yth.

Amis journalistes

Posté par plagiats () le 15/11/2006 à 13:31. (lien). Évalué à 5.

Prenez le temps de lire les commentaires de http://blogs.msdn.com/powershell/archive/2006/04/25/583272.a(...) avant de faire "woaaw" sur les exemples.

--
La mort est un phénomène naturel qui se produit par l'avalement répété de petites quantités de salive au cours d'une grande période de temps. - George Carlin
  • [^]Re: Amis journalistes

    Posté par Guinns (page perso, ) le 15/11/2006 à 13:41. (lien). Évalué à 5.

    De toute facon ca ce voit au premier coup d'oeil ... les exemples mettent en valeur le fait que avec le powershell, c'est plus facile : c'est sur qu'en choisissant des commandes bourrées de sed , awk et compagnie, ca fait des commandes un peu obscures quand on ne maitrise pas.
    Mais en fait c'est du vent !
    Déjà l'auteur ne semble pas connaitre des commandes comme "pkill" ou "du", ensuite, il est facile d'imaginer de simples aliases/fonctions ou commandes supplémentaires pour reproduire les "super" possibilités de ce powershell ...

    A la rigueur, seule la syntaxe objet "xxx.methode" est nouvelle, mais entre manipuler des objets et des chaines de carcateres, y'a en effet un grand pas à franchir ... les exemples ne vont pas bien loin, il faudrait vraiment voir quelles sont les possibilités d'extension et d'utilisation dans des cas de besoin réels ...

    • [^]Re: Amis journalistes

      Posté par Hrundi V. Bakshi () le 15/11/2006 à 13:52. (lien). Évalué à 8.


      Déjà l'auteur ne semble pas connaitre des commandes comme "pkill" ou "du"


      En général, il ne faut jamais prendre de l'incompétence pour de la malice. Cependant, dans le contexte fortement marketing...

    • [^]Re: Amis journalistes

      Posté par ploum (page perso, ) le 15/11/2006 à 13:53. (lien). Évalué à 6.

      ce qui transparait de manière évidente c'est que tu es limité à faire ce que l'objet te permet de faire.

      Le texte, tu le manipules comme tu veux.

      $process.memory pour avoir la mémoire. Ok. Mais si tu veux faire autre chose ?

      En plus l'argument comme quoi "la commande avec ps -e est fragile. Que se passe-t-il sur les systèmes ou y'a pas de -e à ps ?"

      naaaan... pas possible ? Et on fait quoi sur les systèmes ou $process à pas de .memory ??

      Vraiment pas convaincu sur ce coup-ci.

      • [^]Re: Amis journalistes

        Posté par TImaniac (page perso, ) le 15/11/2006 à 14:05. (lien). Évalué à 8.

        ce qui transparait de manière évidente c'est que tu es limité à faire ce que l'objet te permet de faire.

        Le texte, tu le manipules comme tu veux.

        En .NET (vu que c'est du .NET dessous), tous les objets héritent de la méthode ToString. Donc après tu fais ce que tu veux :)

        • [^]Re: Amis journalistes

          Posté par briaeros007 () le 15/11/2006 à 14:38. (lien). Évalué à 7.

          Heureusement que sous linux c'est pas le cas :
          tu lance ton kernel, tu as une merde tu veux booter sur init=/bin/sh
          Non non faut récup les librairies .net avant :-d

          --
          Subete ga wakatta toki…watashi ga anta wo korosu.
          • [^]Re: Amis journalistes

            Posté par Sytoka Modon (page perso, ) le 15/11/2006 à 21:30. (lien). Évalué à 2.

            C'est clair que le shell UNIX est au coeur du système et que de très grande partie sont scripté en shell.

            Un des problèmes est que Windows ne démarre pas en mode terminal même si j'ai cru voir qu'une version de Vista le pourra. Le problème suivant est je n'ai pas connaissance qu'une seule partie de l'OS soit pour le moment en script. Il y a donc encore du boulot pour avoir un système souple et adaptable facilement.

            Sur un UNIX, toute la connaissance que l'on apprend dans le terminal peut ensuite être réutiliser au coeur du système. C'est très positif.

            Ce nouveau shell windows, c'est bien mais n'aurait-il pas été plus intéressant pour Microsoft d'intégrer un langage de script existant (et non de shell) à .Net, un langage dont le coeur est objet, je pense à Ruby par exemple, pour ensuite reprogrammer un partie de Windows en script justement.

            • [^]Re: Amis journalistes

              Posté par golum () le 15/11/2006 à 21:45. (lien). Évalué à 3.

              http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPytho(...)

              Désolé Ruby ca sera pour une autre fois o:)

              • [^]Re: Amis journalistes

                Posté par Sytoka Modon (page perso, ) le 15/11/2006 à 21:52. (lien). Évalué à 2.

                J'ai fait exprès de mettre Ruby pour ne pas tomber dans le troll Perl/Python.

                Python, c'est bien mais comme Perl, c'est pas du pur objet.

                Ruby est complètement objet dès le début, avec l'intropection et tout et tout. Bref, cela me parait clairement un meilleur choix pour l'architecture .Net. Et c'est pas parce que je suis fanat de Ruby, je ne l'a jamais vraiment utilisé...

                • [^]Re: Amis journalistes

                  Posté par TImaniac (page perso, ) le 15/11/2006 à 22:28. (lien). Évalué à 2.

                  Le but de .NET c'est aussi de proposer le choix des langages : .NET a déjà de nombeux langages de script, que ce soit JScript (javascript en gros), IronPython, Boo ou encore RubyCLR. Pourquoi choisir tel ou tel langage ? Question de situation. Visiblement Microsoft a préférer faire un nouveau langage de script, fortement inspiré de la syntaxe C/C#, orienté script. Après on aime ou on aime pas, les goûts et les couleurs hein :) La syntaxe C a quand même l'avantage d'être la plus "traditionnelle" et donc la plus compréhensible par tous.

                  • [^]Re: Amis journalistes

                    Posté par Sytoka Modon (page perso, ) le 15/11/2006 à 23:04. (lien). Évalué à 4.

                    Je sais qu'on n'aime pas dire du mal de python sur ce site mais de la à perdre des points...

                    Sinon, je sais que .Net est ouvert sur les langages, cela n'empêche que Microsoft pousse particulièrement C# devant les autres.

                    Au niveau des langages de scripts qui existe, je persiste à penser que Ruby est plus proche de l'esprit .Net que Python (Ben oui, en Python, on se traine le self pour chaque méthode... C'est pas mieux en Perl).

                    Ensuite, Ruby est aussi basé sur une syntaxe à la C, bien plus que Python.

                    Bref, je ne critique pas le choix du shell de Microsft ici au niveau syntaxe. Mais à partir du moment ou ils ont fait un choix pour privilégier un langage compilé à typage fort (C#) et un langage shell, je dis simplement qu'ils auraient pu faire le choix pour un langage de script.

                    • [^]Re: Amis journalistes

                      Posté par Laurent Pointal (page perso, ) le 16/11/2006 à 12:28. (lien). Évalué à 1.

                      Je sais qu'on n'aime pas dire du mal de python sur ce site mais de la à perdre des points...
                      Paf, -1 (non, je plaisante)

                      Ben oui, en Python, on se traine le self pour chaque méthode...
                      C'est fait exprès, c'est expliqué là pourquoi (en anglais):
                      http://effbot.org/pyfaq/why-must-self-be-used-explicitly-in-(...)

                      --
                      (pub: Livres à prix réduit sur http://www.sollire.com/ - la boutique de mes petites soeurs)
                      • [^]Re: Amis journalistes

                        Posté par Sytoka Modon (page perso, ) le 16/11/2006 à 19:44. (lien). Évalué à 2.

                        Je sais que c'est fait exprès, mais du coup, ce n'est plus vraiment un langage pur objet.

                        C'est pas forcément un mal. Perl6 avec Parrot prennent aussi une direction intéressante. Ils ont choisis de ne pas faire du pur objet pour pas mal de raison et notament cela permet de faire du multi-dispatch.

                        Bref, j'essaye de me placer ici dans le contexte .Net (que je connais très mal) et non dans mon contexte personnel ;-)

                • [^]Re: Amis journalistes

                  Posté par Pinaraf (Jabber id, ) le 16/11/2006 à 21:57. (lien). Évalué à 2.

                  Tu peux détailler ton "Python c'est pas du pur objet" ?

        • [^]Re: Amis journalistes

          Posté par Matthieu MARC () le 15/11/2006 à 14:52. (lien). Évalué à 2.

          on en revient continuellement au problème de l'oeuf et de la poule : en quoi faut-il écrire nos scripts et applis pour configurer windows la première fois et pour lui installer par exemple le framework ?

          Microsoft a une solution autre que vbscript ou part-il dans le tout-framework ?

        • [^]Re: Amis journalistes

          Posté par Guinns (page perso, ) le 15/11/2006 à 18:48. (lien). Évalué à 3.

          En effet ... mais est-ce que ca offre la même souplesse ?

          Par exemple, pour le stockage des informations dans un fichier:
          le résulatt du "ps" je peux le vider dans un fichier, ensuite, je peux tout à fait relire ce fichier (humainement parlant:c'est du texte), mais je peux aussi réutiliser ce fichier en le vidant dans d'autres commandes comme si c'était le résultat direct de mon "ps".

          Qu'en est-il ici ?
          Si je balance le résulat de mon "getprocess" dans un fichier :
          - pourrais humainement relire ce fichier ?
          - pourrais effectuer un "stopprocess < mon_fichier" ?

          • [^]Re: Amis journalistes

            Posté par golum () le 15/11/2006 à 19:38. (lien). Évalué à 1.

            "pourrais humainement relire ce fichier ?"

            Ben la méthode toString comme son nom l'indique étant réservé à l'affichage il vaut mieux que ses concepteurs aient prévu un format lisible

            • [^]Re: Amis journalistes

              Posté par Guinns (page perso, ) le 15/11/2006 à 20:50. (lien). Évalué à 5.

              Evidemment !
              Mais est ce qu'une redirection dans un fichier permettra ensuite une utilisation identique lors de la lecture du fichier vers d'autres commandes ?
              Y'a 2 besoins dans ma remarque, les unix-shell répondent aux 2, est-ce que le power shell le fait aussi ?
              (je rajouterai presque un "faut lire jusqu'au bout!")

              • [^]Re: Amis journalistes

                Posté par Sytoka Modon (page perso, ) le 15/11/2006 à 21:00. (lien). Évalué à 4.

                Je suis d'accord avec toi.

                Le principe de base du shell est d'être unifié avec l'approche fichier d'UNIX.

                Donc, on doit tout pouvoir rediriger dans un fichier puis traiter ce fichier plus tard ou balancer dans un pipe. Bref, il n'y a pas de différence entre pipe et fichier.

                La, si le pipe n'est pas un "fichier", cela change tout.

                C'est vrai qu'on a tendance à balancer dans un fichier en remplacement d'un stockage dans une variable. Mais quand même...

                Bref, ce nouveau shell, faut le voir à l'usage.

                • [^]Re: Amis journalistes

                  Posté par TImaniac (page perso, ) le 15/11/2006 à 22:45. (lien). Évalué à 5.

                  L'astuce, c'est que la plupart des objets de base du framework .NET sont "serializables" en fichier XML. Ca permet de faire des choses comme ca dans le powershell :
                  PS> $a=get-process ps
                  PS> $a

                  Handles PM(K) WS(K) VS(M) Id ProcessName
                  ------- ----- ----- ----- -- -----------
                  270 18536 25188 127 804 ps
                  514 55288 56944 175 2356 ps

                  PS> get-process ps |export-clixml abc.xml
                  PS> import-clixml abc.xml

                  Handles PM(K) WS(K) VS(M) Id ProcessName
                  ------- ----- ----- ----- -- -----------
                  270 18536 25188 127 804 ps
                  562 55300 56956 175 2356 ps

                  (désolé pour les tabulations)
                  Bref, tu ne perds pas le type de tes objets :)

                  • [^]Re: Amis journalistes

                    Posté par Sytoka Modon (page perso, ) le 15/11/2006 à 23:06. (lien). Évalué à 2.

                    Effectivement, j'avais oublié cela.

                    Bon d'un point de vu syntaxe, c'est pas très beau. Peut être des redirection < et > particulière serait les bienvenues.

      • [^]Re: Amis journalistes

        Posté par TImaniac (page perso, ) le 15/11/2006 à 15:36. (lien). Évalué à 4.

        $process à pas de .memory
        Là l'intérêt c'est que ta variable process est typée par une classe du framework, en l'occurence System.Diagnostics.Process ( http://msdn2.microsoft.com/fr-fr/library/system.diagnostics.(...) ). C'est compilé, en standard dans le framework. Bref, t'es sûr que ta propriété "memory" existe. C'est d'ailleur tout l'intérêt du truc.
        Et le truc génial c'est surtout que tu peux faire :
        foreach($proc in get-process){ $proc.
        là tu appuis sur [TAB] et il te propose l'ensemble des propriétés de l'objet $proc, il a deviné tout seul qu'il était de type Process par introspection sur la méthode get-process qui renvoie une List < Process > .

        • [^]Re: Amis journalistes

          Posté par kowalsky () le 15/11/2006 à 17:47. (lien). Évalué à 10.

          ça a l'air trop bien, dommage que ça n'existe pas sous unix, on pourrait
          refaire tout ce qu'on fait deja, mais en different...!

          --
          You got the money, I got the soul.

ya du progrès

Posté par Christophe Merlet (page perso, ) le 15/11/2006 à 14:10. (lien). Évalué à 10.

Whaouu, ya un bond technologique indéniable chez Microsoft.

Mais est-ce que ça permet d'administrer à distance des serveurs Windows avec autant de facilité et de puissance que sous Linux ?


Avec Linux/SSH/Bash je peut controler à 200% mes machines. Y compris mettre à jour une distrib après avoir modifier les partitions du disque système en seulement 3 reboots...

La puissance du shell unix, vient du fait qu'on assemble la puissance et la fonctionnalités de plein de programmes indépendants les uns des autres. Chacun de ces programmes ayant eux-mêmes des capacités insoupconnées et extensibles.

Ici avec ce shell de MS on est limité aux fonctions intégrés. Certes le bond est prodigieux comparé à command.com, mais encore bien loin d'un vrai shell.

  • [^]Re: ya du progrès

    Posté par Fabien Engels (page perso, ) le 15/11/2006 à 14:24. (lien). Évalué à 1.

    Je me posai la question d'un SSH, je sais qu'il existe des serveurs SSH sous Windows mais la plupart sont payants (enfin je crois). Mais si ça peut marcher avec un serveur SSH ça pourrait etre pas mal.

    Aprés les outils en ligne de commande comme fdisk me semble pas existait mais rien empecherait des projets de le faire, non ? (je sais pas si Microsoft offre une API ou aux autres pour interagir avec les partoches et compagnie).

    • [^]Re: ya du progrès

      Posté par Guid (page perso, ) le 15/11/2006 à 15:13. (lien). Évalué à 5.

      Je me posai la question d'un SSH, je sais qu'il existe des serveurs SSH sous Windows mais la plupart sont payants (enfin je crois). Mais si ça peut marcher avec un serveur SSH ça pourrait etre pas mal.


      Openssh server existe sous windows et fonctionne bien.

    • [^]Re: ya du progrès

      Posté par Laurent Pointal (page perso, ) le 16/11/2006 à 12:34. (lien). Évalué à 2.

      Je me posai la question d'un SSH, je sais qu'il existe des serveurs SSH sous Windows mais la plupart sont payants (enfin je crois).

      Copssh n'est pas payant, est assez simple à installer, et fonctionne bien.

      http://www.itefix.no/phpws/index.php?module=pagemaster&P(...)

      Je l'ai mis en place pour pouvoir faire du contrôle distant de machine via une connexion sécurisée (et via UltraVNC pour le déport d'affichage... c'est quand même sous Windows, tout ne se fait pas encore via la ligne de commande).

      Maintenant, si Microsoft rend tous ses outils d'admin utilisables avec PowerShell, ça va être sympa.

      --
      (pub: Livres à prix réduit sur http://www.sollire.com/ - la boutique de mes petites soeurs)
  • [^]Re: ya du progrès

    Posté par TImaniac (page perso, ) le 15/11/2006 à 15:29. (lien). Évalué à 3.

    Ici avec ce shell de MS on est limité aux fonctions intégrés.
    Ah non pas du tout. C'est comme sous n'importe quel unix, tu peux utiliser n'importe quel soft qui lit ou écrit sur l'entrée/sortie standard. Là c'est juste qu'il y a une gestion "intelligente" des objets .NET et COM grâce à l'introspection, offrant une approche orientée objet aux scripts.
    Alors non, ce n'est pas limité aux fonctions prédéfinis, c'est plutôt extensible à l'infini.

  • [^]Re: ya du progrès

    Posté par pasBill pasGates () le 15/11/2006 à 23:48. (lien). Évalué à 2.

    Pas besoin de ca, il y a deja qqe chose qui existe depuis longtemps et qui fait ca tres tres bien, ca s'appelle WMI, et niveau simplicite et homogeneite ca ridiculise ssh (va t'amuser a faire un ssh sur 2500 machines differentes de ton parc pour effectuer qqe operations, meme avec un script c'est tres rigolo), d'un autre cote, SSH et WMI sont pas prevus pour la meme chose, SSH n'a jamais ete prevu pour faire de l'administration de gros parcs a distance, c'est juste un abus d'utilisation par manque d'outils adaptes.

    La puissance du shell unix, vient du fait qu'on assemble la puissance et la fonctionnalités de plein de programmes indépendants les uns des autres. Chacun de ces programmes ayant eux-mêmes des capacités insoupconnées et extensibles.

    Ici avec ce shell de MS on est limité aux fonctions intégrés. Certes le bond est prodigieux comparé à command.com, mais encore bien loin d'un vrai shell.


    Ah bon ? T'as vu ou qu'il etait impossible d'ajouter tes propres commandes ?

    • [^]Re: ya du progrès

      Posté par Christophe Merlet (page perso, ) le 16/11/2006 à 00:37. (lien). Évalué à 6.

      > SSH n'a jamais ete prevu pour faire de l'administration de gros parcs a distance

      Mais comment qu'ils font alors pour administrer les clusters du top500 ??!!
      Ils vont devant chaque noeuds de calcul une disquette à la main pour mettre à jour les logiciels ?

      • [^]Re: ya du progrès

        Posté par pasBill pasGates () le 16/11/2006 à 03:27. (lien). Évalué à 3.

        Ils utilisent un tas d'outils differents, dont SSH, ca veut pas dire que c'est le meilleur outil possible pour ce job.

        Mais a mon avis tu n'as aucune idee de ce que WMI est et est simplement convaincu que SSH est ce qu'il y a de mieux pour ce boulot.

        Qu'on ne s'y trompe pas, SSH est un tres bon soft, mais ca veut pas dire qu'il est adapte a toutes les situations.

      • [^]Re: ya du progrès

        Posté par Sytoka Modon (page perso, ) le 16/11/2006 à 06:48. (lien). Évalué à 4.

        Il y a des outils pour administrer les clusters qui ont la particularité d'avoir des noeuds homogène dans de nombreux cas.

        Sinon, pour un parc hétérogène, ssh ne suffit pas. ClusterSsh aide et permet d'administrer par exemple un vingtaine de machine en parallèle mais ce n'est pas suffisant.

        Très vite se pose le problème de la gestion au quoditien...

        Personnellement, j'utilise cfengine qui autoconfigure tous mes postes Linux et permet de gérer de manière souple et dans le temps des machines très différentes de manière centralisé.

    • [^]Re: ya du progrès

      Posté par Guillaume Knispel () le 16/11/2006 à 13:04. (lien). Évalué à 7.

      WMI a pas vraiment besoin de ridiculiser SSH vu que c'est pas du tout la même chose et que ca sert pas du tout à la même chose.
      Et evidemment qu'il faut eviter d'administrer 2500 machines une par une avec du SSH...
      Par contre les outils adaptés (dont certains se servent de SSH comme primitive d'ailleurs, pas besoin de reinventer la roue), je dirais qu'il y en a plutot trop que pas assez :)

comme dcop/dbus ?

Posté par Johann Ollivier-Lapeyre (page perso, ) le 15/11/2006 à 14:23. (lien). Évalué à 7.

Avec dcop/dbus, on peut faire la meme chose, on a acces en ligne de commande a la structure objet des applications, propriété... bref, ca a franchement l'air d'y ressembler. (et au passage, c'est extrement puissant).

C'est par contre limité aux appli graphique gnome/kde qui gerent kcop/dbus, il manque ca sur toute la couche systeme.

--
----------------------------------------------------------------
KDE - Kopete - Oxygen - KDEgames
  • [^]Re: comme dcop/dbus ? bsh , js shell, ipython

    Posté par free2.org (page perso, ) le 15/11/2006 à 17:51. (lien). Évalué à 1.

    on a acces en ligne de commande a la structure objet
    Dans ce genre on peut citer aussi:
    java bsh: http://www.beanshell.org/
    js shell: http://developer.mozilla.org/en/docs/Introduction_to_the_Jav(...)
    ipython: http://ipython.scipy.org/moin/

    • [^]Re: comme dcop/dbus ? bsh , js shell, ipython

      Posté par golum () le 15/11/2006 à 20:33. (lien). Évalué à 3.

      Je ne connais pas ipython mais si c'est ce à quoi je pense, c'est juste un shell python interactif un peu amélioré.

      Tout comme python, il ne t'offre pas un véritable accès aux entités du système en tant qu'objets.

      J'illustre ca par un exemple:
      Je veux ouvrir le répertoire courant et récupérer la liste de tous les fichiers qu'il contient


      import os
      l=os.listdir('.')
      l
      ['..... j'obtient tous les fichiers du système dans une liste...]

      print l[0].__class__
      --- > <type 'str'>


      On obtient une chaine au lieu d'un objet "File"

      J'ai la complétion sur une chaine et non sur un objet File.
      Je suis donc obligé de me palucher toute la doc de python pour connaitre la fonction d'accès du groupe sur ce fichier et découvrir stat dans le module os
      os.stat(l[0]).st_gid
      qui me renvoie encore un type de base.


      Avec un shell objet j'aurais : l|0].get_Group()
      et je pourrais lui appliquer un setGroup à la volée

      Remarquez que ce n'est pas inhérent au langage python mais simplement à la conception de la librairie qui est parti du paradigme procédural (wrapper au dessus de POSIX j'imagine)

      Pour obtenir un truc équivalent sous Linux, il faudrait faire une rétroconception sur tout le système puis créer une API objet qui serait en fait une facade au dessus des fonctions de base du noyau (écrites en C)
      Ainsi tous les langages et frameworks pourraient s'appuyer dessus
      y compris Gnome et KDE qui proposent déjà à travers DBUS un accès à des objets d'applications.

      J'imagine que c'est ce qui a été fait avec .NET car je doute que Windows soit un OS purement objet.

      A ce propos Timaniac :

      Est-ce que Mono propose cette API ? Si tel est le cas, il suffit de se baser dessus pour se créer un shell à la powershell.(avec une syntaxe Ironpython ca serait top)
      Je me doute qu'étant donné la différence de conception entre les 2 os, il doit y avoir des incompatibilités (genre ACL pour Windows et droits à la UNIX par défaut si l'on active pas les ACL sous Linux)

      Mono permet t'il réellement l'interopérabilité ?

      • [^]Re: comme dcop/dbus ? bsh , js shell, ipython

        Posté par free2.org (page perso, ) le 15/11/2006 à 22:05. (lien). Évalué à 1.

        Pour obtenir un truc équivalent sous Linux, il faudrait faire une rétroconception sur tout le système puis créer une API objet qui serait en fait une facade au dessus des fonctions de base du noyau (écrites en C)
        Le java bsh ci-dessus donne accès à toutes les classes de la plate-forme java, et donc encapsule de manière objet la plupart des API d'un OS.
        Avec XUL et ActionScript, le js shell devrait évoluer dans le même sens.

        • [^]Re: comme dcop/dbus ? bsh , js shell, ipython

          Posté par hophophop () le 15/11/2006 à 23:33. (lien). Évalué à 2.

          beanshell, c'est reste quand meme une commande java interactive, une syntaxe un peu plus souple et surtout avec des perfs plutot faiblardes.
          Surtout que l'api java est quand meme mechamment limitee pour penser en faire une ligne de commande.

          Bref, ca a une utilite certaine, mais ca n'a pas du tout la meme finalite que ce shell.

          • [^]Re: comme dcop/dbus ? bsh , js shell, ipython

            Posté par free2.org (page perso, ) le 16/11/2006 à 12:11. (lien). Évalué à 4.

            Surtout que l'api java est quand meme mechamment limitee pour penser en faire une ligne de commande.
            Tu penses à quoi ? Il y a les droits d'acces et les ACL par exemple dans java
            .et surtout avec des perfs plutot faiblardes.
            Quand on veut des perfs on utilise pas un script.

            Bref, ca a une utilite certaine, mais ca n'a pas du tout la meme finalite que ce shell.
            Ce serait intéressant d'argumenter cela par un exemple.

            • [^]Re: comme dcop/dbus ? bsh , js shell, ipython

              Posté par hophophop () le 16/11/2006 à 13:29. (lien). Évalué à 2.

              j'ai mange pas mal de beanshell ya de ca 2-3 ans, le projet a surement du evolue a l'epoque, ce que j'en retiens c'est surtout ca :
              - ENORME bug dans l'interpreteur : impossible de scripter une classe qui prend un double ou un long en argument. reponse du mainteneur au bug :
              http://sourceforge.net/tracker/index.php?func=detail&aid(...)
              Un an pour fermer un bug critique. et encore, "for next release".

              Tu penses à quoi ?
              je pense que faire un exec() pour lancer une commande externe, c'est pas une solution acceptable pour un shell. De meme, pour les pipes, et les redirections, bon courage.

              Il y a les droits d'acces et les ACL par exemple dans java
              ah oui, c'ets d'un plaisir a manipuler d'ailleurs...

              Quand on veut des perfs on utilise pas un script.
              mouais, enfin ya perf et perfs, la c'etait reellement ras des paquerettes, meme sur des trucs cons for (int i = 0; i<borne; i++)

              Ce serait intéressant d'argumenter cela par un exemple.
              Possibilite de tester du code java vite fait sans avoir a sortir l'artillerie lourde (console java interactive quoi), possibilite de rajouter du code java sans avoir a le compiler. Je l'avais utilise dans un outil destine a des ingenieurs qui savaient coder, mais qui avaient besoin d'un langage proche de ce qu'il connaissaient (la base du c/c++), mais plus souple au niveau syntaxique. Ca s'integre tres facilement dans un programme java qui plus est.

              Bref un bon outil dans la sphere java. Mais un shell, non, je m'insurge.

              • [^]Re: comme dcop/dbus ? bsh , js shell, ipython

                Posté par free2.org (page perso, ) le 17/11/2006 à 14:36. (lien). Évalué à 1.

                Oui enfin les modifications nécessaires que tu évoques ne sont pas profondes.
                D'ailleurs y'a vraiment de l'espoir que tous les shells et scripts puissent accéder facilement à la plateforme Java:
                http://jakarta.apache.org/bsf/
                http://groovy.codehaus.org/

                • [^]Re: comme dcop/dbus ? bsh , js shell, ipython

                  Posté par free2.org (page perso, ) le 17/11/2006 à 14:46. (lien). Évalué à 1.

                  j'ajoute celui-la:
                  http://eclipse-shell.sourceforge.net/index.html
                  EclipseShell allows you to use

                  * JRuby
                  * Beanshell
                  * JavaScript (Rhino) to script your Java classes.

                  Eclipse shell allows you to do this by

                  * providing an interactive Editor with AutoComplete and other amenities, so you don’t have to mess with ugly readline interpreters.
                  * automatically setting up the CLASSPATH to your classes and the libs, taken from your Workspace Project settings.
                  * making it easy to store and reuse the history of your interactive sessions

      • [^]Re: comme dcop/dbus ? bsh , js shell, ipython

        Posté par TImaniac (page perso, ) le 15/11/2006 à 22:22. (lien). Évalué à 4.

        Est-ce que Mono propose cette API ?
        Oui et non. Globalement ce qu'apporte le Power Shell, c'est l'ensemble des fonctions permettant de récupérer "rapidement" des infos du système. Bref, une tripoté de script et d'alias. Sinon pour les types sous-jacents, c'est les types du framework .NET dessous, largement implémentés par Mono.
        Donc par exemple, la méthode get-process qui retourne tous les processus n'existe pas dans Mono. Par contre la méthode get-process retourne une liste d'objet de la classe System.Diagnostics.Process, implémentée par Mono. Ses propriétés et méthodes sont identiques à celles disponible dans le power shell : Id, Kill(), etc. (cf http://msdn2.microsoft.com/fr-fr/library/system.diagnostics.(...) )
        Je me doute qu'étant donné la différence de conception entre les 2 os, il doit y avoir des incompatibilités
        Globalement le framework .NET est bien indépendant de l'OS. La contre-partie, c'est que certaines infos ne sont pas disponible. MS propose donc des extensions spécifiques à Windows (gestion IIS, ActiveDirectory, etc.). Mono de son côté a un namespace Mono.Unix ( http://www.go-mono.com/docs/monodoc.ashx?tlink=0@N%3aMono.Un(...) ) qui offre une surcouche à des fonctionnalités spécifiques de nos OS.

        Mono permet t'il réellement l'interopérabilité ?
        On peut imaginer une bonne partie des scripts "compatibles", avec des spécificités pour chaque OS forcement.

        • [^]Re: comme dcop/dbus ? bsh , js shell, ipython

          Posté par andeus () le 16/11/2006 à 01:33. (lien). Évalué à 5.

          hop, t'es partis pour nous faire un OpenPowerShell ? :)

          • [^]Re: comme dcop/dbus ? bsh , js shell, ipython

            Posté par el_mickey () le 16/11/2006 à 13:44. (lien). Évalué à 2.

            Je plussoie fortement pour que TImaniac nous ponde ça. :) Bien entendu, je ,e connais pas son emploi du temps et donc si il a le temps. Mais ce serait une bonne maniére pour lui de nous démontrer la puissance de mono qu'il n'arrete pas de défendre à tort ou à raison je n'ensais fichtrement rien.

Je me marre ...

Posté par Thomas Douillard () le 15/11/2006 à 15:20. (lien). Évalué à 9.

En voyant les commentaires. On retrouve un schéma classique ici

Annonce -> "machin va faire X"
Commentaires -> "Mouah, ca va être pourri, on peut déja faire ça avec Y"
Sortie de X -> "Mouah, c'est pourri, on peut déja faire ça avec Y, en plus il avaient annoncé Z et c'est pas sorti"

...

Le temps passe -> "Cool, X sors sous Linux! on va pouvoir faire Ça Ça et Ça, ç'est super cool"


Et ça marche avec plein de trucs, GUI potable/CLI par exemple, quoi que c'est peut être pas le bon journal pour dire ça ...

Ici, on peut bien sûr remplacer X par un shell objet qui peut manipuler le système en entier, et Y par un shell "chaines de caractère et fichiers"

Quoi que, on a déja des trucs dans ce sens sous linux, que ce soit des shells objets ou des trucs comme Dbus, mais faudrait intégrer et développer un peu tout ça, et que des gens s'exatasient déja de pouvoir manipuler les applis kde en ligne de commande ou dans des scripts.

  • [^]Re: Je me marre ...

    Posté par Aurélien Girard () le 15/11/2006 à 15:54. (lien). Évalué à 3.

    Pour une fois que ni BeOS ni l'Amiga ne faisaient la même chose il y a 10 ou 20 ans je trouve que les travaux de Microsoft sur un shell objet sont très intéressants.

  • [^]Re: Je me marre ...

    Posté par Yth (Jabber id, ) le 15/11/2006 à 15:56. (lien). Évalué à 5.

    Euh, ça fait quoi concrètement un shell « objet » à part rajouter un super buzzword à un truc simple ?

    Yth, perplexifié...

    • [+] [^]Re: Je me marre ...

      Posté par Jean-Philippe Garcia Ballester (Jabber id, page perso, ) le 15/11/2006 à 16:07. (lien). Évalué à -6.

      Ouais, c'est clair, de toutes façons, le seul vrai langage, c'est le C.

      Jean-Philippe, pas du tout ironique

    • [^]Re: Je me marre ...

      Posté par TImaniac (page perso, ) le 15/11/2006 à 16:13. (lien). Évalué à 8.

      Ca fait que tu manipules des objets typés et plus des chaînes de caractères toute bête. Prend par exemple des commandes qui manipules des dates. Dans le monde unix classique, tes commandes vont sortir sous forme de chaîne de caractère une date, d'autres vont se faire chier à les parser pour les interpréter. Y'a intérêt d'avoir des conventions. Mais j'imagine que certains vont utiliser la syntaxe ISO, d'autres vont plutôt mettre la valeur unix, enfin bref, c'est le bordel.
      Dans un shell typé, ben les commandes ont des arguments en entrée et en sortie qui sont typés. En l'occurence ils peuvent utiliser le type DateTime. Ce ne sont plus des chaînes de caractères qui transite d'un program à l'autre dans les pipes mais des objets. Pas de problème de typage, le type DateTime est en standard dans le framework, tout le monde comprend cette structure.
      Après on peut s'amuser avec tout le framework .NET, par exemple je veux le jour de la semaine d'aujourd'hui, je sais que Get-Date me retourne la date du jour de type DateTime, et je sais aussi qu'il y a la propriété DayOfWeek (qu'il m'a de toute façon proposé avec la completion possible grâce à l'introspection) :
      >(Get-Date).DayOfWeek
      Wednesday
      Plus fort, la méthode ToString par défaut de DateTime retourne une chaîne de caractère qui est localisée suivant l'environnement :
      >Get-Date
      mercredi 15 novembre 2006 17:11:59
      Hop c'est en français. Mais ca conserve le type sous-jacent, je peux mettre Get-Date dans une variable et la passer à une autre commande qui prend un DateTime en entrée.
      Y'a pleins d'autres avantages, suffit d'essayer.

      • [^]Re: Je me marre ...

        Posté par gnumdk (page perso, ) le 15/11/2006 à 16:38. (lien). Évalué à 3.

        Bon, je vais pas dire que c'est de la merde, c'est clair que spa mal.

        Mais bon, soyont réaliste, le systeme unix avec ses milliers de commandes plus impressionnantes les unes que les autres et ses "tubes" restera toujours plus efficace que ca...

        • [^]Re: Je me marre ...

          Posté par hophophop () le 15/11/2006 à 17:00. (lien). Évalué à 3.

          si pour toi efficace, c'est perdre son temps a batailler avec des regexp et du texte, oui, c'est efficace...

          • [^]Re: Je me marre ...

            Posté par gnumdk (page perso, ) le 15/11/2006 à 17:09. (lien). Évalué à 3.

            La plupart du temps, t'es pas obligé de batailler avec des regexp pour "parser" une commande... Y'a d'autres alternatives.

            klog:x:102:103::/home/klog:/bin/false

            Genre récupérer le home dir de klog dans cette ligne, ca se fait sans regexp et facilement, suffit de savoir compter.

            Apres, je parlais pas que de ca, je parlais de tout ce que permet de faire Unix en ligne de commande, de l'encodage audio/video à la modification d'image, à ...

            Je doute que le shell de Microsoft arrive un jour à ce niveau de puissance parce que ca n'interessera personne, tout simplement.

            • [^]Re: Je me marre ...

              Posté par TImaniac (page perso, ) le 15/11/2006 à 17:14. (lien). Évalué à 2.

              Je doute que le shell de Microsoft arrive un jour à ce niveau de puissance parce que ca n'interessera personne, tout simplement.
              Bof, ImageMagick et mencoder peuvent être lancés depuis le Power Shell de Microsoft, c'est des softs externes qui font des entrées/sorties standards, rien de bien spécifique au monde Unix :)

              • [^]Re: Je me marre ...

                Posté par gnumdk (page perso, ) le 15/11/2006 à 17:17. (lien). Évalué à 2.

                >rien de bien spécifique au monde Unix

                J'ai pas dit que c'etait spécifique mais que la quantité de soft dispo est tellement élever qu'il y'a toujours réponse à ton probleme.

                • [^]Re: Je me marre ...

                  Posté par golum () le 15/11/2006 à 21:03. (lien). Évalué à 2.

                  L'énorme quantité de commandes est à la fois un avantage et un inconvénient.

                  Il y a plein de commandes redondantes sous Unix (genre awk vs combinaison grep, cut, ....) et il faut souvent beaucoup d'investissement (Par ex se taper un bouquin complet d'Oreilly pour maitriser pleinement sed et awk)


                  Du coup on est bien souvent obligé d'en apprendre plus que nécessaire.
                  Si l'on se retrouve à relire le code d'un autre, chacun ayant sa façon de faire, il y a toujours des subtilités qui nous font perdre un temps fou.Des fois mêm en relisant son prore code on ne comprebd pas ce que l'on a voulu faire.

                  Avec une approche typé objet, il suffit de ne connaitre que les classes de base pour être opérationnel. La complétion automatique apportée par l'introspection venant à la rescousse.
                  Et celà est en général bien suffisant pour couvrir un spectre de besoins aussi large.

                  C'est donc toujours les 2 philosophies
                  TIMTOWTDI (perl n'est il pas un shell unix amélioré)
                  versus
                  KISS
                  qui s'affrontent

                  • [^]Re: Je me marre ...

                    Posté par briaeros007 () le 15/11/2006 à 21:07. (lien). Évalué à 2.

                    la poo placé sous KISS.
                    L'est tout poilu ton troll la.

                    --
                    Subete ga wakatta toki…watashi ga anta wo korosu.
                    • [^]Re: Je me marre ...

                      Posté par lambada () le 15/11/2006 à 21:17. (lien). Évalué à 3.

                      Tu connais Smalltalk ? Self¹ ? Io² ?

                      ¹ : http://research.sun.com/self/language.html

                      ² : http://iolanguage.com/

                      • [^]Re: Je me marre ...

                        Posté par Mildred (Jabber id, page perso, ) le 17/11/2006 à 21:45. (lien). Évalué à 2.

                        Merci beaucoup pour ces liens qui m'ont fait découvrir Io ... Il semblerait que ce soit le langage que j'ai toujours cherché :) dérivé de lua, lisp, smalltalk, que du bonheur.
                        Par contre, je n'arrive pas a m'abonner à la mailing list :(

                    • [^]Re: Je me marre ...

                      Posté par golum () le 15/11/2006 à 21:19. (lien). Évalué à 2.

                      Dans un shell objet, je pense qu'il ne faut pas placer tous les concepts de la poo.
                      Ca na pas pour but de se créer ses propres classes par héritage, juste d'utiliser les classes existantes pour effectuer un traitement simple.
                      Le polymorphisme peut être utile (lister tous les fichiers d'un répertoire et les traiter comme des fichiers, même si on a des réferences à des objets de la classe répertoire)

                      En fait je pensais plus à la philosophie de python qu'a KISS mais j'ai pas osé.
                      Un troll peut en cacher un autre ;-)

                  • [^]Re: Je me marre ...

                    Posté par Sytoka Modon (page perso, ) le 15/11/2006 à 21:16. (lien). Évalué à 5.

                    Personnellement, je bannis awk...

                    En effet, dès que je commence à avoir de l'awk avec du sed... je considère que Perl est plus adapté et plus maintenable (et non, je programme pas comme un gorais en Perl et oui, on peut faire du Perl lisible).

                    C'est un peu l'approche de debian

                    - simple, couche base du système -> bash

                    - compliqué -> Perl

                    Il ai vrai que l'on voit aussi de plus en plus de python...

                    L'objectif d'un shell est aussi d'être interactif, de la à faire des gros programmes... Enfin, si le shell windows remplace à la fois command.exe et le vbs système, je crois que personne ne va pleurer. Sauf que malheureusement, il n'y a pas un portage minimal sur les anciens OS !

                • [^]Re: Je me marre ...

                  Posté par pasBill pasGates () le 15/11/2006 à 23:56. (lien). Évalué à 3.

                  C'est a mon avis principalement que tu ne connais pas ce que Windows peut deja faire.

                  Par exemple, l'acces HTTP en script, sous Unix t'as wget, sous Windows t'as IE, ben oui, la magie de COM, tu peux scripter a peu pres tout ce que tu veux de IE, loader des pages, ... depuis belle lurette. Meme chose avec Word, Excel, Photoshop,...

                  Bref, la "magie" d'Unix, c'est pas si magique que ca, c'est simplement fait d'une maniere differente sous Windows.

                  Et sans parler du fait que la plupart des softs Unix tournent sous Windows aussi, donc sont directement utilisables la aussi par des scripts.

                  • [^]Re: Je me marre ...

                    Posté par Captain Choc () le 16/11/2006 à 00:18. (lien). Évalué à 3.

                    Et sous windows, tu peux aussi simplement que sous linux ajouter un disque, en faire ton disque système, sans rien réinstaller et ceci sur une simple station de travail?
                    C'est ce que j'ai fait quand j'ai acheté mon premier disque en sata.
                    J'ai juste fait la copie de quelques répertoires et, et configuré grub.
                    A la fois t'es pas le seul responsable mais ce jeu de moi j'en ai une plus grosse est ridicule. Surtout que tu peux faire tout ce que tu fais avec wget avec IE, c'est peut-être vrai, mais quand tu fais man wget, tu te rends compte qu'il risque de falloir beaucoup scripter. Quelques exemple come --debug, --force-html, --tries, --retry-connrefused, --continue....

                    --
                    Unkwon
                    • [^]Re: Je me marre ...

                      Posté par dguihal () le 16/11/2006 à 10:48. (lien). Évalué à 3.

                      En même temps pour avoir scripté régulièrement IE avec COM pour faire du test d'appli web, tu fais des choses qu'il va falloir s'arracher pour faire en script (pas impossible mais compliqué quand même).

                      Bref j'aimerais bien que FF ou konqueror soient scriptables de la même manière. (Si quelqu'un a une solution il aura toute ma reconnaissance)

                      • [^]Re: Je me marre ... greasemonkey dcop

                        Posté par free2.org (page perso, ) le 16/11/2006 à 12:14. (lien). Évalué à 1.

                        t'as regardé du coté de greasemonkey et dcop/bonobo/dbus ?

                        • [^]Re: Je me marre ... greasemonkey dcop

                          Posté par free2.org (page perso, ) le 16/11/2006 à 12:22. (lien). Évalué à 1.

                          voici un site répertoriant des scripts greasemonkey:
                          http://userscripts.org/

                        • [^]Re: Je me marre ... greasemonkey dcop

                          Posté par dguihal () le 16/11/2006 à 16:51. (lien). Évalué à 2.

                          mon besoin c'est de pouvoir a partir d'un script de type shell piloter une instance FF ou konqueror

                          Pour moi piloter c'est faire des choses du type :

                          Lancer le navigateur (facile)
                          Aller a l'URL xxxx
                          remplir le champ login avec la valeur _______
                          remplir le champ passwd avec la valeur _______
                          activer le bouton "valider"

                          greasemonkey ne me permet pas de faire ca

                          pour bonobo je ne connais pas de navigateur "bonoboisé"
                          Pas trouvé comment faire avec DCOP (genre manipuler le DOM) de la page
                          et pour DBUS j'ai un (faible) espoir mais j'ai de gros doutes

                          Avec IE et OLE c'est facile de faire ceci a partir d'un script vbs (ou js) qu'on lance avec cscript.exe

                          • [^]Re: Je me marre ... greasemonkey dcop

                            Posté par andeus () le 16/11/2006 à 17:30. (lien). Évalué à 5.

                            Il y a moyen avec konqueror/DCOP:

                            Aller a l'URL xxxx
                            dcop konqueror-X konqueror-mainwindow#X openURL xxxx

                            Executer du JS sur la page:
                            dcop konqueror-X html-widgetX evalJS "script"

                            • [^]Re: Je me marre ... greasemonkey dcop

                              Posté par dguihal () le 16/11/2006 à 20:50. (lien). Évalué à 1.

                              Ca par contre ca m'interresse, je vais fouiller merci

                              • [^]Re: Je me marre ... greasemonkey dcop

                                Posté par free2.org (page perso, ) le 17/11/2006 à 14:30. (lien). Évalué à 1.

                                de même on peut demander avec -remote à firefox d'ouvrir une page
                                et d'utiliser greasemonkey pour exécuter du JS sur cette page

                          • [^]Re: Je me marre ... greasemonkey dcop

                            Posté par Sytoka Modon (page perso, ) le 16/11/2006 à 19:30. (lien). Évalué à 2.

                            perldoc WWW::Mechanize

                            • [^]Re: Je me marre ... greasemonkey dcop

                              Posté par dguihal () le 16/11/2006 à 20:46. (lien). Évalué à 1.

                              Je viens de voir, pour info l'URL :
                              http://search.cpan.org/dist/WWW-Mechanize/lib/WWW/Mechanize.(...)

                              cependant un petit extrait :

                              Please note that Mech does NOT support JavaScript

                              donc pas utilisable dans mon cas.

                              De plus si je comprends bien, ce module emule un navigateur, et non pas cree une instance reele de navigateur, c'est pas mal déjà mais ce n'est pas ce que je souhaite.

                              Enfin merci je garde en bookmark quand même ca peut servir

              • [^]Re: Je me marre ...

                Posté par Matthieu MARC () le 15/11/2006 à 20:33. (lien). Évalué à 10.

                Power Shell

                C'est marrant, j'ai l'impression d'être dans une station service à me servir le dernier diesel ultra économique et performant !

              • [^]Re: Je me marre ...

                Posté par gnujsa () le 16/11/2006 à 05:28. (lien). Évalué à 5.

                Bin oui, pour le coup, les redirections et les pipes sont une spécificité du monde UNIX et MS n' a fait que copier. Et puis si tu te retrouve à parser la sortie de mplayer avec Power Shell, et bien au final tu fais du UNIX sous Windows.

                Pour reprendre ton exemple un peu plus haut, tu n'as pas trés bien choisi ton exemple avec 'Get-Date', car le programme date (coreutils) peut faire tout ce que tu as dit:

                (Get-Date).DayOfWeek

                date +%A

                Et alors, ça va t'étonner, comme dans PowerShell, si tu met ça dans un script, c'est automatiquement localisé suivant l'environnement :)

                Regarde:

                # j'enregistre la date:
                $ MYDATE=$(date '+%D %T %Z')
                $ echo $MYDATE
                11/16/06 05:53:25 CET

                # affichage de la date:
                $ date -d "$MYDATE"
                jeudi 16 novembre 2006, 05:53:25 (UTC+0100)

                # affichage de la date localisé suivant l'environnement:
                $ env LANG=C date -d "$MYDATE"
                Thu Nov 16 05:53:25 CET 2006
                $ env LANG=de_DE date -d "$MYDATE"
                Do 16. Nov 05:53:25 CET 2006

                # Jour de la semaine:
                $ date +%A -d "$MYDATE"
                jeudi
                $ env LANG=C date +%A -d "$MYDATE"
                Thursday

                # Toujours plus fort les GNU ...
                # le jour de la semaine, à la même date l'année prochaine
                $ env LANG=C date +%A -d "$MYDATE next year"
                Friday

                # Et la veille de cette date:
                $ env LANG=C date +%A -d "$MYDATE yesterday"
                Wednesday

                Il y a une quinzaine, il y a 3 ans, dans une minute et 12 seconde, demain de l'année dernière, ... Et bien sur tout ça en prenant soin d'ajuster aux heures d'été/d'hiver, année bisextile, etc...

                Pour moi, simple scripteur du dimanche, tout se passe comme si la variable $MYDATE avait conservé le 'type' date tout au long de ces transformations.


                P.S.
                tapez info date pour voir toutes les choses bizarres qu'on peut faire avec.

                • [^]Re: Je me marre ...

                  Posté par gnumdk (page perso, ) le 16/11/2006 à 07:27. (lien). Évalué à 4.

                  >avait conservé le 'type' date tout au long de ces transformations

                  Pas vraiment ;) C'est de la truande ton truc :p

                  gnumdk@flanders:~$ MYDATE=$(date '+%A %D %T %Z')
                  gnumdk@flanders:~$ echo $MYDATE
                  jeudi 11/16/06 08:22:35 CET
                  gnumdk@flanders:~$ LANG=C date +%A -d "$MYDATE next year"
                  date: invalid date `jeudi 11/16/06 08:22:35 CET next year'
                  gnumdk@flanders:~$

                • [^]Re: Je me marre ...

                  Posté par TImaniac (page perso, ) le 16/11/2006 à 07:44. (lien). Évalué à 2.

                  Pour reprendre ton exemple un peu plus haut, tu n'as pas trés bien choisi ton exemple avec 'Get-Date', car le programme date (coreutils) peut faire tout ce que tu as dit:

                  Houlà, j'ai jamais dis que c'était pas faisable sous Unix...
                  Déjà le PowerShell apporte l'instrospection, et donc la completion automatique, le DayOfTheWeek m'a été proposé automatiquement après le ".", pas eu besoin de me taper le man de la commande date.
                  Ensuite je voulais montrer que celui qui a fait la commende Get-Date n'a rien eu à faire pour avoir la localisation : la classe System.DateTime est déjà localisée, son script doit ressembler à : System.DateTime.Now.
                  Tu vas me dire, la localisation, c'est pas forcement la "killer feature", certes, je voulais surtout montrer qu'il y a une différence entre la valeur "affichée" et la valeure manipulée : dans le powershell c'est différencié : la date est en français ou en allemand, si dessous ta commande powershell récupère ca, tu as toujours un objet DateTime. Dans nos shell classique, faut te taper la gestion de cette date à la main.

                  Pour moi, simple scripteur du dimanche, tout se passe comme si la variable $MYDATE avait conservé le 'type' date tout au long de ces transformations.
                  Oué bah regarde le boulot qu'à du faire le mec qui a fait date comment il a dû rigoler pour parser ses dates ;) Et puis comme je l'ai précisé dans un autre post, si toi tu dois choisir de faire un programme qui doit traiter des dates, ben, tu vas devoir tenter de trouver les conventions des autres programmes pour être sûr de gérer les mêmes types de date, modulo les bugs que tu vas ajouter, etc.

                  Allez, on va voir si ta variable $MYDATE contient vraiment le type pour toi scripteur...
                  Dans mon powershell si je fais :
                  $MYDATE = get-date
                  $JOUR = get-date.Today
                  maintenant je fais :
                  $HEUREDUJOUR = $MYDATE - $JOUR
                  T'optiens quoi en faisant une différence entre 2 chaînes de caractères en bash ? ;) Moi dans le powershell j'obtient un objet TimeSpan qui indique une durée.

                  • [^]Re: Je me marre ...

                    Posté par Sytoka Modon (page perso, ) le 16/11/2006 à 19:29. (lien). Évalué à 1.

                    En général, pour la date, si je veux être portable, j'utilise deux notations :

                    - YMD

                    - timestamp

                    On obtient le second avec date %+s

                    Je crois que un des problèmes des exemples, c'est que ce sont des trucs assez classiques et qu'il existe donc déjà sous UNIX des bonnes manières pour faire vite et propre en bash.

                    Là ou le shell windows va devenir intéressant, c'est quand on va rentrer dans des choses systèmes et mélanger un peu tout cela.

                    Dans les langages de scripts, on peut faire un peu pareil avec sous Windows les modules de type Win32 (Win32:: sous Perl). Mais il faut faire le "wrapper". On peut cependant imaginer qu'avec .Net et l'introspection, il soit possible, notament avec la force de frappe de Microsoft, de mettre au point un wrapper automatique, soit lors des mises a jour des logiciels, soit avec un mécanique du type AUTOLOAD pour Perl.

                    Bref, ca manque d'un langage de script...

            • [^]Re: Je me marre ...

              Posté par Thomas Douillard () le 15/11/2006 à 17:15. (lien). Évalué à 2.

              ... Sauf que c'est pas des fonctionnalités qu'on parle, c'est du principe du shell. Imagine les fonctionnalités des commandes combinées avec le shell lui même ?

              • [^]Re: Je me marre ...

                Posté par gnumdk (page perso, ) le 15/11/2006 à 17:22. (lien). Évalué à 3.

                Ouh Ouh, tu as lu mon premier commentaire?

                Je parle du nouveau shell de Microsoft la?
                Non, je parlais de la quantité de soft dispos sous Unix en ligne de commande qui rende notre vieux shell très puissant.

                Et je me permets de douter sur l'explosion de softs en ligne de commande sous Windows du à l'arrivé de Vista.

                • [+] [^]Re: Je me marre ...

                  Posté par Thomas Douillard () le 15/11/2006 à 17:25. (lien). Évalué à -1.

                  Ton commentaire ressemble surtout à celui d'un mec vexé qui veut pas perdre la face. "oué, ok il ont sorti un truc bien. Mais quand même". Et ça, c'est parce que c'est MS, j'en suis profondément persuadé.

                  • [^]Re: Je me marre ...

                    Posté par Thomas Douillard () le 15/11/2006 à 17:28. (lien). Évalué à 0.

                    Et de renchérir : surtout quand la qualité bash/ksh/... vs cmd.exe, completion, efficacité du shell a longtemps été un sujet de raillerie de la part des linuxiens vis à vis de windows. Là sur le shell lui même ils ont pas grand chose à envier, au contraire.

                  • [^]Re: Je me marre ...

                    Posté par gnumdk (page perso, ) le 15/11/2006 à 17:44. (lien). Évalué à 2.

                    >Et ça, c'est parce que c'est MS, j'en suis profondément persuadé.
                    Exactement, je peux pas les encadrer! Surtout pbpg :p

                    Autre probleme la, je ne m'attaque pas une seconde à Pwsh, je disais juste que l'aspect ligne de commande sous Windows est mort en dehors des informaticiens (et encore, de quelques rares admins).

                    Apres, c'est plutot une bonne chose, ca marche sous Xp, c'est le genre de truc que je cherche depuis des années n'ayant ni envie de me faire chier avec les limitations de Dos ni envie d'apprendre VB.

                    Seul probleme, marche pas sous 98 et y'en a encore un paquet de ces merdes la... :(

            • [^]Re: Je me marre ...

              Posté par hophophop () le 15/11/2006 à 17:21. (lien). Évalué à 1.

              ????

              qu'est ce que ca a de specifique a unix?

              un binaire qui prend des parametres en entree et qui pond un fichier en sortie, bref input/output tout ce qu'il ya de plus con quoi...

              • [^]Re: Je me marre ...

                Posté par gnujsa () le 16/11/2006 à 05:47. (lien). Évalué à 2.

                Je suis pas un historien de l'informatique, mais pour ma part, a part des unix et des OS de MS, j'ai vu ça nul part (en gros, c'est à dire ni sur des macos, ni sur des TI 99/4A :) ). Mais on peut lire un peut partout que ça viens bien d'UNIX ou peut être de MULTICS son ancêtre:

                http://en.wikipedia.org/wiki/Standard_streams
                http://en.wikipedia.org/wiki/Pipeline_%28Unix%29

                «
                History

                The pipeline concept and the vertical-bar notation was invented by Douglas McIlroy, one of the authors of the early command shells, after he noticed that much of the time they were processing the output of one program as the input to another. The idea was eventually ported to other operating systems, such as DOS, OS/2, Windows NT, and BeOS often with the same notation.

                The robot in the icon for Apple's Automator, which also uses pipeline concept to chain repetitive commands together, holds a pipe as recognition of the application's Unix heritage.[1]
                »


                A propos de Douglas McIlroy:
                «
                Dr. McIlroy is best known for having invented:
                    * The pipes and filters architecture of Unix as seen in the Unix pipeline implementation.
                    * The entire concept of software componentry
                    * Several Unix tools, such as spell, diff, sort, join, graph, speak, tr, etc.
                »

                • [^]Re: Je me marre ...

                  Posté par hophophop () le 16/11/2006 à 08:45. (lien). Évalué à 0.

                  macos c'est un bsd, donc le pipe, il y est

                  sinon :
                  a part des unix et des OS de MS

                  et ya quoi sur le marche des os en dehors d'unix et de ms?

                  je parle de truc reellement utilises, hein...

            • [^]Re: Je me marre ...

              Posté par GPH (page perso, ) le 15/11/2006 à 23:50. (lien). Évalué à 1.

              un grep et un awk et zou :D

              --
              I would never die for my belief, because I might be wrong. - Bertrand Russell
              • [^]Re: Je me marre ...

                Posté par gnujsa () le 16/11/2006 à 05:56. (lien). Évalué à 5.

                NON NON NON, tu vas pas faire comme ces andouilles de chez MS (qui font semblant de pas savoir pour que ça ait l'air encore plus compliqué UNIX) awk sait trés bien "matcher" des lignes avec des expressions rationelles .

                   awk '/^regex$/ { ... }'

                (d'autant que awk est très rapide, beaucoup plus que sed par exemple)

                • [^]Re: Je me marre ...

                  Posté par GPH (page perso, ) le 16/11/2006 à 10:48. (lien). Évalué à 1.

                  euh ben oui mais il avait dit sans regexp ...

                  Mais en fait ca marche pas non plus parce que grep ca utilise des motifs motifs (enfin pour moi ca ressemble beaucoup aux regexp les motifs).

                  Enfin bref, tu as raison.

                  --
                  I would never die for my belief, because I might be wrong. - Bertrand Russell
        • [^]Re: Je me marre ...

          Posté par Thomas Douillard () le 15/11/2006 à 17:01. (lien). Évalué à 2.

          Ca n'a rien a voir avec les fonctionnalités ou le nombre de commande, c'est simplement un moyen d'accéder à ces fonctionnalités.

        • [^]Re: Je me marre ...

          Posté par TImaniac (page perso, ) le 15/11/2006 à 17:03. (lien). Évalué à 2.

          ais bon, soyont réaliste, le systeme unix avec ses milliers de commandes plus impressionnantes les unes que les autres et ses "tubes" restera toujours plus efficace que ca...
          Pour les commandes, c'est vrai que pour l'instant, c'est pas pléthore. Mais le framework donne déjà accès à de très nombreux service, de la manipulation de service à la gestion de serveur web en passant par les regex ou la manipulation de fichiers XML. Bref c'est déjà un bon point de départ. Et gageont que les commandes vont vite s'enrichir.
          Quand aux tubes, je vois pas trop ce qu'il y a de plus efficace, dans MS Power Shell y'a aussi les tubes, mais avec des vrais objets qui passe dedans :
          exemple :
          "get-process p* | stop-process"
          Bref, ca marche comme les pipes Unix, mais en mieux.

          • [^]Re: Je me marre ...

            Posté par Guinns (page perso, ) le 15/11/2006 à 18:38. (lien). Évalué à 2.

            Justement, puisque ce sont des objets qui sont transmis ... comment ca se passe si on envoie un objet d'un mauvais type ?
            Cad, au lieu de faire stop-process sur un objet "processus", si je le fait sur le PID du pocessus ? je me fait jeter ?

            Si oui, cela veut dire qu'il faut être hyper rigoureux et que l'on est forcé de récupérer les bons objets par les fonctions adéquates (pas moyen de construire à la mimimine ses propres valeurs).

            Si non, c'est un bon point, mais cela signifie que le "stop-process" a été codé dans ce sens, et donc qu'il faut que le programmeur ai envisagé tous les types d'objets potentiels en entrée ... ca risque de rendre long le codage de nouvelles fonctionnalités ... mais bon si M$ y mets des sous ...

            Et d'ailleurs (ch'connais pas .Net), on peut facilement recevoir des objets autres que des chaines en paramètres du main() ?

            • [^]Re: Je me marre ...

              Posté par Thomas Douillard () le 15/11/2006 à 18:44. (lien). Évalué à 2.

              Tu peut construire à la mimine ta valeur, et faire un "get-process ma_valeur_construite_a_la_mimine" j'imagine ... et si le process existe pas, get-process doit te l'indiquer. (j'ai cru entendre parler d'exceptions)

              • [^]Re: Je me marre ...

                Posté par Guinns (page perso, ) le 15/11/2006 à 18:54. (lien). Évalué à 3.

                ok, mais ca ne répond qu'a une partie de la problématique posée :
                oui, on peut faire ces propre valeurs à la mimine
                Mais faut-il systèmatiquement passer par un "get-process" (ou autre fonction renvoyant un objet processus) avant de pouvoir faire un "stop-process" ? (c'est ca que j'appelle être hyper rigoureux)

                Le bash est pour moi un langage de bidouilles sans contraintes (avec ses inconvénients comme ses avantages) ; j'ai l'impression que celui de M$ pousse à beaucoup plus de rigueur ...
                Ces 2 shells ne jouent peut-être pas dans la même cour ?

          • [^]Re: Je me marre ...

            Posté par golum () le 15/11/2006 à 20:45. (lien). Évalué à 4.

            Il y a quelque chose qui me chagrine

            Pourquoi mélanger des paradigmes objets avec des concepts de shells classiques.

            Les devs vont être tentés de recréer une pléthore de commandes juste pour retrouver leurs sensations d'avec cygwin.

            Tout ca ne me parait pas "orthogonal"

            • [^]Re: Je me marre ...

              Posté par Thomas Douillard () le 16/11/2006 à 10:34. (lien). Évalué à 2.

              Parce que ça peut être utile et pratique ?

              Les devs, ils deviendrons des dinausores ou ils comparerons à l'usage ce qui est le plus pratique à utiliser pour ce qu'ils ont à faire.
              Wait & see donc.

      • [^]Re: Je me marre ...

        Posté par Yth (Jabber id, ) le 15/11/2006 à 17:04. (lien). Évalué à 2.

        Ok, je vois l'intérêt.
        Mais ce genre de choses, on peut les faire en python, ou en perl, avec derrière pas mal de trucs vraiment puissants.

        Certes, ce n'est pas directement dans le shell, et on ne lance pas des commandes à exécuter immédiatement de la sorte, mais l'intérêt de passer des objets évolués d'un outil à un autre etc. c'est de faire des scripts un peu complexe, pas tellement de lancer des commandes à la main.

        En gros, si on avait un shell python, ça serait plus ou moins pareil ?


        Yth.

        • [^]Re: Je me marre ...

          Posté par TImaniac (page perso, ) le 15/11/2006 à 17:12. (lien). Évalué à 2.

          En gros, si on avait un shell python, ça serait plus ou moins pareil ?
          Oui effectivement, tu peux appliquer le même modèle à n'importe quel environnement de programmation de "haut niveau" avec un modèle de machine virtuelle offrant des possibilité d'introspection. Python est un bon exemple. Reste plus qu'à faire le shell (gestion des pipes, completion, etc.) et l'ensemble des commandes pour accéder à tous l'OS :)

          • [^]Re: Je me marre ...

            Posté par Yth (Jabber id, ) le 15/11/2006 à 17:27. (lien). Évalué à 3.

            Oki !
            Ca a l'air sympa ce bidule, ya de l'idée.
            Vais jeter un oeil à ce ipython dont parle Thomas juste en dessous...

            Yth.

        • [^]Re: Je me marre ...

          Posté par Thomas Douillard () le 15/11/2006 à 17:13. (lien). Évalué à 2.

          Ça ça existe déja, c'est ipython je crois. Mais iphython ce n'est pas encore tout à fait ça: il manque notament l'accès "de base" a pleins d'objets système, applis, ... pour pouvoir scripter tout ça et accéder à pleins de trucs, de piper des objets (cf les exemples), ...

          • [^]Re: Je me marre ...

            Posté par Nicolas () le 17/11/2006 à 17:14. (lien). Évalué à 1.

            euh le pipe a ete rajoute dans ipython (c'est peut etre que la version svn par contre) mais ca marche tres bien.

    • [^]Re: Je me marre ...

      Posté par Thomas Douillard () le 15/11/2006 à 16:18. (lien). Évalué à 7.

      T'as pas lu les commentaires et les liens ?

      je précise que perso, ça va pas réxolutionner ma façon de travailler, et que je m'en fiche un peu ( je dis ça, il y a des chances que je trouve des trucs à faire après)

      Déja, le flux n'est plus un flux de caractères, c'est un flux d'objet : au lieu d'avoir une ligne texte qui représente un process, avec tout ce que ça peut comporter de merde potentielle si on utilise des grep, sed, awk, mal fichus pour récupérer les infos qu'on veut, les espaces à gérer par des escape shell, tout ça, on récupère un ensemble d'objets processus.

      Ensuite, sur cet ensemble d'objet, on peut appeler des méthodes, qui vont non seulement nous donner des infos sur le processus, mais aussi de lui envoyer des ordres. Genre t'as pas besoin de récupérer le PID du process pour faire un "kill" dessus, tu appelle la méthode "kill" de l'objet process. Comme dit plus haut, tu peux facilement récupérer l'ensemble des méthodes que tu peux appliquer à ton process, pas besoin nécessairement d'apprendre 25 000 noms de commandes. Certe il existe la commande pkill ou des trucs comme ça, mais elle marche que sur les process, il faut la connaitre, etc. Là le mécanisme est plus général et plus cohérent : tu peux utiliser la même démarche avec n'importe quel type d'objet.

      Un autre avantage du système : les objets peuvent être n'importe quoi : un process, une GUI d'appli, ... Tu peux sans doute lancer, arrêter de jouer une musique en appelant les bonnes méthodes du process correspondant, sans que le programme ait été pensé pour avec une commande spécialement codée ou une API. Tu peut accéder grosso modo à l'ensemble du système, niveau applis, ou niveaux plus bas.

      En bref, c'est un mécanisme cohérent et unifié pour faire pleins de trucs, en évitant certains éceuils d'un shell classique.

      • [^]Re: Je me marre ...

        Posté par briaeros007 () le 15/11/2006 à 16:33. (lien). Évalué à 1.

        ouais enfin ... le shell c'est juste censé être utilisé pour faire qq scripts aussi, ce n'est pas pensé initialement pour programmer des applis métier complètes.

        C'est comme si sur une C1 (concu essentiellement pour la ville) tu t'amuse a mettre plusieurs mode de gestion du moteur dont 'grande vitesse' ou encore 'conduite hyper sportive' (vitesse maxi en 4em 157 kmh, et on ont l'atteind pas tout de suite le 150 km/h)...

        --
        Subete ga wakatta toki…watashi ga anta wo korosu.
        • [^]Re: Je me marre ...

          Posté par Thomas D