Mustand: sisu ei ole veel tehniliselt ega keeleliselt täielikult kontrollitud ega toimetatud.

Peatüki vaade

Linux/Unix/macOS käsurea kiirõpik

Praegu loed peatükki Käskude kuju ja argumentide loogika, mis kuulub osasse Osa I: Esimesed sammud.

Käskude kuju ja argumentide loogika

Paljud käsud näevad käsureal välja sarnased. Kui see põhimuster on selge, on hiljem palju lihtsam uusi käske õppida.

Loogika

Enamasti saab käsurea kirjutada nii:


käsk [valikud] [argumendid]

See tähendab:

  • kõigepealt tuleb käsu nimi
  • siis tulevad valikud ehk lipud
  • siis tulevad argumendid ehk see, mille peal käsku kasutatakse

Näiteks:


ls -l
grep -n root fail.txt
cp fail.txt koopia.txt

1. Lühikesed ja pikad valikud

Valikud muudavad käsu käitumist.

Lühikesed valikud


ls -l
ls -a
ls -la

Siin:

  • -l on üks lühike valik
  • -a on teine lühike valik
  • -la tähendab, et mõlemad pannakse kokku

Pikad valikud

Mõni käsk toetab pikemaid nimesid:


grep --help
grep --color=auto root fail.txt

Siin:

  • --help on pikk valik ilma väärtuseta
  • --color=auto on pikk valik koos väärtusega

Kõik käsud ei toeta samu kujusid. Mõni toetab -h, mõni --help, mõni mõlemat.

2. Argumendid

Argument on see, mille peal käsk töötab.

Näited:


ls /etc
cat fail.txt
cp vana.txt uus.txt

Siin on argumendid:

  • /etc
  • fail.txt
  • vana.txt ja uus.txt

Praktiline rusikareegel on:


käsk [valikud] [argumendid]

See on kõige loetavam kuju ka siis, kui käsk muutub pikemaks.

3. Valikute ja argumentide järjekord

Mõne käsu puhul võib järjekord tunduda paindlik, aga alati ei tasu sellele loota.

Turvalisem on kirjutada nii:


grep -n root fail.txt
cp -R kaust koopia
tar -czf varu.tar.gz kaust/

Ehk:

  1. käsu nimi
  2. kõige tavalisemad valikud
  3. sihtfailid või muud argumendid

4. Erimärk --

Kui faili nimi algab miinusega, võib käsk seda valikuna valesti tõlgendada.

Siis aitab --:


touch -- -imelik-fail
ls -- -imelik-fail
rm -- -imelik-fail

-- tähendab siin: “siit edasi ära tõlgenda enam midagi valikuna”.

5. Globbing ehk mustrid failinimedes

Shell oskab mõningaid märke tõlgendada mustritena.

Näited:


ls *.md
ls data-?.txt
ls pilt[12].png

Need tähendavad:

  • * sobitab null või rohkem märki
  • ? sobitab täpselt ühe märgi
  • [] sobitab ühe märgi etteantud hulgast

Oluline detail on see, et shell laiendab need mustrid enne, kui käsk ise käivitub.

Näiteks:


grep root *.txt

siin ei saa grep argumenti *.txt. Shell teeb sellest enne tegelike failinimede loendi.

6. Jutumärgid ja backslash

Kui failinimes on tühikud või erimärgid, tuleb nimi kaitsta.

Kõige tavalisemad võtted on:


echo '$HOME'
echo "$HOME"
echo fail\ nimega\ tühik.txt

Tähendus:

  • '...' jätab teksti sõna-sõnalt
  • "..." lubab näiteks muutuja asenduse
  • \ kaitseb ühte märki

Näited


mkdir "Minu Kaust"
cd "Minu Kaust"
printf 'tere\n' > "fail nimi.txt"
cat "fail nimi.txt"

ja:


touch Minu\ fail.txt
cat Minu\ fail.txt

Mõlemad töötavad. Pikemate nimede puhul on jutumärgid tavaliselt loetavamad.

7. Üksik- ja topeltjutumärgid ei ole sama asi

Need kaks on shellis erineva tähendusega.


nimi='Mari'
echo 'Tere $nimi'
echo "Tere $nimi"

Tulemus on põhimõtteliselt selline:

  • 'Tere $nimi' jätab teksti muutmata
  • "Tere $nimi" asendab muutuja väärtusega

Praktiline reegel:

  • kasuta '...', kui tahad täiesti sõna-sõnalist teksti
  • kasuta "...", kui tahad säilitada ühe argumendi, aga lubada muutujate asendust

8. Failinimed tühikute ja erimärkidega

Kui failinimes on tühik, sulud, tärnid või muud erimärgid, siis shell võib nime valesti tükkideks jagada või mustrina tõlgendada.

Näited:


printf 'sisu\n' > "Minu fail.txt"
mv "Minu fail.txt" "Uus nimi.txt"

Kõige praktilisem soovitus alguses on:

  1. eelista nimedes sidekriipse või alakriipse
  2. kui nimes on tühik või erimärk, kasuta jutumärke

9. Kõige sagedamini korduvad lipud

Paljudes käskudes kohtad samu lühikesi märke, aga nende tähendus ei ole alati täpselt sama.

  • -h võib tähendada abi või inimloetavat kuju
  • -v tähendab sageli jutukamat väljundit
  • -r või -R tähendab sageli rekursiivselt
  • -n tähendab sageli arvu või rea numbrit

Näited:


head -n 5 fail.txt
grep -n root fail.txt
rm -r vana-kaust

Sama lipp ei tähenda kõigis käskudes sama asja. Seepärast tuleb iga käsu abi eraldi vaadata.

Minitest

  1. Käivita ls -la.
  2. Ava mõne käsu abi kujul --help.
  3. Loo fail nimega Minu fail.txt ja kuva selle sisu.
  4. Proovi käsku ls *.md mõnes kaustas, kus on mitu Markdown-faili.
  5. Selgita ühe lausega, mida teeb --.