Y a-t-il quelque part une routine qui fasse ce que fait wordexp(3)
plus l'expansion des accolades ? L'ideal serait qu'elle soit
disponible sous linux et freebsd.
Si ce n'est pas le cas, quel serait le meilleur moyen d'utiliser
le shell lui-meme (via fork+exec avec un pipe pour recuperer les
resultats) pour faire l'expansion ? Y a-t-il mieux que echo ?
(Je connais tous les problemes de securite potentiels lies a $(...)
etc. mais ce n'est pas un probleme ici, puisque c'est pour ecrire un
shell.)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
DINH Viêt Hoà
Y a-t-il quelque part une routine qui fasse ce que fait wordexp(3) plus l'expansion des accolades ? L'ideal serait qu'elle soit disponible sous linux et freebsd.
wordexp() est disponible sous linux et freebsd. Elle fait partie du standard POSIX. tu as également glob().
Qu'appelles-tu "expansion des accolades" ? As-tu un exemple ?
-- DINH V. Hoa,
"t'as 2 de QI ou quoi ?" -- Cent-Quarante-Six
Y a-t-il quelque part une routine qui fasse ce que fait wordexp(3)
plus l'expansion des accolades ? L'ideal serait qu'elle soit
disponible sous linux et freebsd.
wordexp() est disponible sous linux et freebsd.
Elle fait partie du standard POSIX.
tu as également glob().
Qu'appelles-tu "expansion des accolades" ? As-tu un exemple ?
Y a-t-il quelque part une routine qui fasse ce que fait wordexp(3) plus l'expansion des accolades ? L'ideal serait qu'elle soit disponible sous linux et freebsd.
wordexp() est disponible sous linux et freebsd. Elle fait partie du standard POSIX. tu as également glob().
Qu'appelles-tu "expansion des accolades" ? As-tu un exemple ?
-- DINH V. Hoa,
"t'as 2 de QI ou quoi ?" -- Cent-Quarante-Six
Alain Ketterlin
DINH Viêt Hoà writes:
Y a-t-il quelque part une routine qui fasse ce que fait wordexp(3) plus l'expansion des accolades ? L'ideal serait qu'elle soit disponible sous linux et freebsd.
wordexp() est disponible sous linux et freebsd. Elle fait partie du standard POSIX.
Oui, pas de probleme, mais elle ne me suffit pas.
tu as également glob().
Oui mais seulement pour les noms de fichiers. J'aimerais en plus les variables, les baskquotes, etc.
Qu'appelles-tu "expansion des accolades" ? As-tu un exemple ?
Oui pardon. Je voulais dire "a la bash" (ou a la csh), c'est-a-dire que f{1,2,3} devient f1 f2 f3.
wordexp() ne s'occupe que de l'expansion selon sh. En fait, ce que j'aimerais, c'est une expansion complete telle que realisee par le shell de l'utilisateur (comme wordexp() si c'est sh, avec en plus les accolades si c'est bash/csh, etc.)
En fait je pense que le plus simple serait de laisser faire le shell en question (via pipe/fork/dup/exec etc). Je peux recuperer le shell par defaut (via getpwent()), mais y a-t-il moyen de savoir si mon programme a ete lance par un autre shell ?
-- Alain.
DINH Viêt Hoà <dinh.viet.hoa@free.fr> writes:
Y a-t-il quelque part une routine qui fasse ce que fait wordexp(3)
plus l'expansion des accolades ? L'ideal serait qu'elle soit
disponible sous linux et freebsd.
wordexp() est disponible sous linux et freebsd.
Elle fait partie du standard POSIX.
Oui, pas de probleme, mais elle ne me suffit pas.
tu as également glob().
Oui mais seulement pour les noms de fichiers. J'aimerais en plus les
variables, les baskquotes, etc.
Qu'appelles-tu "expansion des accolades" ? As-tu un exemple ?
Oui pardon. Je voulais dire "a la bash" (ou a la csh), c'est-a-dire
que f{1,2,3} devient f1 f2 f3.
wordexp() ne s'occupe que de l'expansion selon sh. En fait, ce que
j'aimerais, c'est une expansion complete telle que realisee par le
shell de l'utilisateur (comme wordexp() si c'est sh, avec en plus les
accolades si c'est bash/csh, etc.)
En fait je pense que le plus simple serait de laisser faire le shell
en question (via pipe/fork/dup/exec etc). Je peux recuperer le shell
par defaut (via getpwent()), mais y a-t-il moyen de savoir si mon
programme a ete lance par un autre shell ?
Y a-t-il quelque part une routine qui fasse ce que fait wordexp(3) plus l'expansion des accolades ? L'ideal serait qu'elle soit disponible sous linux et freebsd.
wordexp() est disponible sous linux et freebsd. Elle fait partie du standard POSIX.
Oui, pas de probleme, mais elle ne me suffit pas.
tu as également glob().
Oui mais seulement pour les noms de fichiers. J'aimerais en plus les variables, les baskquotes, etc.
Qu'appelles-tu "expansion des accolades" ? As-tu un exemple ?
Oui pardon. Je voulais dire "a la bash" (ou a la csh), c'est-a-dire que f{1,2,3} devient f1 f2 f3.
wordexp() ne s'occupe que de l'expansion selon sh. En fait, ce que j'aimerais, c'est une expansion complete telle que realisee par le shell de l'utilisateur (comme wordexp() si c'est sh, avec en plus les accolades si c'est bash/csh, etc.)
En fait je pense que le plus simple serait de laisser faire le shell en question (via pipe/fork/dup/exec etc). Je peux recuperer le shell par defaut (via getpwent()), mais y a-t-il moyen de savoir si mon programme a ete lance par un autre shell ?
-- Alain.
DINH Viêt Hoà
wordexp() est disponible sous linux et freebsd. Elle fait partie du standard POSIX.
Oui, pas de probleme, mais elle ne me suffit pas.
tu as également glob().
Oui mais seulement pour les noms de fichiers. J'aimerais en plus les variables, les baskquotes, etc.
Je ne crois pas que cela existe.
Qu'appelles-tu "expansion des accolades" ? As-tu un exemple ?
Oui pardon. Je voulais dire "a la bash" (ou a la csh), c'est-a-dire que f{1,2,3} devient f1 f2 f3.
wordexp() ne s'occupe que de l'expansion selon sh. En fait, ce que j'aimerais, c'est une expansion complete telle que realisee par le shell de l'utilisateur (comme wordexp() si c'est sh, avec en plus les accolades si c'est bash/csh, etc.)
En fait je pense que le plus simple serait de laisser faire le shell en question (via pipe/fork/dup/exec etc). Je peux recuperer le shell par defaut (via getpwent()), mais y a-t-il moyen de savoir si mon programme a ete lance par un autre shell ?
Hum ... Tu veux écrire un shell en utilisant un autre shell ? Tu ne crois pas zsh ou bash suffise ?
Ou bien, c'est par pur exercice ? et à ce moment-là, il est plus propre d'écrire soit-même l'expansion plutôt qu'utiliser un autre processus, ou bien tu peux reprendre le code de bash, si c'est l'expansion de bash que tu recherches.
-- DINH V. Hoa,
"t'as 2 de QI ou quoi ?" -- Cent-Quarante-Six
wordexp() est disponible sous linux et freebsd.
Elle fait partie du standard POSIX.
Oui, pas de probleme, mais elle ne me suffit pas.
tu as également glob().
Oui mais seulement pour les noms de fichiers. J'aimerais en plus les
variables, les baskquotes, etc.
Je ne crois pas que cela existe.
Qu'appelles-tu "expansion des accolades" ? As-tu un exemple ?
Oui pardon. Je voulais dire "a la bash" (ou a la csh), c'est-a-dire
que f{1,2,3} devient f1 f2 f3.
wordexp() ne s'occupe que de l'expansion selon sh. En fait, ce que
j'aimerais, c'est une expansion complete telle que realisee par le
shell de l'utilisateur (comme wordexp() si c'est sh, avec en plus les
accolades si c'est bash/csh, etc.)
En fait je pense que le plus simple serait de laisser faire le shell
en question (via pipe/fork/dup/exec etc). Je peux recuperer le shell
par defaut (via getpwent()), mais y a-t-il moyen de savoir si mon
programme a ete lance par un autre shell ?
Hum ... Tu veux écrire un shell en utilisant un autre shell ?
Tu ne crois pas zsh ou bash suffise ?
Ou bien, c'est par pur exercice ? et à ce moment-là, il est plus
propre d'écrire soit-même l'expansion plutôt qu'utiliser un autre
processus, ou bien tu peux reprendre le code de bash, si c'est
l'expansion de bash que tu recherches.
wordexp() est disponible sous linux et freebsd. Elle fait partie du standard POSIX.
Oui, pas de probleme, mais elle ne me suffit pas.
tu as également glob().
Oui mais seulement pour les noms de fichiers. J'aimerais en plus les variables, les baskquotes, etc.
Je ne crois pas que cela existe.
Qu'appelles-tu "expansion des accolades" ? As-tu un exemple ?
Oui pardon. Je voulais dire "a la bash" (ou a la csh), c'est-a-dire que f{1,2,3} devient f1 f2 f3.
wordexp() ne s'occupe que de l'expansion selon sh. En fait, ce que j'aimerais, c'est une expansion complete telle que realisee par le shell de l'utilisateur (comme wordexp() si c'est sh, avec en plus les accolades si c'est bash/csh, etc.)
En fait je pense que le plus simple serait de laisser faire le shell en question (via pipe/fork/dup/exec etc). Je peux recuperer le shell par defaut (via getpwent()), mais y a-t-il moyen de savoir si mon programme a ete lance par un autre shell ?
Hum ... Tu veux écrire un shell en utilisant un autre shell ? Tu ne crois pas zsh ou bash suffise ?
Ou bien, c'est par pur exercice ? et à ce moment-là, il est plus propre d'écrire soit-même l'expansion plutôt qu'utiliser un autre processus, ou bien tu peux reprendre le code de bash, si c'est l'expansion de bash que tu recherches.
-- DINH V. Hoa,
"t'as 2 de QI ou quoi ?" -- Cent-Quarante-Six
Alain Ketterlin
DINH Viêt Hoà writes:
Hum ... Tu veux écrire un shell en utilisant un autre shell ?
En gros oui.
(Au fait, sous freebsd 5.3 wordexp() lance un sh. C'est de la que j'ai peche l'idee.)
Tu ne crois pas zsh ou bash suffise ?
Non, pas dans mon cas. Mais ce n'est pas la question.
Ou bien, c'est par pur exercice ? et à ce moment-là, il est plus propre d'écrire soit-même l'expansion plutôt qu'utiliser un autre processus, ou bien tu peux reprendre le code de bash, si c'est l'expansion de bash que tu recherches.
OK, je vais regarder, merci.
-- Alain.
DINH Viêt Hoà <dinh.viet.hoa@free.fr> writes:
Hum ... Tu veux écrire un shell en utilisant un autre shell ?
En gros oui.
(Au fait, sous freebsd 5.3 wordexp() lance un sh. C'est de la que j'ai
peche l'idee.)
Tu ne crois pas zsh ou bash suffise ?
Non, pas dans mon cas. Mais ce n'est pas la question.
Ou bien, c'est par pur exercice ? et à ce moment-là, il est plus
propre d'écrire soit-même l'expansion plutôt qu'utiliser un autre
processus, ou bien tu peux reprendre le code de bash, si c'est
l'expansion de bash que tu recherches.
Hum ... Tu veux écrire un shell en utilisant un autre shell ?
En gros oui.
(Au fait, sous freebsd 5.3 wordexp() lance un sh. C'est de la que j'ai peche l'idee.)
Tu ne crois pas zsh ou bash suffise ?
Non, pas dans mon cas. Mais ce n'est pas la question.
Ou bien, c'est par pur exercice ? et à ce moment-là, il est plus propre d'écrire soit-même l'expansion plutôt qu'utiliser un autre processus, ou bien tu peux reprendre le code de bash, si c'est l'expansion de bash que tu recherches.
OK, je vais regarder, merci.
-- Alain.
Stephane Chazelas
2004-12-11, 10:49(+01), Alain Ketterlin: [...]
Qu'appelles-tu "expansion des accolades" ? As-tu un exemple ?
Oui pardon. Je voulais dire "a la bash" (ou a la csh), c'est-a-dire que f{1,2,3} devient f1 f2 f3.
wordexp() ne s'occupe que de l'expansion selon sh. En fait, ce que j'aimerais, c'est une expansion complete telle que realisee par le shell de l'utilisateur (comme wordexp() si c'est sh, avec en plus les accolades si c'est bash/csh, etc.)
C'est normal. Meme dans les shells qui supportent {...}, la "brace expansion" n'est pas du tout liee a la "filename generation".
Le shell fait d'abord la "brace expansion", puis la filename generation.
Donc, tu peux interpreter les braces et appeler wordexp sur chaque argument resultant.
-- Stephane
2004-12-11, 10:49(+01), Alain Ketterlin:
[...]
Qu'appelles-tu "expansion des accolades" ? As-tu un exemple ?
Oui pardon. Je voulais dire "a la bash" (ou a la csh), c'est-a-dire
que f{1,2,3} devient f1 f2 f3.
wordexp() ne s'occupe que de l'expansion selon sh. En fait, ce que
j'aimerais, c'est une expansion complete telle que realisee par le
shell de l'utilisateur (comme wordexp() si c'est sh, avec en plus les
accolades si c'est bash/csh, etc.)
C'est normal. Meme dans les shells qui supportent {...}, la
"brace expansion" n'est pas du tout liee a la "filename
generation".
Le shell fait d'abord la "brace expansion", puis la filename
generation.
Donc, tu peux interpreter les braces et appeler wordexp sur
chaque argument resultant.
Qu'appelles-tu "expansion des accolades" ? As-tu un exemple ?
Oui pardon. Je voulais dire "a la bash" (ou a la csh), c'est-a-dire que f{1,2,3} devient f1 f2 f3.
wordexp() ne s'occupe que de l'expansion selon sh. En fait, ce que j'aimerais, c'est une expansion complete telle que realisee par le shell de l'utilisateur (comme wordexp() si c'est sh, avec en plus les accolades si c'est bash/csh, etc.)
C'est normal. Meme dans les shells qui supportent {...}, la "brace expansion" n'est pas du tout liee a la "filename generation".
Le shell fait d'abord la "brace expansion", puis la filename generation.
Donc, tu peux interpreter les braces et appeler wordexp sur chaque argument resultant.