Darbas Unix tipo sistemose (Linux, BSD, Solaris, ...). Šis kursas galėtų būti prerekvizitas tiems kursams, kuriuose Unix sistemos naudojamos praktiniams darbams, arba kaip nagrinėjamas OS pavyzdys. Prerekvizitas -- būti susipažinus su programavimo ir algoritmavimo pagrindais, mokėti rašyti elementarias programas kokia nors programavimo kalba (geriausia C arba C++, bet tinka ir Pascal, Fortran, Basic, ...) Reikalinga pažintis su kompiuterių architektūros pagrindais bei informatikos: diskai, CPU, atmintis, programos, algoritmai, operacinės sistemos. Iš esmės, visas šias žinias studentai atsineša iš mokyklos. a) Unix(R) istorija, dabartis ir paplitimas, architektūros principai (viena programa == viena funkcija, programų kompozicija, minimalus funkcionalumas branduolyje), Šiuolaikinės Unix tipo sistemos: Linux, *BSD, Solaris, ... Laisvos/Atviro kodo ir nuosavybines sistemos. Unix įtaka paplitusioms šiuolaikinėms sistemoms (MacOS X, DOS/Windows) b) Darbas Unix sistemoje: terminalas, prisistatymas (login), darbo pabaiga (logout), komandų/komaninė eilutė (command line), pakvietimas (prompt), dialogo "apvalkalėlis" (shell). Komanda == programa. Komanda which. Komanda locate. whoami. Specialūs failų vardai: "/", ".", "..". Specialūs Shell simboliai ("*", "?") ir jų išplėtimas. "Keisti" failų vardai ("-", " ", "...", vardai su tarpais ir kabutėmis, vardai su spec. Shell simboliais) ir darbas su jais. c) 10(Hex) Unix komandų (įsakymų ;) -- ls, cd, cp, mv, rm, echo, ... Teksto redaktoriai: ed, vi, (brrrr.... ;), nano, nedit (Nirvana editor). Emacs (for enlightened...;) Komadų argumentai -- failų vardai ir neprivalomi parametrai (options). Parametrų sintaksė, istoriniai variantai. Komandų aprašymai: --help parametras ir man komanda. GNU info. Patogus darbas komandinėje eilutėje: Tab-išpletimas, sutrumpinimai (~, ~name), istorija, sinonimai (alias). Well-known aliases. Atsargumas su rm, cp ir mv. d) Standartiniai įvedimo/išvedimo (įvesties/išvesties) kanalai -- stdin, stdout, stderr. Kanalų nukreipimas. Programų kompozicija, konvejeriai (Unix pipes). Filtrai. Komandos grep, tr, cut, paste. "Miniatiūrinės" programavimo kalbos filtrams: sed, awk; perl. e) Shell -- eilinė Unix programa. Shell skriptai (scenarijai, angl. scripts). Shell programavimo kalba: kintamieji, parametrai, valdymo operatoriai (if, while, for, case, test, goto). Shell -- eilučių pakeitimo kalba (string substitution language) ir jos ypatybės. Savo skriptų ir mažų programų kūrimas. Specialūs Shell simboliai ir jų išplėtimas. f) Unix failų sistema. Medis, šaknis, keliai (paths), absoliutūs ir santykiniai keliai. Failų vardai. Simbolinės nuorodos (symbolic links), komanda ln, cp -a, cp -r. Komandos find, xargs. Rekomendacijos patogam darbų ir projektų organizavimui. g) Naudotojų teisės. Priėjimo prie failų teisės (file access rights). Vykdymo teisės. Vartotojų grupės. Komanda chmod. h) Komandų paieška Shell'e, PATH. Aplinkos kintamieji (environment variables). i) Skaičiavimo procesų valdymas: shell skriptai; make/gmake. j) Unix ir tinklas: ssh, telnet, scp, rcp, rsync, wget/wput, ... k) Unix kaip programavimo aplinka: kompiliatoriai (cc, gcc, g++, tcc, javac, g77, gfortran, ada, chill, fpc, ....), programų kompiliavimas ir surinkimas (compiling and linking), surinkimo valdymas: make, ant, Perl and Python Makefiles. (automake & autoconfigure ?). Savo programų kūrimas, diegimas, naudojimas. l) Unix administravimo pradmenys: sistemos administratorius root. programų diegimas/pašalinimas (apt-get, emerge, rpm, BSD ports). Naudotojų sukūrimas, pašalinimas, administravimas. Geri slaptažodžiai. Komandos useradd, userdel, usermod, chsh, chown, chgrp. Direktorija /etc. Saugumo abėcėlė.