Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Une sorte de redirection (?)

12 réponses
Avatar
Ph. Ivaldi
Bonjour,

Un programme, disons cmd1, admet un paramètre du genre -engine=cmd2
où cmd2 est un autre programme qui va traiter des données envoyées par cmd1.
Que dois-je mettre à la place de cmd2 pour récupérer dans un seul
fichier tout ce qui est envoyé par cmd1 ?

Merci.
--
Philippe Ivaldi.
http://piprim.tuxfamily.org/

10 réponses

1 2
Avatar
Stephane CHAZELAS
2008-10-23, 15:19(+02), Ph Ivaldi:
Un programme, disons cmd1, admet un paramètre du genre -engine=cmd2
où cmd2 est un autre programme qui va traiter des données envoyées par cmd1.
Que dois-je mettre à la place de cmd2 pour récupérer dans un seul
fichier tout ce qui est envoyé par cmd1 ?


[...]

Si dans -engine=xxx, xxx est une ligne de commande shell, alors
tu peux faire

-engine='cat > /tmp/fichier'

Sinon, tu peux essayer

-engine='dd of=/tmp/fichier'

ou

-engine='tee /tmp/fichier'

Note que si cmd2 peut etre lancé plusieurs fois, il vaut
peut-etre mieux faire

-engine='cat >> /tmp/fichier'
ou
-engine='tee -a /tmp/fichier'

--
Stéphane
Avatar
Ph. Ivaldi
Le 23 octobre 2008, Stephane CHAZELAS écrivit :

-engine='cat > /tmp/fichier'



J'avais essayé ce genre de chose (avec des ") mais ça me renvoie
Cannot execute 'cat > /tmp/fichier' scrollmode
La vraie commande est:
asy -tex='cat > /tmp/fichier' essai2

Idem pour toutes les autres propositions.
--
Philippe Ivaldi.
http://piprim.tuxfamily.org/
Avatar
Jean-Marc Bourguet
Ph. Ivaldi writes:

Le 23 octobre 2008, Stephane CHAZELAS écrivit :

> -engine='cat > /tmp/fichier'

J'avais essayé ce genre de chose (avec des ") mais ça me renvoie
Cannot execute 'cat > /tmp/fichier' scrollmode
La vraie commande est:
asy -tex='cat > /tmp/fichier' essai2

Idem pour toutes les autres propositions.



Ecrire un petit script qui fait ce que tu veux?

A+

--
Jean-Marc
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Avatar
Ph. Ivaldi
Le 23 octobre 2008, Jean-Marc Bourguet écrivit :

Ecrire un petit script qui fait ce que tu veux?



J'ai essayé mais je n'arrive pas à "récupérer le flux" (désolé pour le
vocabulaire, je ne suis pas informaticien).

Par exemple comment donner à manger à ça
while read line; do echo -e "$linen"; done < ????
--
Philippe Ivaldi.
http://piprim.tuxfamily.org/
Avatar
Nicolas George
Ph. Ivaldi wrote in message :
J'ai essayé mais je n'arrive pas à "récupérer le flux" (désolé pour le
vocabulaire, je ne suis pas informaticien).

Par exemple comment donner à manger à ça
while read line; do echo -e "$linen"; done < ????



Tu as besoin d'un script parce que ton machin attend une commande simple,
juste un nom de fichier, mais dans le script lui-même, tu mets ce que tu
voulais mettre directement dans la commande : « cat > foo ».
Avatar
Ph. Ivaldi
Le 23 octobre 2008, Nicolas George écrivit :

tu mets ce que tu
voulais mettre directement dans la commande : « cat > foo ».



J'y ai aussi pensé mais il ne se passe pas grand chose.
Le fichier foo est bien créé mais il ne contient rien et la commande
cmd1 ne termine jamais.
Même en ne mettant que "exit 0;" dans le script, cmd1 ne termine pas.
cmd1 doit attendre quelque chose en retour...
--
Philippe Ivaldi.
http://piprim.tuxfamily.org/
Avatar
Alain Ketterlin
Ph. Ivaldi writes:

Le 23 octobre 2008, Stephane CHAZELAS écrivit :

-engine='cat > /tmp/fichier'



J'avais essayé ce genre de chose (avec des ") mais ça me renvoie
Cannot execute 'cat > /tmp/fichier' scrollmode
La vraie commande est:
asy -tex='cat > /tmp/fichier' essai2



Puisque c'est manifestement fait pour tex, j'imagine qu'il exec()
quelque chose de la forme :

cmd fichiertemp ...

Donc il faudrait te faire un script qui accepte au moins un argument.
(Pour ceux qui l'ignorent, tex ne lit pas sur son entrée standard.)

-- Alain.
Avatar
Ph. Ivaldi
Le 23 octobre 2008, Alain Ketterlin écrivit :

Puisque c'est manifestement fait pour tex,



Oui.

j'imagine qu'il exec()
quelque chose de la forme :
cmd fichiertemp ...



C'est bien possible mais je n'arrive pas à récupérer le nom du fichier.
Si je mets dans le script echo $* > /tmp/toto
le fichier /tmp/toto contient le texte scrollmode
et c'est tout.
En plus la commande initiale ne termine pas.
--
Philippe Ivaldi.
http://piprim.tuxfamily.org/
Avatar
Nicolas George
Ph. Ivaldi wrote in message :
J'y ai aussi pensé mais il ne se passe pas grand chose.
Le fichier foo est bien créé mais il ne contient rien et la commande
cmd1 ne termine jamais.
Même en ne mettant que "exit 0;" dans le script, cmd1 ne termine pas.



Alors c'est que ton programme maître ne fait pas ce que tu as décrit dans le
premier message du thread.
Avatar
Jean-Marc Bourguet
Ph. Ivaldi writes:

Le 23 octobre 2008, Alain Ketterlin écrivit :

Puisque c'est manifestement fait pour tex,



Oui.

j'imagine qu'il exec()
quelque chose de la forme :
cmd fichiertemp ...



C'est bien possible mais je n'arrive pas à récupérer le nom du fichier.
Si je mets dans le script echo $* > /tmp/toto
le fichier /tmp/toto contient le texte scrollmode
et c'est tout.
En plus la commande initiale ne termine pas.



tex demande alors le fichier à lire sur la ligne de commande. Mais
en jouant un petit peu avec Asymptote -- que je ne connaissais pas --
j'ai l'impression qu'il relit la sortie de tex pour envoyer ce dont il
a besoin.

J'ai utilisé l'exemple de la doc. Un fichier asycap

#! /bin/sh

cat ~/asycap.reponse
cat - >> ~/asycap.res

exit 0

Avec asycap.reponse qui contenait

This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6)
%&-line parsing enabled.
entering extended mode
LaTeX2e <2005/12/01>
Babel <v3.8h> and hyphenation patterns for english, usenglishmax, dumylang, noh
yphenation, basque, french, ukenglish, loaded.


*

Sans fin de ligne après l'astérisque. Le contenu de asycap.reponse est
alors

newboxASYbox
newdimenASYdimen
defASYbase#1#2{setboxASYbox=hbox{#1}ASYdimen=htASYbox%
setboxASYbox=hbox{#2}lowerASYdimenboxASYbox}
defASYalign(#1,#2)(#3,#4)#5#6{leavevmode%
setboxASYbox=hbox{#6}%
setboxASYboxhbox{ASYdimen=htASYbox%
advanceASYdimen bydpASYboxkern#3wdASYboxraise#4ASYdimenboxASYbox}%
put(#1,#2){%
special{ps:gsave currentpoint currentpoint translate [#5 0 0] concat neg exch neg exch translate}%
boxASYbox%
special{ps:currentpoint grestore moveto}%
}}
defASYraw#1{
currentpoint currentpoint translate matrix currentmatrix
100 12 div -100 12 div scale
#1
setmatrix neg exch neg exch translate}
input graphicx
fontASYfont=cmr12ASYfont

--
Jean-Marc
Site de usenet-fr: http://www.usenet-fr.news.eu.org
1 2