Bruno Bonfils a écrit :
Christophe Martin <christophe.martin@sdt.univ-brest.fr> writes:
Bonjour,
Ben voila. Le wiki est en place et chacun s'empresse de dire toutes les connaissances qu'il a du monde unix et des commandes en ligne en general...
je ne suis pas sûr de comprendre le sens (caché) de cette phrase Il n'y en a pas. C'est juste une introduction... Disons qu'il peut y en avoir un : dans l'empressement et la joie d'utiliser un nouveau jouet, chacun a a coeur de participer, au risque de commettre de petites erreurs, resultat on se retrouve avec des pages qu'un internaute de passage qualifiera de mauvaises. Dommage, car la liste dont le wiki est issue est je trouve d'un niveau plus que tout a fait convenable avec plein de gens pleins de bonnes idees et tres calés, a commencer par toi.
J'ai lu le bidule qui dit qu'on peut mettre ~~DISCUSSION~~ ====titre==== etc... mais j'ai pas trouve comment faire rectifier les erreurs qui se trouvent sur le site. Comment on trouve l'auteur d'une page etc...
Pour info, il y a 3 ou 4 petites choses a changer sur la page des exemples awk...
Ben euh, tu te crées un compte et tu appuies sur "Éditer cette page" ? Ok Merci nickel, j'essaierai. Mais comment connait-on l'auteur d'une page ?
Et euh c'est quoi le problème avec ma^Wla page sur awk ? Le script des nouveaux UID est faux : si l'UID 65533 est utilise il dira d'utiliser 65534. nobody est pas toujours 65534 (ce qe tu remarques d'ailleurs) on pourrait utiliser une condition du genre : ! /^nobody/ ou, pour faire ceinture et bretelles (mais le script reste faux): ! /^nobody/ && $3 != 65534
il est parfaitement inutile d'initialiser la variable nuid. a titre d'info certain solaris ont 2 nobody : nobody4:65534 et nobody:60001 FNR n'est pas une invention GNU. C'est disponible dans tout new-awk qui se respecte. awk a d'abord ete defini par je sais pas qui (Aho, Weinberger et Kernighan), puis une seconde definition est venue de je ne sais ou, c'est la definition du new-awk., evidement, sous linux tous les awks sont des new awk. Phrase pas clair : "La numerotation commence a zero" ==> pour qui ? awk ? surement pas. pour un fichier ? un fichier, c'est des data (ici), ca calcule pas. Pour les outils "standard" ? Ici ed, emacs, vi, kate, sed, awk, nedit, tex, gcc, nawk, bash prolog tcl et tous les autres sont d'accord : La premiere ligne d'un fichier est la ligne 1... Le style enfin. Il ne faut pas oublier qu'un script awk c'est une suite de paires : test action Si le test est asbsent, on considere que c'est un test toujours vrai Si l'action est absente l'action par defaut est l'affichage on ne peut omettre les deux (un script vide ne produit rien) Faire une action a tout faire et la remplir de test est anti awkesque Cela est vrai pour le premier script qui se reecrit plus awkesquement : getent passwd | nawk -F : ' !/^nobody/ && $3 != 65534 { nuid=$3 } END { print nuid + 1}' note que comme ca il est toujours faux et bugge. pour le debugger il faudrait par exemple le reecrire comme ca : nawk -F : ' END { while( ! valide( "", nuid )) ++nuid print nuid } function valide( logon, uid ) { return logon !~ /^nobody/ && uid != 65534 } valide( $1, $3) && nuid < $3 { nuid = $3 + 1 } ' et pour le second qui s'ecrit en fait ainsi : nawk 'FNR % 2' ou nawk '!(FNR % 2)' suivant qu'on veut commencer a la premiere ou a la deuxieme.