salut, On Sun, Oct 06, 2024 at 02:28:31PM +0000, benoit wrote: > > ces conventions sont: > > > > * les flags puis la liste des input > > * si la liste est vide, stdin est l'input > > * si la liste contient -, c'est pour traiter stdin > > * le résutat s'affiche par defaut dans stdout (ca permet de piper, par > > exemple) > > * les messages pour l'humain (et pas seulement les erreurs) dans stderr
> Je découvre ça en te lisant, je ne connaissais pas ces conventions. * sauf rares exceptions (tr), les filtres de base s'y conforment (join, paste, cat, grep, awk, sed, …) et perl a justement le filehandler par defaut (ARGV) qui respecte cette convention (donc il est très simple d'écrire une CLI en perl). * pour l'organisation des parametres, il me semble que je l'ai lu dans "unix programming env" de rob pike (mais je suis plus sur) ou dans TAOUP d'Eric Raymond (qui en son temps était très connu pour avoir écrit le jargon file, cathedral et bazaar, … ) * pour stdout/stderr c'est la parole sainte de McIllroy « Expect the output of every program to become the input to another, as yet unknown, program. Don't clutter output with extraneous information. Avoid stringently columnar or binary input formats. Don't insist on interactive input » lire https://en.wikipedia.org/wiki/Unix_philosophy tu verras à l'usage que c'est super pratique parce qu'il t'arrivera souvent de pouvoir passer la fin de tes arguments avec "$@" au filtre qui va bien. c'est la raison pour laquelle c'est vraiment chiant de tomber sur quelqu'un qui joue pas le jeu. > Je viens de tester, écrit comme ça, ca marche ! parfait :) > Mais je cale sur un truc, qu'est-ce qui permet l’affectation de > it(j'ai renommé "it" par "bidule", pour m'assurer que ce n'est pas une > variable prédéfinie.) ? man dash: The syntax of the for command is for variable [ in [ word ... ] ] do list done The words following in are expanded, and then the list is executed repeatedly with the variable set to each word in turn. Omitting in word ... is equivalent to in "$@". <<<<<<<<<< > Ce n'est pas une variable prédéfinie affectée par getopts (comme OPTARG ou > OPTIND) non: getopt est déjà passé :) > En effet, j'ai l'impression que si je peux utiliser le "|", c'est que > img2pdf envois le pdf dans stdout, c'est bien ça que je dois faire > plutôt que de définir un fichier de sortie avec -o fichier.pdf. ah ben oui: c'est meme la fonction du pipe: connecter la stdout du process de gauche avec la stdin du process a droite. grep passwd | cut -f1 -d: | sort c'est la même chose qu'écrire mkfifo A B getent passwd > A & < A cut -f1 -d: > B & < B sort > C -- Marc Chantreux Pôle CESAR (Calcul et services avancés à la recherche) Université de Strasbourg 14 rue René Descartes, BP 80010, 67084 STRASBOURG CEDEX 03.68.85.60.79