wiki - oui, qui ?

Christophe Martin christophe.martin at sdt.univ-brest.fr
Tue Mar 7 12:38:56 CET 2006



Bruno Bonfils a écrit :
> Christophe Martin <christophe.martin at 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.

> 


More information about the Shell mailing list