Votre avis me sera utile pour savoir si le projet semble avoir du sens.
"From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Date: 25 Aug 91 20:57:08 GMT
[...] just a hobby, won’t be big and professional [...]"
Pour le reste, dans l'esprit du commentaire de Michaël, je dirais que l'approche la moins bidouilleuse serait de partir sur un langage de haut niveau, statiquement typé et de le doter d'une interface adéquate par rapport à tes besoins. Ici, le domaine interface est bien défini, c'est le Shell. Je propose alors Haskell comme langage et turtle comme bibliothèque procurant une interface mimant le Shell. Gabriel Gonzalez a écrit un excellent tutoriel sur cette bibliothèque auquel je renvoie au lieu de tenter de présenter la chose ici ; voici plutôt un exemple adapté des cas d'utilisations présentés dans le journal.
#!/home/foo/.local/bin/stack-- stack runghc --package turtle{-# LANGUAGE OverloadedStrings #-}importTurtle((<$>),Alternative(empty),Applicative(pure),FilePath,MonadIO,Text,fold,input,inshell,lineToText,ls,output,unsafeTextToLine,view)importControl.Foldl(head,length)importData.Text(concat,pack)importPrelude((.),(>>),Maybe(Just,Nothing),Show(show))main=eg1>>eg2"nb_files.txt">>eg3"ls""ls_opts""log_ls"-- lseg1=(view.ls)"."-- ls -l | wc -l > nb_files.txteg2outFile=dofileCount<-fold(ls".")lengthoutFile`output`(pure.unsafeTextToLine.pack.show)fileCount-- Variation sur le thème « exécuter [un] programme externe [...] prenant en paramètre une chaine de caractères [contenue dans un fichier ...] »eg3::MonadIOio=>Text->FilePath->FilePath->io()eg3progoptFilelogFile=domayOpts<-fold(lineToText<$>inputoptFile)headcasemayOptsofNothing->outputlogFile(inshell"Bad options"empty)Justopts->outputlogFile(concat[prog," ",opts]`inshell`empty)
En rendant hommage au problème de l’œuf et de la poule, testons ce script (nommé code.hs) sous Bash.
Bref, cette bibliothèque et le Shell, c'est comme les chéloniens et les carapaces. Cependant, comme sous-entendu au début de ce commentaire, que rien ne t'arrête dans tes expérimentations car, après tout, un OS entier est né par bidouillage.
# Montre-moi ton Shell typé !
Posté par gipoisson . En réponse au journal Gufo: un langage de shell moderne!. Évalué à 4.
"From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Date: 25 Aug 91 20:57:08 GMT
[...] just a hobby, won’t be big and professional [...]"
Pour le reste, dans l'esprit du commentaire de Michaël, je dirais que l'approche la moins bidouilleuse serait de partir sur un langage de haut niveau, statiquement typé et de le doter d'une interface adéquate par rapport à tes besoins. Ici, le domaine interface est bien défini, c'est le Shell. Je propose alors Haskell comme langage et turtle comme bibliothèque procurant une interface mimant le Shell. Gabriel Gonzalez a écrit un excellent tutoriel sur cette bibliothèque auquel je renvoie au lieu de tenter de présenter la chose ici ; voici plutôt un exemple adapté des cas d'utilisations présentés dans le journal.
En rendant hommage au problème de l’œuf et de la poule, testons ce script (nommé
code.hs) sous Bash.Les sorties :
Bref, cette bibliothèque et le Shell, c'est comme les chéloniens et les carapaces. Cependant, comme sous-entendu au début de ce commentaire, que rien ne t'arrête dans tes expérimentations car, après tout, un OS entier est né par bidouillage.