#1 Le 18/07/2010, à 22:40
- ehmicky
[Résolu]Limite du nombre d'octets sur une seule ligne de commande
Bonjour à tous !
Je voulais savoir ce qu'il en était de la limite du nombre de mots (après expansion du shell) et/ou d'octets entrés sur une seule ligne de commande.
J'ai vu qu'il y avait une limite de 128 Ko dans le noyau, qu'on peut vérifier avec :
getconf ARG_MAX
Mais je me demandais si à cela se rajoutaient des limites propres à la distribution, à Bash ou même à gnome-terminal ?
Juste une petite question pour la curiosité en fait ! Mais merci à vous
Dernière modification par ehmicky (Le 21/07/2010, à 19:21)
Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?
Hors ligne
#2 Le 18/07/2010, à 23:02
- le hollandais volant
Re : [Résolu]Limite du nombre d'octets sur une seule ligne de commande
Salut !
Dans un script, les arguments en Bash sont récupérables via les variables $0, $1, $2 etc.
Il me semble que ça s'arrête à 9. (pour le Bash). ensuite, d'autres shells peuvent en accepter plus. Si ce n'est pas le cas, on utilise Shift (la commande dans un script, pas la touche du clavier).
http://www.commentcamarche.net/faq/5444-bash-les-parametres
http://www.siteduzero.com/tutoriel-3-123626-afficher-et-manipuler-des-variables.html#ss_part_6
EDIT : et merci pour la commande, je savais pas. Elle me renvoie perso 2097152. 2Mio donc, c'est assez énorme pour une ligne de commande^^
Dernière modification par le hollandais volant (Le 18/07/2010, à 23:03)
Hors ligne
#3 Le 19/07/2010, à 02:41
- ehmicky
Re : [Résolu]Limite du nombre d'octets sur une seule ligne de commande
Merci pour ta réponse,
Cependant, je ne pense pas que ce soit le cas : en effet, avec la syntaxe ${10} ${11}, tu peux utiliser les arguments au-delà du 9ème.
Ma question concerne par ailleurs plus le fait de pouvoir entrer (et non utiliser ou faire référence à) une myriade d'arguments (ou d'octets) sans que Bash ou gnome-terminal ne produise une erreur.
Merci malgré tout !
J'ai fait donc de nouvelles recherches sur la question, et je n'ai rien trouvé, donc peut-être cela signifie-t-il que la seule limite est celle du noyau, mais l'un de vous a-t-il la confirmation ?
Dernière modification par ehmicky (Le 19/07/2010, à 02:42)
Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?
Hors ligne
#4 Le 21/07/2010, à 19:20
- ehmicky
Re : [Résolu]Limite du nombre d'octets sur une seule ligne de commande
Ok pour ceux que ça intéresse, il semblerait donc que la limite ARG_MAX du noyau (soit 128 Ko, soit 131072 octets, en général) soit la seule limite. J'ai testé grâce à un :
cat /dev/zero | tr \\0 0 | head -c128k | xargs echo
et la même chose avec 127k pour tester cela.
Donc, en résumé les find -exec {} + et autres xargs (sans l'option -I ou autres) qui peuvent produire des lignes de commande aux dimensions infinies plantent au-delà de 128Ko.
Dernière modification par ehmicky (Le 21/07/2010, à 19:21)
Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?
Hors ligne
#5 Le 21/07/2010, à 20:31
- Totor
Re : [Résolu]Limite du nombre d'octets sur une seule ligne de commande
c'est ce que dit johndo ici
-- Lucid Lynx --
Hors ligne
#6 Le 21/07/2010, à 20:52
- ehmicky
Re : [Résolu]Limite du nombre d'octets sur une seule ligne de commande
Effectivement, en plus j'avais déjà vu ce topic, mais dans un autre contexte ^^
En attendant, le test que j'ai posté peut être raccourci :
head -c128k /dev/zero | tr \\0 0 | xargs
Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?
Hors ligne