Unix 5.


Példák a 6. fejezethez

1. példa

Irjunk C programot, amelyet a késôbbiek során xxx, yyy, vagy zzz néven akarunk elindítani. A program "vegye észre", hogy milyen néven indítottuk el, és az ennek megfelelô üzenettel térjen vissza ! Milyen muveletek szükségesek a fealadat megoldásához ?

Megoldás :

1.) A program megírása linkpelda.c néven:

#include <stdio.h>
#include <string.h>

void main( int argc, char *argv[] )
{

if( strcmp(argv[0],"xxx") == 0 )
printf("\n xxx neven indultam !\n");

else if( strcmp(argv[0],"yyy") == 0 )
printf("\n yyy neven indultam !\n");

else
printf("\n zzz neven indultam !\n");
}

2. Fordítás, futtatható állomány készítés :

cc linkpélda.c -o xxx

3. Láncolás ( hard link ) elvégzése :

ln xxx yyy
ln xxx zzz

Ezekután a programunkat a három név bármelyikén elindíthatjuk.

Figyeljük meg, hogy linkszámuk 3 lesz !

2. példa

Számoljuk meg, hogy hány file van az aktuális katalógusunkban !

Megoldás : ls -l | wc -l
A fejléc miatt az így kapott számból 1-et le kell vonni !

3. példa

Irassuk ki azon állományaink nevét, melyek ascii típusúak !

Megoldás : file * | grep "ascii"

4. példa

Hozzunk létre egy 6x3-as mátrixot , és rendezzük le 2.oszlopa szerint !

Megoldás : 1. A mátrix létrehozása : cat > matrix
1,234,5
1,23,6
2,99,67
34,8,90
0,1234,100
3,9,234
Ctrl-d <ENTER>
2. Rendezés : sort -n -bt, +1.0 -1.4 < matrix
34,8,90
3,9,234
1,23,6
2,99,67
1,234,5
0,1234,100

Vigyázat : sort -n -t, +1.0 -1.4 < matrix ; hatására az eredmény :
34,8,90
3,9,234
1,23,6
2,99,67
0,1234,100
1,234,5

Miért lett rossz a rendezés ?

5. példa

Adva vannak az rftc1 ill. rftc2 file-ok, kezdôbetu szerint rendezve. Tekintsük meg ôket, majd fésüljük össze a két file-t az rftc1_2 file-ba úgy, hogy megengedjük az azonos nevek többszörös elôfordulását. Ezután végezzük el az összefésülést úgy is, hogy az azonos nevek csak egyszer fordulajnak elô. Ez esetben a file neve : urftc1_2 !

Megoldás :

1. Az rftc1 megtekintése : cat rftc1
albert
lipcsei
lisztes
2. Az rftc2 megtekintése : cat rftc2
albert
lipcsei
simon

3. Összefésülés többszörös elôfordulással :

sort -m -orftc1_2 rftc1 rftc2

4. Az rftc1_2 megtekintése : cat rftc1_2
albert
albert
lipcsei
lipcsei
lisztes
simon

5. Összefésülés egyszeres elôfordulással :

sort -mu -ourftc1_2 rftc1 rftc2

4. Az urftc1_2 megtekintése : cat urftc1_2
albert
lipcsei
lisztes
simon

6. példa

Listázzuk ki az alkönyvtárunkat file név szerint rendezve !

Megoldás : ls -l | sort +8.0 # A file név a 9. oszlop a listában !

7. példa

Irassuk ki a képernyôre és ezzel egyidejuleg egy felhasznalo nevu fileba is, hogy kik vannak bejelentkezve a rendszerbe !

Megoldás : finger | tee felhasznalo
users | tee felhasznalo
w | tee felhasznalo
who | tee felhasznalo

A parancsok más-más formátumban listázzák ki a bejelentkezett felhasználókat !

8. Példa

Irassuk ki a uniqtext állomány sor elôfordulásainak számát, nagyság szerint rendezve !

Megoldás : sort uniqtext | uniq -c | sort -n | tail | cut -f1

9. példa

Helyezzünk el a szov állomány minden szava után a szóköz helyére egy formfeed karaktert ( /f ) !

Megoldás : tr -cs "[a-z]" "\f" < szov
aaa
bbb
ccc
ddd
eee
fff
xxx
yyy
zzz
A Dune-News szerkesztôsége köszönetet mond Bodlaki Tamás tanárúrnak a segítségéért, és a jegyzet rendelkezésünkre bocsájtásáért.