|
|
|
|
Bonjour à tous,
je travaille très souvent sur des postes de mon campus universitaire, où sont installés les distribs
openSUSE 10.3 et Gentoo (je sais plus quelle version).
Web developer las de devoir passer par le ftp pour vérifier chaque modification de script php, je me suis demandé s'il n'y avait pas moyen de faire plus simple. En fouillant un peu, je constate que sous les deux systèmes, je dispose de PHP mais pas d'Apache, et je n'ai pas de droits d'admin pour installer quoi que ce soit.
J'ai alors tenté de me faire un petit parser maison, en traitant un fichier php par un shell assez léger, pour obtenir un fichier htm correspondant. Problème : je m'y connais assez peu en shell... L'idée de base c'est :
php -f fichier.php > fichier.htm
Configuration: Windows XP Firefox 3.0.3
Premiers éléments de réponse.
chmod +x miniparser.shEnsuite, je l'ai édité : php -f index.php > index.parsed.htm firefox index.parsed.htm exit Reste à régler : - le nom de fichier variable ; - le passage du fichier en argument. ( M'est avis que ces deux problèmes n'en sont qu'un seul en réalité... ) - J'ai essayé d'utiliser un pipelining pour passer directement le résultat à Firefox, mais ça ne marche pas, je ne suis pas au point sur la syntaxe. # code qui ne marche pas # php -f index.php | firefoxSi vous avez une idée... Je continue à chercher. |
Solution pour le pipelining, après des heures de lecture (Google n'a pas été très amical cette fois-ci, mais j'ai fini par trouver par hasard sur wikipédia) :
firefox `php -f index.php` Et finalement, la solution du passage de paramètre avec la variable $1, trouvée sur le site d'un IUT de Paris, répond à presque toutes les autres questions : #!/bin/bash if test -f $1 then firefox `php -f $1` else echo "$1 : fichier introuvable" fiÇa marche à merveille, sauf que... sous OpenSUSE, je me suis rendu compte que php n'était pas installé. Damn it, fuck'n administrateur réseau à la noix !! Je laisse tomber pour le glisser-déposer, c'est une vieille habitude prise sous Windows, mais apparemment Gnome n'est pas aussi tolérant : si tu ne poses pas sur un dossier, il ne veut rien entendre. Le topic est donc résolu, je remercie tous ceux qui m'ont apporté leur aidé précieuse :D Bonne soirée à tous. |
Hello !
#! /bin/bash
# miniparser
if [ -f $1 ]
then
str=`basename $1`
tmp=${str%%.php*}.htm
php -f $1 > $tmp
firefox file://`pwd`/$tmp
else
echo "$1 introuvable"
fi
Je dispose en outre d’un script de nettoyage assez primitif : #! /bin/bash # cleanup rm -f *.htm Ce qui nous amène à ma question : si j’appelle rm directement dans le script « miniparser », après firefox, celui-ci n’a pas le temps de lire le fichier temporaire. Je me demande donc s’il faut utiliser un délai, ou si je peux dire à l’interpréteur quelque chose du genre : « attends que Firefox ait fini de lire ce fichier avant d’éxécuter la commande suivante ». Merci aux âmes charitables qui me répondront :P |
Salut,
if [ -f $1 ]
then
php -f $1 > ${1/\.*/.html}
firefox file://$(pwd)/${1/\.*/.html}
else
echo "$1 introuvable"
fi
Ensuite, pour ton histoire d'effacer le fichier qu'une fois le programme s'est terminé, il faut utiliser la commande "wait", mais auparavant il faut lancer firefox en arrière-plan (ceci se fait grâce à esperluette "&") et faire une pause avec la commande "wait" qui attend patiemment que le dernier "job" lancé en arrière-plan se termine pour continuer l'exécution des commandes suivantes : if [ -f $1 ]
then
php -f $1 > ${1/\.*/.html}
firefox file://$(pwd)/${1/\.*/.html} &
wait
rm -f /$(pwd)/${1/\.*/.html}
else
echo "$1 introuvable"
fi;-))
PS. Fait un test avant pour la transformation de la variable : jp@MDK:~/tmpfs ssh$ echo ${1}
essai.php
jp@MDK:~/tmpfs ssh$ echo ${1/\.*/.html}
essai.html
jp@MDK:~/tmpfs ssh$ echo $(pwd)/${1}
/home/jp/tmpfs/essai.php
jp@MDK:~/tmpfs ssh$ echo $(pwd)/${1/\.*/.html}
/home/jp/tmpfs/essai.html
jp@MDK:~/tmpfs ssh$;-))
$ man woman Il n'y a pas de page de manuel pour woman. |
Salut,
|
Re-
jp@MDK:~/tmpfs ssh$ ls -l /bin/sh lrwxrwxrwx 1 root root 4 déc 15 2005 /bin/sh -> bash* jp@MDK:~/tmpfs ssh$ Sinon, concernant la "regex", ce n'est pas gênant dans la mesure où c'est à défaut de regex plutôt une implémentation naturelle dans le shell... Voir à ce sujet le man bash et plus particulièrement le la partie "Remplacement des paramètres". ;-)) $ man woman Il n'y a pas de page de manuel pour woman. |