On Wed, Aug 15, 2012 at 03:59:16PM +0200, Pirity Tamas Gabor wrote: > On Tue, Aug 14, 2012 at 08:51:56AM +0200, Fodor Zsolt wrote: > > Üdv Mindenkinek! > > > > Néhány konfigurációs fájlban kellene módosítanom kb. 700 felhasználónál. > > Szerkezetileg > > tulajdonság = érték > > valamint > > tulajdonság <tab> érték > > kinézetűek. > > > > Mindegyikben ugyanazt ugyanarra kell cserélnem. > > Az operációs rendszer linux (Debian). > > > > Mi a legegyszerűbb megoldás? > > Azt nem tudom, mi a legegyszerűbb, én ilyesmit csinálnék: > > getent passwd |
Lemaradt a lényeg, csak félre akartam tenni a levelet és elment. Ha nem oldódott még meg, akkor az én megoldásom ilyesmi lenne: Szóval először is keresnék egy olyan parancsot, ami interaktivitás nélkül módosít jól egy fájlt. ptg@hp03:~$ grep verbose .config/mc/ini verbose=0 ptg@hp03:~$ echo -e "%s/verbose=0/verbose=1/\nwq" | ed .config/mc/ini 2969 2969 ptg@hp03:~$ grep verbose .config/mc/ini verbose=1 ptg@hp03:~$ Én vim-et vagy ed-et jobban szeretem ilyenkor, mert ott "helyben" tudok módosítani egy fájlt, a sed-del trükközni kell, az inkább adatfolyamokon módosít (bár rémlik, h az újabb sed-eknek van olyan kapcsolójuk is, ami lehetővé teszi fájlok helybenszerkesztését. A %s/akarmi/valami/ jelenti azt, hogy az összes sorban az akarmit cserélje valamire. A \n hogy lesz még egy parancs, a wq pedig a mentés-kilépés. Ha ez megvan, akkor jöhet a getent (feltételezve, hogy a userek mappáiban ugyanott helyezkednek el a módosítandó fájlok és ugyanaz a nevük -- különben vajmi kevés esély van automatizálni a dolgot): getent passwd | awk -F: '{print $1, $6} | while read login dir do cd $dir echo -e "%s/verbose=0/verbose=1/\nwq" | ed .config/mc/ini # vagy más # esetleg: chown $login .config/mc/* done Ha nem minden usernél kell, akkor a getent passwd és az awk között vagy akár az awk-ban vagy akár utána lehet szűrni, awkon kívül grep-pel. Nálam pl. hogy csak a diákokra vonatkozzon az egész, így menne: getent passwd | awk -F: '{print $1, $6} | grep /home/diakok/ | while read login dir do cd $dir echo -e "%s/verbose=0/verbose=1/\nwq" | ed .config/mc/ini # vagy más done -- PTG Debian Lenny _______________________________________________ Techinfo mailing list Techinfo@lista.sulinet.hu Fel- és leiratkozás: http://lista.sulinet.hu/mailman/listinfo/techinfo Illemtan: http://www.szag.hu/illemtan.html Ügyfélszolgálat FAQ: http://www.kozhaloportal.hu/gyik/altalanos/