Ahoj, vím, že to sem až tak nepatří, ale unix má blízko k C, tak zde možná někdo bude vědět.
Jak v shellu vytvořit soubor, kde na každém řádku je login uživatele a všechny skupiny, do kterých patří?
Zkoušel to pomocí sedu, problém je, že beru vzor z jednoho souboru a hledám shodu v jiném. Dá se to v sedu nějak specifikovat, co v kterém souboru? Nebo to vyřešit vnořeným příkazem, něco jako sed '/vzor/'`grep vzor soubor2`'/' soubor1? Anebo, pokud sed na takový příklad nestačí, jak jinak by to šlo udělat?
Fórum › C / C++
Příklad v shellu
tak zalezi na tom jestli to nemuzes udelat treba v perlu..
bash sam o sobe ma moznost vytvaret takovou obdobu funkci.. takze kdyz zvladnes udelat funkci, ktere predas jedhoho uzivatele a ta ti k nemu vypise vsechny skupiny, do kterych patri tak ses prakticky za vodou
Smí se používat jen shellovské příkazy, tak by to mělo jít i jen pomocí nich. Do funkcí bych se příliš nepouštěl, ale obvykle kód ve funkci a stejný mimo ni dělá to samé. Neexistuje nějaké řešení pomocí shellovských editorů (ed, sed, grep, awk...)?
Asi nejsnáze by to šlo udělat s groups:
cut -d: -f1 /etc/passwd |xargs groups >soubor
Ale asi jde o to, abyste se naučili obecně kombinovat příkazy a v tom případě to děláš správně - tedy z /etc/passwd vytáhnout jména uživatelů a postupně pro každého z /etc/group vytáhnout skupiny.
A souhlasím s KIIV, že by se na to hodila funkce.
Máš pravdu s tím kombinováním příkazů, dokonce v zadání je nepoužívejte groups. Objevil jsem příkaz id, který také vypíše skupiny, ale krom toho ještě jejich gid a uid uživatele. Pak by stačilo číst jen z /etc/passwd a z výstupu id vybrat skupiny.
Jak je to s těmi funkcemi v bashi, nevracejí jen návratovou hodnotu 0 - 255?
Andy napsal:
Máš pravdu s tím kombinováním příkazů, dokonce v zadání je nepoužívejte groups. Objevil jsem příkaz id, který také vypíše skupiny, ale krom toho ještě jejich gid a uid uživatele. Pak by stačilo číst jen z /etc/passwd a z výstupu id vybrat skupiny
Ano, pokud je povolen id (resp. pokud není zakázán :-) ), tak bych to řešil takhle:
for i in `cat /etc/passwd | cut -d: -f1`; do echo -n "$i: "; id -nG $i; done > file
Andy napsal:
Jak je to s těmi funkcemi v bashi, nevracejí jen návratovou hodnotu 0 - 255?
Ano, ale ty můžeš vracet z funkce třeba přes proměnnou nebo pomocný soubor.
Zkoušel jsem preparovat výstup id v sedu, neúspěšně, ale ty přepínače echo -n a id -nG to vyřešily, díky moc.
Funkce tedy nejspíš běží ve stejném procesu, já myslel, že běží v subprocesu jako skript, kde po skončení proměnné zmizí. Tak je asi začnu používat :)
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Literatura k shellu / bashi — založil Šťouchal
Komunikacia s klientom->preberanie shellu — založil Tom@sQo
Hledá se IT specialista (Linux - Debian, skriptování v shellu, Apach… — založil Eva Neva
Příklad — založil Ovladač
C - příklad — založil Adam
Moderátoři diskuze