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
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
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
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
find search -name "needle.txt" -exec cat {} \;
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
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
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
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
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
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
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
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 $!
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
PORT=$((8000 + $(id -u) % 1000))
curl "http://localhost:$PORT/hello.txt"
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
curl til að leysa sama verkefni með skipuninni
PORT=$((8000 + $(id -u) % 1000))
curl -o playground/data-downloaded.json "http://localhost:$PORT/data.json"
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