Hoppa yfir í efnið

Samantektaræfingar

Nú erum við búin að skoða mörg Linux-hugtök: skelina, skráakerfið, skrár, leit, pípur, ferli og notendur. Þessi síða er hugsuð sem æfingasvæði þar sem við tengjum hugmyndirnar saman.

Reyndu fyrst að leysa hvert verkefni án þess að opna lausnina. Það er eðlilegt að þurfa að fletta til baka í kaflanum eða nota man og --help.

Athugaðu vinnumöppuna og playground/

Öll verkefnin hér að neðan gera ráð fyrir að þú sért inni í möppunni ~/examples. Áður en þú byrjar skaltu tryggja að þú sért á réttum stað:

cd ~/examples
Ef verkefni býr til eða eyðir skrám skaltu nota playground/. Þá er auðvelt að halda æfingunum aðskildum frá upprunalegu gögnunum.


Verkefni 1: Kortleggja heimamöppuna

Finndu hvar þú ert, skoðaðu efstu lög heimamöppunnar og teldu hversu margar venjulegar skrár eru undir henni.

Lausn

Við getum fengið þessar upplýsingar með því að keyra

pwd
ls -la
find . -maxdepth 2 -type f
find . -type f | wc -l
sem sýnir okkur nákvæmlega hvar við erum og telur skrárnar.


Verkefni 2: Falin skilaboð

Finndu falda skrá í heimamöppunni og lestu hana.

Lausn

Við getum skoðað allar faldar skrár og lesið þá réttu með því að keyra

ls -la
cat .hidden_note
sem birtir innihald hennar á skjánum.


Verkefni 3: Nál í heystakki

Finndu skrána needle.txt án þess að nota cd inn í margar möppur handvirkt. Lestu hana síðan.

Lausn

Með því að keyra skipanirnar

find search -name "needle.txt"
cat search/mystery/deep/path/needle.txt
getum við fyrst fundið staðsetninguna og svo prentað innihaldið, en einnig má nota niðurstöðuna beint úr fyrri skipuninni með því að keyra
find search -name "needle.txt" -exec cat {} \;
sem vinnur verkið í einu skrefi.


Verkefni 4: Textaleit

Finndu allar línur undir search/ sem innihalda orðið norðurljós, óháð því í hvaða skrá þær eru.

Lausn

Með því að keyra skipunina

grep -rn "norðurljós" search
leitar skelin að orðinu í öllum undirmöppum og birtir línunúmerin sjálfkrafa.


Verkefni 5: Algengasti liturinn

Notaðu pípur til að finna hvaða litur kemur oftast fyrir í data/colors.txt.

Lausn

Með því að keyra

sort data/colors.txt | uniq -c | sort -nr | head -n 1
röðum við fyrst litunum saman og finnum þann algengasta með því að panta niðurstöðurnar.


Verkefni 6: CSV-gögn

Í data/scores.csv eru nöfn, hópar og stig. Sýndu þrjár hæstu einkunnirnar án hauslínunnar.

Lausn

Til þess að sía burt hauslínuna og finna hæstu einkunnir getum við keyrt

tail -n +2 data/scores.csv | sort -t, -k3 -nr | head -n 3
sem framkallar topp þrjá listann.


Verkefni 7: Loggskrá

Finndu hvaða IP-tala kemur oftast fyrir í logs/access.log.

Lausn

Við getum notað pípulögnina og keyrt

cut -d' ' -f1 logs/access.log | sort | uniq -c | sort -nr | head -n 1
til þess að einangra IP-tölurnar úr loggskránni og raða eftir tíðni.


Verkefni 8: Heimildir

Skriftan permissions/run_me.sh er ekki keyranleg í byrjun. Lagaðu heimildirnar og keyrðu hana.

Lausn

Með því að keyra skipanirnar

ls -l permissions/run_me.sh
chmod +x permissions/run_me.sh
./permissions/run_me.sh
getum við fyrst kannað stöðuna og svo heimilað kerfinu að framkvæma forritið.


Verkefni 9: Skjalasafn

Taktu út archives/source.tar.gz í nýja möppu undir playground/ og skoðaðu hvaða skrár komu út.

Lausn

Við getum bæði afþjappað skjalasafninu og greint inntak þess með því að keyra

mkdir -p playground/tar-aefing
tar -xzf archives/source.tar.gz -C playground/tar-aefing
find playground/tar-aefing -type f
sem skilar okkur beint tilgangi safnsins.


Verkefni 10: Smá rannsókn á skrá

Skoðaðu binary/small.bin með þremur mismunandi tólum: file, strings og xxd. Hvað segja þau okkur hvert fyrir sig?

Lausn

Með því að prófa tólin og keyra

file binary/small.bin
strings binary/small.bin
xxd binary/small.bin
fáum við nokkrar mismunandi sjónarhorn: file reynir að greina skráargerðina, strings leitar að læsilegum textabútum og xxd sýnir hráu bætin í sextándakerfi.


Verkefni 11: Ferli í bakgrunni

Ræstu ferli með skipuninni sleep (stytting á sleep) sem bíður í 300 sekúndur, finndu það og stöðvaðu það.

Lausn

Til þess að stýra bakgrunnsferlinu getum við keyrt

sleep 300 &
echo $!
ps -p $!
kill $!
sem geymir PID í innbyggðu breytunni og notar það til að loka forritinu kerfisbundið.


Verkefni 12: Lítill vefþjónn

Ræstu vefþjón í ~/examples/web og sæktu hello.txt með curl.

Lausn

Í fyrsta skeljaglugganum ræsum við vefþjóninn með því að keyra

cd ~/examples/web
PORT=$((8000 + $(id -u) % 1000))
python3 -m http.server "$PORT" --bind 127.0.0.1
en í öðrum glugga sækjum við skrána með því að nota
PORT=$((8000 + $(id -u) % 1000))
curl "http://localhost:$PORT/hello.txt"
þar sem við getum að lokum stöðvað vefþjóninn með því að ýta á Ctrl + C í fyrri glugganum þegar prófunum er lokið.


Verkefni 13: Niðurhal

Sæktu data.json frá litla vefþjóninum og vistaðu sem playground/data-downloaded.json.

Lausn

Á meðan vefþjónninn er í gangi getum við sótt skrána í öðrum glugga með wget með því að keyra

PORT=$((8000 + $(id -u) % 1000))
wget -O playground/data-downloaded.json "http://localhost:$PORT/data.json"
cat playground/data-downloaded.json
en einnig er hægt að nýta curl til að leysa sama verkefni með skipuninni
PORT=$((8000 + $(id -u) % 1000))
curl -o playground/data-downloaded.json "http://localhost:$PORT/data.json"
sem vistar svarið á sama stað í æfingamöppunni okkar.


Verkefni 14: Allt saman

Búðu til skrá í playground/ sem inniheldur fimm algengustu vefslóðirnar úr logs/access.log, ásamt fjölda skipta sem þær birtast.

Lausn

Með því að keyra

cut -d' ' -f7 logs/access.log | sort | uniq -c | sort -nr | head -n 5 > playground/top-paths.txt
cat playground/top-paths.txt
notum við í einu: skráarlestur, dálkaklippingu, röðun, talningu, pípur og endurvísun.