OS - 2021/22 - 06 KVIZ¶
find / –inum $(stat test.txt –c "%i") –exec rm -i {} \;¶
V ukazno vrstico zapišemo: find / –inum $(stat test.txt –c "%i") –exec rm -i {} \;
Koliko ima ta zapis:
Različnih ukazov?
Odgovor: 3
Imamo find
, stat
ter rm
Stikal/izrazov?
Odgovor: 4
Imamo: -inum
, -c
, -exec
ter -i
.
Tukaj gre tudi za eno anomalijo, in sicer -inum
, saj se obicajno uporablja en minus za podajanje stikal z enim znakom (obicajno so to le okrajsave) ter dva minusa za vecznacna imena stikal. Kot na primer lahko ukaz rm
izvedemo z rm -rf neka/podmapa
z okrajsavami ali rm --force --recursive neka/podmapa
z polnimi imeni.
Sklicev na vsebino datotečnega sistema (bodi pozoren/a)?
Odgovor: 3
Imamo: find /
, stat test.txt
ter rm -i {}
Klicev podlupin?
Odgovor: 1
Imamo: $(stat test.txt –c "%i")
pwd < vhod.txt¶
Katere trditve držijo in katere ne držijo ob izvedbi ukaza pwd < vhod.txt
?
Trditev | Drzi? |
---|---|
Ukaz pwd ignorira vsebino v datoteki vhod.txt . |
✅ |
Ukaz pwd ima v tem primeru en argument. | ❌ |
Ukaz pwd v tem primeru nima nobenega argumenta. | ✅ |
Ukaz pwd ima v tem primeru dva argumenta. | ❌ |
Zadnje dodanega uporabnika v datoteko last.txt¶
Zapišite zadnje dodanega uporabnika v datoteko last.txt
. Napake pa preusmerite v nič.
Ukaz | Pravilnost |
---|---|
tail -n 1 /etc/passwd > last.txt 1>/dev/null |
❌ |
tail -n 1 /etc/passwd > last.txt 1>/dev/null |
❌ |
cat -n 1 /etc/passwd > last.txt 2>/dev/null |
❌ |
tail -n 1 /etc/passwd > last.txt 2>/dev/null |
✅ |
tail -c 1 /etc/passwd > last.txt &2>/dev/null |
❌ |
tail -c 1 /etc/passwd > last.txt 2>/dev/null |
❌ |
Utemeljitev
Pri Linuxu, v terminalu, poznamo dva primarna "tipa" output-a, ki jih programi lahko izpisejo v terminal: stdout
ter stderr
- standard output ter standard error. To sta dva individualna "pipeline"-a (bi lahko rekli) uporabljena za posredovanje podatkov med programi.
Ko pisemo neke script-e naj lahko izpisovanje nekega errorja moti, ker zelimo dobiti samo output programa. Damo za primer da imamo v datoteki a.txt
zapisano Ime Priimek
. Da dobimo samo priimek lahko izvedemo ukaz cat a.txt | awk '{print $2}'
kar nam bo izpisalo drugo besedo v besedilu, ki ga je izpisal cat a.txt
, ki izpise vsebino datoteke a.txt
.
[aljaxus@aljaxus-laptop tmp]$ echo "Aljaz Starc" > a.txt
[aljaxus@aljaxus-laptop tmp]$ cat a.txt
Aljaz Starc
[aljaxus@aljaxus-laptop tmp]$ cat a.txt | awk '{print $2}'
Starc
[aljaxus@aljaxus-laptop tmp]$
A v primeru da datoteka a.txt
ne obstaja bo ta ukaz sproduciral error ter ga le takega vrnil - kar pa nocemo.
[aljaxus@aljaxus-laptop tmp]$ rm a.txt
[aljaxus@aljaxus-laptop tmp]$ cat a.txt | awk '{print $2}'
cat: a.txt: No such file or directory
[aljaxus@aljaxus-laptop tmp]$
Ce ni datoteke ni vsebine, posredno tudi ni priimka, zato zelimo "nic" izpisano na zaslon. Zato dodamo 2>/dev/null
kar bo preusmerilo output na stderr
"pipeline"-u v /dev/null
, kar je na Linuxu nic (je void: lahko beres - ne bos dobil nic, lahko zapises - se nebo nikamor zapisalo).
Korektnost petih trditev¶
Katere od spodnjih trditev držijo in katere ne držijo?
Trditev | Pravilnost |
---|---|
Povezavo med dvema ukazoma v cevovodu označimo z operatorjem | . |
✅ |
Vsak program v cevovodu se izvaja v podlupini. | ✅ |
Cevovod poveže standardni izhod prvega programa na standardni vhod drugega programa. | ✅ |
Poimenovan cevovod ustvarimo z ukazom mkfifo . |
✅ |
Poimenovan cevovod ustvarimo z ukazom mkpipe . |
❌ |
sudo find / -iname *tmp –type f –exec ls –l {} \;¶
Kakšen je pomen naslednjih podnizov v klicu sudo find / -iname *tmp –type f –exec ls –l {} \;
?
Podniz | Pomen |
---|---|
-type |
datoteka je podanega tipa |
\; |
zaključek argumentov ukaza ls |
-iname |
ime datoteke ustreza podanemu vzorcu (neobčutljivo na velikost črk) |
{} |
prenos najdenega rezultata ukaza find v ukaz ls |