2013-02-15 1 views
-6

Je veux comprendre comment fonctionne cette ligne, je ne sais pas si je l'ai eu.pour understatnd substr sur awk

ls -l | awk ' 
{ 
    k=0; 
    for (i=0;i<=8;i++) 
    k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i)); 
    if (k) 
    printf("%0o ",k); 
    print 
}' 

merci d'avance.

+1

Alors, quelle partie obtenez-vous et que n'avez-vous pas? – Kevin

+0

alors que faites-vous et que ne comprenez-vous pas? –

+0

Consultez [ParsingLs] (http://mywiki.wooledge.org/ParsingLs), ainsi que [documentation for awk] (http://www.freebsd.org/cgi/man.cgi?query=awk) . – ghoti

Répondre

3

Ce code convertit le style -rwxrwxrwx standard des autorisations générées par ls -l en nombres octaux pouvant être utilisés avec chmod, et les ajoute en préfixe à chaque ligne.

Par exemple, il serait les conversions suivantes:

-rwxr-xr-- 
7 5 4 

-rwx-wx--- 
7 3 0 

Notez que ce script awk ne supporte pas le bit sticky ou setuid.

+0

Je le sais, mais je veux savoir/comprendre comment ça marche :) – harguer

+2

Si ça fonctionne déjà, alors ce n'est pas vraiment sur le sujet pour StackOverflow. :-) À l'avenir, si vous savez ce que quelque chose fait, et que vous voulez de l'aide pour comprendre comment, essayez de jouer avec jusqu'à ce qu'il se casse, puis demandez de l'aide pour le réparer. – ghoti

+0

Ok merci !, j'essaierai :) – harguer