Sissejuhatus. ------------- Operatsiooni süsteem Linux pärineb operatsiooni süsteemist UNIX. Linuxi õpitakse sellel määral, millel ta demonstreerib UNIXi omadusi. Sama hästi oleks võimalik tegeleda FreeBSD, MacOSX või QNX-iga selle vahega, et nimetatud süsteemid rohkem erinevad prototüübist (UNIX), peale seda MacOSX juhul, riisvaraline lahendus (raud) on õpijale raskemeni kättesaadav kui Linuxi puhul (vabavara GNU litsenz). Nagu UNIXi puhul universaalteadmisteks jäävad (keerukuse kasvavas järjekorras) - käsurea käskude miinimumi teadmine - tekstiredaktori minimaaltundmine (vi, ed, emacs) - makrokäsude kokkupanemise oskus (BASH skriptimine) - algtekstide kompileerimise oskus (configure, make, make install). - lex ja yacc. GUI (Graphic User Interface) hea tundmine viib ainult ühe operatsioonsüsteemi või isegi GUI versiooni (Gnome, KDE, XFCE jne.) valdamiseks ja täielikuks võimetuseks olles sugu-operatsioonsüsteemis (ütleme FreeBSDs). OS õpimises kõige suurema abi on nii nimetatud dazibaodest - operatsioonsüstemi ülesehituse põhiprintsiipidest. Neid on vähe Näiteks: I. KÕIK ON FAILID II. SYSCALL = OPEN + CLOSE + READ + WRITE FORK + EXEC III. Kahe argumendiga käsul esimene on see mis eksisteerib teine aga see mida luuakse Raamatus on kasutatud näided kontrollitud Fedora 12 Constantine abil mida kasutatakse guest süsteemina VirtualBox 3.16 Windows 7 keskkonnas. Failisüsteem. ------------- Nagu Windows süsteemis faili süsteem kujutab ennast puu-taolist struktuuri kus kaust (kataloog, directory) on koigest failide liik, kaust võib sisaldada teisi kauste ning faile. Põhierinevus Windows' ist on selles et kettaid C, D jne., pole, kogu süsteemi aluses on üks ainus kaust / (root), mis sisaldab kõiki teisi kauste ja faile. kuna KÕIK ON FAILID, siis nende kaustade vahel on ka toorseadmete (raw device) kaust /dev. Näiteks esimene kõvaketas (primary master) on kõige tihedamini (sõltub seadme tüübist SCSI, SATA-IDE või PATA-IDE ja Linuksi tuuma versioonist, meie puhul SATA, 2.6) /dev/sda. Ta võib olla jaotatud osadeks (ehk partitsioonideks) sda1, sda2, sda3,.. Kaustad proc ja sys üldse ei asu kõvakettal kuid arvuti peratiivmälus (RAM, random access memory) ning sisaldavad jooksva / ajutise informatsiooni arvuti - operatsioonsüsteemi tööst. Sellised kaustad monteeritakse põhisüsteemiga kokku - mount ... proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) ... Õnneliku monteerimise puhul me näeme monteeritud objekti loogilist struktuuri - kaustad ja failid asuvad monteeritud kaustas: mount proc /proc -t proc -o rw mount sysfs /sys -t sysfs -o rw Tuletame meelde dazibao III. Lisavõtmed -t (type) -o (options) teatavad monteerimise lisapeensused mount käsule. Kettaosal mis on monteeritud nagu / (root) on kõige tihemini juba loodud kaustad: /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin Need kaustad sisaldavad kasulike programme süsteemi häälestamiseks ning juhtimiseks (utiliite). /etc kaustas asuvad nende utiliitide alghäälestus failid (konfiguratsiooni failid mida saab muuta tavalise teksti redaktoriga). Kaustad /lib /usr/lib ja /usr/local/lib sisaldavad utiliitide ühisosad teegid (libraries). Kaustad /home/user ja /root on vastavate kasutajate kodukaustad - nendes teie alustate UNIX seanssi samuti nad on mõeldud igasuguste kasutajafailide loomiseks. Heaks maineks nimetatakse /media ja /mnt kaustadesse monteerimist, käsitsi monteeritakse ainult /mnt kaustasse. Kaust /tmp on mõeldud ajutise informatsiooni hoidmiseks, /var - kiiresti muutuva, ning /opt - optsionaalse informatsiooni hoidmiseks. Kaust /lost+found on mõeldud kaotatud ning ajutiselt taastatud informatsiooni jaoks, põhiliselt väikse töökindlusega failisüsteemides nagu ext, ext2. include ja src kaustadest me räägime siis kui jutu tuleb tekst- ja binaarfailidest, programmi ehitamsest algtekstidest ning kompileerimise protsessist. Põhilised käsurea käsud. ------------------------ Töö käsureaga meenutab chat-i sõbraga, kus tihti ainsas (kui puudub graafika ja virtuaalterminalid) aknas toimub dialoog arvutiga, kus teie olete ainus (kui arvuti pole võrguga ühendatud) aktiivne kasutaja ning annate range vorminguga käske, milledele arvuti (aga täpsemin operatsioonsüsteem) vastab vajaduse puhul. Käsu vorm on järgmine: command -key0 value ... -keyN value arg0 ... argM pwd 001. --------- Kuna olles tühja akna ees teist võimalust teada saada millises failisüsteemi kohas me asume pole, küsime sellest OS-ilt: pwd # print work directory. 001 # symboli taga paikneb üherealine kommentaar, mis seletab meile, milliste sõnade lühend peidub pwd käsu taga, ning õpiva käsu jarjekorra number - 001. OS lõpetab enda vastust märkidega $ või #, esimene nendest tähendab et teie olete tavaline kasutaja, teine aga superkasutaja absoluutõigustega (root) - peage meeles et pidevalt töötada ruudu õigustega on süsteemile ohtlik, teie pool tehtud võimalikude vigade tõttu. Näide 1. [virtu@darkstar ~]$ pwd /home/virtu [virtu@darkstar ~]$ Ma olen tavaline kasutaja virtu darkstar arvutis kaustas /home/virtu man 002. Aeg on tulnud rääkida abisaamise käsust. See pole help vaid man - manual. Abi informatsioon on jaotatud 7-ks osaks ja kui vajaliku sõna kohta abi paikneb üheaegselt mitmes osas ning ta erineb üks teisest - tuleb kasutada käsu täis variandi: man 3 intro # kolmandas osas paiknev sissejuhatav informatsioon. Näide 2. [virtu@darkstar ~]$ man intro INTRO(1) Linux User’s Manual INTRO(1) NAME intro - Introduction to user commands DESCRIPTION Section 1 of the manual describes user commands and tools, for example, file manipulation tools, shells, compilers, web browsers, file and image viewers and editors, and so on. All commands yield a status value on termination. ... Lugege man intro, man 2 intro, man 3 intro ... ning tutvuge konkreetsete Linuxi abi osade sisuga, ning sellel viisil kogu Linuxi alustega. cd 003. --------- Käsk vahetab kausta, kus me hetkel asume (change directory). Saagem tuttavaks mõnete nimedega spetsiaalnimede hulgast: . jooksev kaust .. vanem kaust (kaust, kus asub jooksev kaust). ~ minu kodukaust ~user kasutaja user'i kodukaust Näide 3. [virtu@darkstar ~]$ cd /usr/lib [virtu@darkstar lib]$ cd ../src [virtu@darkstar src]$ pwd /usr/src [virtu@darkstar src]$ sudo -s [sudo] password for virtu: [root@darkstar src]# pwd /usr/src [root@darkstar src]# Algul meie määrasime absoluutteekonna /usr/lib (fully qualified name) kausta nimi on väär: üks kõik kus kohas me ei asuks - me sattume /usr/lib kaustasse, siis suhteline nimi ../src. Me sattume /usr/lib/../src = /usr/src. Võtame root'u õigusi ning jääme samasse kausta: sudo -s Et kõik töötaks me peame olema registreeritud superuser'ina konfiguratsioonfailis /etc/sudoers: [virtu@darkstar src]$ su -c "visudo" Password: ... virtu ALL=(ALL) ALL ls 004. -------- Käsk ls tuleb appi siis, kui on vaja ringi vaadata, ning vastata küsimusele: mis failid asuvad oksvas kaustas. See käsk on keeruline, meie ei hakka kõike tema võimalusi õpima, vaatame läbi ainult võtmed da1il --color ja ainus argument - kausta nimi. -d näidata ainult kaustad (d - directories) -a näidata kõik failid, seal hulgas need mille nimi algab punktist (neid nimetatakse varjatud failideks, näiteks .bashrc) (a - all) -1 näidata ühes veerus -i näidata ka i-node (faili alguse sõlme number, vt. ext- ext2- tüüpi failisüsteemide sisemine ehitus) -l näidata pikas (l - long) vormingus - atribuudid + faili nimi ühes veerus. Teeme sellele detailsem ülevaade: -rw------- 1 user user 289 2008-09-21 17:27 .bash_history drwxr-xr-x 2 root root 80 2008-10-12 14:00 bsg lrwxrwxrwx 1 root root 3 2008-10-12 14:00 cdrom -> sr0 brw-rw---- 1 root floppy 2, 0 2008-10-12 14:00 fd0 crw-rw---- 1 root uucp 4, 64 2008-10-12 14:00 ttyS0 esimeses veerus esimene positsioon omadused - dlbc d - fail selles reas on kaust l - fail selles reas on link b - fail selles reas on plokkseade (b - block device) c - fail selles reas om järjestik seade (c - character device) 2s 3s ja 4s positsioon - mida faili omanik võib oma failiga teha - - ligipääsu pole r - lugeda w - kirjutada x - käivitada 5s 6s ning 7s positsioon - mida kasutaja, kes on omaniku rühma liige võib failiga teha - - ligipääsu pole r - lugeda w - kirjutada x - käivitada 8s 9s ja 10s positsioon - mida kasutaja, kes pole omaniku rühma liige võib failiga teha - - ligipääsu pole r - lugeda w - kirjutada x - käivitada Teises veerus - kui mittu on faili nime või kui mittu kaustasi on kaustis. Kolmandas veerus - faili omaniku nimi Neljandas - rühma nimi, kuhu fail kuulub Viiendas - fail pikkus baitides, või major ja minor numbrid skriptis MAKEDEV Kuuendas ja seitsmendas - faili loomise ajatempel Kaheksandas - faili nimi või sümboolse lingi nimi -> faili nimi Näide 4. alias - kuidas sumbutada ls värviline väljatrükk. # .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi alias ls='ls --color=none' # User specific aliases and functions touch 005. mkdir 006. rm 007. cp 008. mv 009. -------------------------- Käsude rühm on mõeldud faili / kausta loomiseks (touch / mkdir), faili hävitamiseks (rm filename) või kausta hävitamiseks koos alamfailidega (rm -rf foldername) -r recursive, rekursiivselt, -f force, jõuga. failide kopimine ning kohast kohale toomine täpses vastavuses dazibao III: cp old new # cp - copy mv old new # mv - move Näide 5. mv /home/user/source.c /usr/src # tuua kasuataja 'user' fail # nimega source.c /usr/src # kaustasse chmod 010. ------------- Asendada failiõigused, kodeeritud kolme 8nd koodis numbriga. Näide 10 chmod 664 source.c 0110110100 -rw-rw-r-- ... source.c Pole mõted anda tavalsele failile kausta omadused. Nüüd on lugemise ja kirjutamise ligipääs faili omanikule ning tema rühmale, kõikide teiste jaoks kehtib ligipääs ainult lugemisele. chown 011. ------------- Asendada faili omaniku. Näide 11. chown root source.c Teha root omaniki source.c faili omankuks. chgrp 012. ------------- Asendada faili rühma. Näide 12. chgrp root source.c Panna fail source.c root rühmasse. tar 013. ----------- Toodud näidetes võtmed ühendavad failed liitmist ühte faili (Tape ARchive) ja nende kokkusuremist (bzip2) Arhiveerimine # login as virtu. Peab eksisteerima ~/abc kaust. cd ~ tar -cvjf abc.tar.bz2 abc # c - create v - verbose j - bzip2 # f - file Ning failiarhiivide lahtipakimine. # login as virtu. Kaust ~/abc peab olema kustutatud. cd ~ tar xvjf abc.tar.bz2 # x - eXtract v - verbose j - bzip2 # f - file Failisüsteemide loomine ning kustutamine. Failisüsteemide remont. fdisk 014. mkfs/mkswap 015. fsck 016. du 017. df 018. free 019. dd 020. ----------------------------------------------- Ketta osadeks, ehk partitsioonideks, jaotamine ning nende kustutamine toimub fdisk programmi abil. Programm omab ühetähelisi alamkäske, kus abi saab samuti nagu suures OS-is m käsu abil (m - manual). Toore kettaosa peal failisüsteemi loomine toimub käsuga mkfs perest, failisüsteemi korrasseisu saab kontrollida fsck käsu abil. Näide 14. ext3 tüübi kettaosa Nr.6 loomine tema korrasoleku kontrolliga [root@darkstar ~]# fdisk -l /dev/sda # l - list Disk /dev/sda: 4294 MB, 4294967296 bytes 255 heads, 63 sectors/track, 522 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x000340dc Device Boot Start End Blocks Id System /dev/sda1 * 1 480 3855568+ 83 Linux /dev/sda2 481 501 168682+ 5 Extended /dev/sda5 481 491 88326 83 Linux [root@darkstar ~]# [root@darkstar ~]# fdisk /dev/sda Command (m for help): n Command action l logical (5 or over) p primary partition (1-4) l First cylinder (492-501, default 492): Using default value 492 Last cylinder, +cylinders or +size{K,M,G} (492-501, default 501): 496 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks. ... [root@darkstar ~]# mkfs.ext3 /dev/sda6 mke2fs 1.41.9 (22-Aug-2009) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) 10040 inodes, 40128 blocks 2006 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=41156608 5 block groups 8192 blocks per group, 8192 fragments per group 2008 inodes per group Superblock backups stored on blocks: 8193, 24577 Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 22 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@darkstar ~]# fsck /dev/sda6 fsck from util-linux-ng 2.16.2 e2fsck 1.41.9 (22-Aug-2009) /dev/sda6: clean, 11/10040 files, 5867/40128 blocks [root@darkstar ~]# Peale kettaosa monteerimist (ütleme /mnt/sda6) kaustasse võib huvi tunda: vaba ruumi kohta kettaosas df /dev/sda6 (df - disk free) monteeritud kausta suuruse kohta du -s /mnt/sda6 (du - disk usage) vaba operatiivmälu kohta free dd (disk duplicate) käsu abil võib teha koopia kettaosast või tervest kettast, samuti on võimalik tehf tühja ruumi /dev/zero koopia. Näide 20. dd if=/dev/sda6 of=/usr/src/myfile dd if=/dev/zero of=/usr/src/unformatted bs=512 count=200000 # 100M useradd 21. userdel 22. passwd 24. su 25. sudo 26. ------------------------------------------ Antud osas juttu tuleb põhiliselt sudo käsust. Käsk su, millele alati peab järgnema võti - : su - , mis tähendab võtta kasutaja 'root' õigusi koos ning jääda enda ümbruses (environment, võtmeta, meie automaatselt sattume kaustasse, mis oli viimane 'root' seansis). Tasub meelde tuletada et su ei tööta Ubuntus, kuna siin on varjatud 'root' kasutaja. useradd ning userdel käsude kasutamine on arusaadav ja lihtne. Uuele kasutajale peab olema määratud parool käsuga # passwd username Kasutajad registreeruvad kahes failis järgmise formaadiga Näide 25. etc/passwd root:x:0:0:root:/root:/bin/bash user_a:x:500:500::/home/user_a:/bin/bash user_b:x:501:501::/home/user_b:/bin/bash /etc/group root:x:0:root user_a:x:500: user_b:x:500,501: Kasutaja user_a kuulub user_a rühma, Kasutaja user_b kuulub user_a ning user_b rühmadesse. user_a: - esimeses veerus in kasutaja nimi / rühma nimi x: - on kasutuses isiklik (rühma) parool. *: - pole kasutusel. 500: - UID user identification 500: - GID group identification root - kasutaja tõeline nimi, võib täitmata jätta :: /root: - kasutaja kodukaust /bin/bash - vaikimisi shell sudo -s (s - shell) anda jooksvale kasutajale üle teise kasutaja õigusi, anname üle 'root' kasutaja õigusi. Selleks tehakse uus kirje /etc/sudoers faili lõppu. Selleks sobib käsk visudo: user_a ALL=(ALL) ALL kus user_a on jooksva kasutaja nimi. fail /etc/issue 27. uname (-a, -r) 28. dmesg 29. fail /etc/inittab 30. --------------------- Milline Linuxi distributsioon on hetkel laetud voib teada saada lugedes faili /etc/issue. Jooksva Linuxi tuuma versiooni saab lugeda, kui trükida uname -r (r - release, tuuma versiooni number) [root@darkstar ~]# cat /etc/issue Fedora release 12 (Constantine) Kernel \r on an \m (\l) [root@darkstar ~]# uname -r 2.6.32.10-90.fc12.i686 [root@darkstar ~]# uname -m i686 Võti -a (a - all, kõik) trükib kernelist kogu saadava informatsiooni inimesele arusaadavas formaadis (human readable form), Näide 28. [root@darkstar ~]# uname -a Linux darkstar 2.6.32.10-90.fc12.i686 #1 SMP Tue Mar 23 10:21:29 UTC 2010 i686 athlon i386 GNU/Linux [root@darkstar ~]# Meie võime korrata informatsiooni viimase laadimise kohta andes käsu dmesg. Käivitatud Linuxi süsteem ,võib töötada uhes järgnevatest olekutes - runlevel 0, 1, 2, 3, 4, 5, 6. Runlevel-id erinevad üks teisest üheaegselt käivitatud protsesside arvuga. Jooksvast runlevelist võib rohkem teada saada uurides /etc/inittab faili sisu. Kui teie töötate Redhat, Centos või Fedora distributsioonidega siis teile tuleb kasuks käsk ntsysv. Debian või Ubuntu omanikule soovitaks rcconf. Näide 30. Fail /etc/inittab. Süsteem Fedora 12, Constantine [root@darkstar ~]# cat /etc/inittab # inittab is only used by upstart for the default runlevel. # ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM. # # System initialization is started by /etc/event.d/rcS # # Individual runlevels are started by /etc/event.d/rc[0-6] # # Ctrl-Alt-Delete is handled by /etc/event.d/control-alt-delete # # Terminal gettys (tty[1-6]) are handled by /etc/event.d/tty[1-6] and # /etc/event.d/serial # # For information on how to write upstart event handlers, or how # upstart works, see init(8), initctl(8), and events(5). # # Default runlevel. The runlevels used are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS # 3 - Full multiuser mode # 4 - unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) # id:5:initdefault: [root@darkstar ~]# Vaikimisi süsteem laeb ennast runlevel 5, käivitades protsesse kaustast /etc/rc5.d (on nähtavad ntsysv abil). II. Linux töölaual. ------------------- Pole midagi salata et enamus inimestest ei viitsi põhjalikult Linuxi õpida, Linuxi OS pole sama moodne ja täis toppitud moodsate tehnoloogiatega nagu seda on töölaua Windows (Windowsis need tehnoloogiad on sündinud, windows-süsteem on sobiva hinnaga, lõppuks, tänu Inernetile, teda on lihtne varastada). Selle pärast vaatame läbi kõigepealt kaks kõige levinumad operatsiooni Linuxiga: - distributiivi installeerimist kõvakettale - rakenduste (aplications) installeerimist töötavale süsteemile. Selleks et juurde lisada OS olemasolevale, piisab populaarsest Linuxi live-distributsioonist (Ubuntu, Fedora, openSuse, Mandriva jne.) ning kasutada sobiv võluri (wizard) reziim. Lähema tutvumise puhul võib kasutada programme grub, fdisk ja parted. Lihtne on kasutada gParted live ketta (gparted.sourceforge.net). Selle ketta abil teile on lihtne ümberpartitsioneerida ketta installeeritud Windowsiga alates XP-st ja uuema versiooniga. Windows 7 ise-enesest sisaldab ümberpartitsioneerimis vahendeid. Multiboot - protsessiga tavaliselt tegeleb grub - nimeline programm. Enamus temast tavaliselt paikneb /boot/grub kaustas Linuxile pühendatud kettaosal, samal ajal laadija ise on salvestatud kõvaketta 0 rajale. Näide 2.1 Grub 0.97 installeerimine (Fedora 12, Constantine) [root@darkstar ~]# grub grub> find /boot/grub/stage1 find /boot/grub/stage1 (hd0,0) grub> root (hd0,0) root (hd0,0) Filesystem type is ext2fs, partition type 0x83 grub> setup (hd0) grub> setup (hd0) setup (hd0) Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/e2fs_stage1_5" exists... yes Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 30 sectors are embedded. Succeeded Running "install /boot/grub/stage1 (hd0) (hd0)1+30 p (hd0,0)/boot /grub/stage2 /boot/grub/grub.conf"... succeeded Done. grub> quit quit [root@darkstar ~]# Fdisk programmi abil on hea kõvaketta osadega manipuleerida siis, kui Windows ei ole veel peale pandud. Loome nüüd kolme osaga ketta: Windows XP, Linux, Linux-swap 20?? primary-slave ????? : Näide 2.2 [root@darkstar ~]# fdisk /dev/sdb Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel. Building a new DOS disklabel with disk identifier 0x1f36dd52. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. The number of cylinders for this disk is set to 2610. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-2610, default 1): Using default value 1 ast cylinder, +cylinders or +size{K,M,G} (1-2610, dflt 2610): +10G Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First cylinder (1307-2610, default 1307): Using default value 1307 Last cylinder, +cylinders or +size{K,M,G} (1307-2610, dflt 2610): +8G Command (m for help): n Command action e extended p primary partition (1-4) e Partition number (1-4): 3 First cylinder (2352-2610, default 2352): Using default value 2352 Last cylinder, +cylinders or +size{K,M,G} (2352-2610, dflt 2610): Using default value 2610 Command (m for help): n Command action l logical (5 or over) p primary partition (1-4) l First cylinder (2352-2610, default 2352): Using default value 2352 Last cylinder, +cylinders or +size{K,M,G} (2352-2610, dflt 2610): Using default value 2610 Command (m for help): t Partition number (1-5): 5 Hex code (type L to list codes): 82 Changed system type of partition 5 to 82 (Linux swap / Solaris) Command (m for help): a Partition number (1-5): 1 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@darkstar ~]# On loodud 10GB Windowsi partitsioon (/dev/sda1) 8GB Linuxi partitsioon (/dev/sda2) 2GB Linux - swap partitsioon (/dev/sda5) Sellise ketta peale operatsioonsüsteeme on kerge paigaldada võlurite (wizard) abil_ soovi korral võib eelnevalt formatttida ketta käsitsi. Näide 2.3 mkfs.ntfs /dev/sdb1 mkfs.ext3 /dev/sdb2 mkswap /dev/sdb5 Peale mida ketas füüsiliselt ümberpaigaldatakse nagu primary master, operatsioonsüsteemide installeerimine toimub primary-master kettale. Rakenduste installeerimine Ubuntu distributsioonis. --------------------------------------------------- Hiljuti Ubuntu süsteem (distributsioon 9.10, Ubuntu Software Center 10.04 LTS) hakkas võimaldama Windows-laadset graafilist rakenduste installeerimis programmi "Lisada - maha võtta rakendus pakett". Kõik mida on vaja teada - kuidas Ubuntu ennast uuendab - alguses toimub paketide nimekirjade sünkroniseerimine (update - protsess), siis pakettide sisuline uuendamine ja sünkroniseerimine (upgrade - protsess) ning siis kõige uuema kättesaadavatest versioonidest rakenduse installeerimine (install - protsess) määratud repode hulgast (fail /etc/apt/sources.list). Rakenduste installeerimine Ubuntu distributsioonis apt programmi abil. ---------------------------------------------------------------------- Update - protsess # apt-get update Upgrade - protsess # apt-get upgrade või apt-get dist-upgrade Installeerimine # apt-cache search # apt-get install Deinstalleerimine # apt-get autoremove --purge Näide 2.3 Fail /etc/apt/sources.list, Ubuntu 10.04 jaoks. #deb cdrom:[Ubuntu 10.04 LTS _Lucid Lynx_ - Release i386 (20100429)]/ lucid main restricted # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://ee.archive.ubuntu.com/ubuntu/ lucid main restricted deb-src http://ee.archive.ubuntu.com/ubuntu/ lucid main restricted ## Major bug fix updates produced after the final release of the ## distribution. deb http://ee.archive.ubuntu.com/ubuntu/ lucid-updates main restricted deb-src http://ee.archive.ubuntu.com/ubuntu/ lucid-updates main restricted ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team. Also, please note that software in universe WILL NOT receive any ## review or updates from the Ubuntu security team. deb http://ee.archive.ubuntu.com/ubuntu/ lucid universe deb-src http://ee.archive.ubuntu.com/ubuntu/ lucid universe deb http://ee.archive.ubuntu.com/ubuntu/ lucid-updates universe deb-src http://ee.archive.ubuntu.com/ubuntu/ lucid-updates universe ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team, and may not be under a free licence. Please satisfy yourself as to ## your rights to use the software. Also, please note that software in ## multiverse WILL NOT receive any review or updates from the Ubuntu ## security team. deb http://ee.archive.ubuntu.com/ubuntu/ lucid multiverse deb-src http://ee.archive.ubuntu.com/ubuntu/ lucid multiverse deb http://ee.archive.ubuntu.com/ubuntu/ lucid-updates multiverse deb-src http://ee.archive.ubuntu.com/ubuntu/ lucid-updates multiverse ## Uncomment the following two lines to add software from the 'backports' ## repository. ## N.B. software from this repository may not have been tested as ## extensively as that contained in the main release, although it includes ## newer versions of some applications which may provide useful features. ## Also, please note that software in backports WILL NOT receive any review ## or updates from the Ubuntu security team. # deb http://ee.archive.ubuntu.com/ubuntu/ lucid-backports main restricted universe multiverse # deb-src http://ee.archive.ubuntu.com/ubuntu/ lucid-backports main restricted universe multiverse ## Uncomment the following two lines to add software from Canonical's ## 'partner' repository. ## This software is not part of Ubuntu, but is offered by Canonical and the ## respective vendors as a service to Ubuntu users. # deb http://archive.canonical.com/ubuntu lucid partner # deb-src http://archive.canonical.com/ubuntu lucid partner deb http://security.ubuntu.com/ubuntu lucid-security main restricted deb-src http://security.ubuntu.com/ubuntu lucid-security main restricted deb http://security.ubuntu.com/ubuntu lucid-security universe deb-src http://security.ubuntu.com/ubuntu lucid-security universe deb http://security.ubuntu.com/ubuntu lucid-security multiverse deb-src http://security.ubuntu.com/ubuntu lucid-security multiverse Ubuntu paketid ja dpkg. ----------------------- Lihtsamal juhul fail on mingi kogum bitte (fail keha + faili nimi). Keerulisematel juhtumitel fail kannab ennas hulga omadusi - attribute. Nimi plus teatud hulk faile moodustavad paketti. Nimi plus teatud hulk pakette moodustavad applikatsiooni (aplication). Selleks, et välja-' selgittada milliseed paketid kuuluvad applikatsiooni, tuleb kokku panna põhipakett sõltuvuses olevate pakettidega, sellistega ilma milleta põhipakett ei saa töötada. Räägitakse et pakettid moodustavad sõltuvustepuu. Kogu töö puu kokkupanemisel teeb automaatselt apt programm. Kui on tahtmist applikatsiooni kokkupanemisega näha vaeva käsitsi (näiteks kui apt on maha installitud) siis dpkg programm võimaldab kättesaadavate või installitud pakettide suhtes vormeerida terve rida päringud (queries). Järgnev informatsioon on võetud saidilt http://www.pixelbeat.org/docs/packaging.html (ingliskeelne). installida/uuendada paketti fail(id) install/upgrade package file(s) dpkg -Gi package(s).deb maha võtta pakett remove package dpkg -r package näidata nimekiri kõikidest installitud pakettidest show all packages (names only) dpkg-query --showformat='${Package}\n' näidata nimekiri kõikidest installitud pakettidest, mis sisaldab sõna "spell". show all packages whose names contain the word spell dpkg -l '*spell*' näidata installitud paketti "package" versioon show version of package installed dpkg -l package näidata installitud paketti "package" metaandmed show all package metadata dpkg -s package millisele pakettile kuulub fail "file" what package does file belong dpkg -S /path/file anda kaustade nimekiri, kuhu "package" failid on installitud list where files were installed dpkg -L package anda kaustade nimekiri, kuhu "package.deb" failid saavad olla installitud . list where files would be installed dpkg -c package.deb anda nende failide/pakettide nimekirja mida pakett nimega "package" enda normaalseks tööks vajab. list files/packages that package needs dpkg -s package | grep ^Depends: anda nende pakettide nimekirja, mis vajavad paketti nimega "package" list packages that need package (see also whatrequires) dpkg --purge --dry-run package Fedora. rpm - põhilised päringud. --------------------------------- Redhat distributsioonide reas rpm - pärinud ehitatakse analoogselt dpkg - päringutega. installida/uuendada paketti fail(id) install/upgrade package file(s) rpm -Uvh packages(s).rpm maha võtta pakett remove package rpm -e package näidata nimekiri kõikidest installitud pakettidest show all packages (names only) rpm -qa näidata nimekiri kõikidest installitud pakettidest, mis sisaldab sõna "spell". show all packages whose names contain the word spell rpm -qa '*spell*' näidata installitud paketti "package" versioon show version of package installed rpm -q package näidata installitud paketti "package" metaandmed show all package metadata rpm -q -i package millisele pakettile kuulub fail "file" what package does file belong rpm -q -f /path/file anda kaustade nimekiri, kuhu "package" failid on installitud list where files were installed rpm -q -l package anda kaustade nimekiri, kuhu "package.rpm" failid saavad olla installitud. list where files would be installed rpm -q -l -p package.rpm anda nende failide/pakettide nimekirja mida pakett nimega "package" enda normaalseks tööks vajab. list files/packages that package needs rpm -q --requires package anda nende pakettide nimekirja, mis vajavad paketti nimega "package" list packages that need package (see also whatrequires) rpm -q --whatrequires package III. Filtrid ja scriptid. ------------------------- Koorik (BASH shell, meie puhul) alati hoiab avatuna kolm faili stdin (standard input) stdout (standard output) ja stderr (standard error). II dazibao määrab neli standartse operatsiooni: (open) - võtta failistruktuur mis kirjeldab faili ja anna välja number (indeks) struktuuride hoidlast, vabasta mälu struktuuride hodlast, palvele avada kinni pandud fail indeksi järgi vasta vea koodiga (close), kohe peale shelli avamist, võib alustada kirjutamist (write) faili avatud indeksiga 0 - stdin, ning lugemist (read) failidest, avatud indeksitega 1 - stdout ja 2 - stderr. Näide 3.1 Fail nimega "abc" sisaldab järgneva teksti one two three quattro Anname käsu: spell < abc Sellega spell programm loeb läbi stdin voogu faili "abc". Ingliskeelsed sõnad one, two, three ei sisalda vigu stdouti sattub itaaliakeelne sõna quattro. spell on tüüpiline filter- programm (loeb stdin-i trükib stdout-i)- < 0< > 1> 2> 1>> >& |& --------------------------------------- on tüüpilised ümbersuunamise operaatorid (& - märk tähendab, et toimub standardfailide liitmine (tavaliselt stdout ja stderr). Näide 3.2 # X -help 2>&1 1| less Abifail, tavaliselt trükitakse stdout-i. Kuid mitte X programmi puhul, mis trükib stderr-i. Meie liidame stdout ning stderr stdout-i siis laseme läbi less filtri (mis loeb stdout+ist ning trükib stdout-i ja võimaldab lehitseda informatsiooni lehekülgede või ridade kaupa). Lihtsus millega ehitatakse programmkonveierid, kõige pealt on kasulik skriptide kirjutamise puhul (skriptid - koodi fragmendid, mida tihti kasutatakse mitmekordselt). Sed ning grep filtrite näided. ------------------------------ Vaatame sed ning grep programme kui filtre hiljem, sest enne seda meie peame tutvuma regulaaravaldistega. Teised kasulikud filtrid. ------------------------- cat (concatenate). ------------------ Filter mis loeb ning trükib teksti failidest. Kasutatakse failide liitmiseks: cat < file0 file1 file2 > filesum või lihtsam cat file0 file1 file2 filesum. Samuti kasutatakse faili(de)ridade renumereerimisvahendinnnna (võti -n). Näide # cat one two | cat -n Konsoolile trükitakse välja ühtse nimekirjaga numereeritud failide one ning two sisu. more less. ----- Filter on mõeldud dokumendi vaadeldamiseks ekraani kaupa. less on kirjuatud hiljem, nagu võimsam alternatiiv moore filtrile (tagasi lehitsemine ja muu). Näide # less --help | less tee. ---- Filter harude tegemiseks ja nende liitmiseks. Faili loetakse torust (stdin), väljatrükitakse kaks koopiad - üks argumendinimelisse faili, teine standard väljundisse (stdout) Näide. Lugeda kokku failiread, ning trükida tekst tekstifailist. # cat myfile | tee fi | wc -l; cat fi; rm fi head tail. ----- Faili alguse ja lõppu filtrid. Käsud trükivad esimesed/viimased 10 (n - võtmega -n) rida teksti failist mille nimi on antud argumendina. wc. --- Lugemisfilter (-c character -w words -l lines). Vaikimisi arvutab kokku kõik kolm arvu (wc -cwl) Näide. # cat myfile one two three four quattro # cat myfile | wc 4 5 27 tr (translate) -------------------- Tõlkimisfilter. Never write it in 'C' if you can do it in 'awk'; Never do it in 'awk' if 'sed' can handle it; Never use 'sed' when 'tr' can do the job; Never invoke 'tr' when 'cat' is sufficient; Avoid using 'cat' whenever possible. --Taylor's Laws of Programming bzip2 gzip ------ Pakimisfiltrid. Näide Kokkupakida /sbin kausta cd / tar cv sbin | bzip2 > syspart.tar.bz Lahti pakida /sbin kausta cd / rm -rf sbin cat syspart.tar.bz | bzip2 -d > tar xv dd. --- Toorseadmete kopeerimisfilter. Näide. Luua 3.5" flopiketta image. dd < /dev/zero > /home/user/bigfile bs=512 count=`expr 160 \* 18` Pange tähele dd võtmette mittestandardse süntaksi dd võti=väärtus Programmid, kasulikud skriptide kirjutamise puhul: seq. ------------------------------------------------------- Programm, mis trükib täisarvude jada. Näide. seq 10 1 2 3 4 5 6 7 8 9 10 seq 3 10 3 4 5 6 7 8 9 10 seq 3 2 10 3 5 7 9 Programmid, kasulikud skriptide kirjutamise puhul: test. -------------------------------------------------------- Programm viib tulemuse välja muutujasse $? kus juures true on 0 ning false on mitte null näiteks 1. Täisarvude võrdlemine -eq $a on võrdne $b (is equal to, $a -eq $b) -ne $a ei ole võrdne $b (is not equal to, $a -ne $b) -gt $a suurem kui $b (is greater than, $a -gt $b) -ge $a suurem või võrdne $b (is greater than or equal to, $a -ge $b) -lt $a väiksem kui $b (is less than, $a -lt $b) -le $a väiksem või võrdne $b (is less than or equal to, $a -le $b) Näide test 2 -gt 3 echo $? 1 test 2 -gt 1 echo $? 0 Loogilised avaldised (expression) muuta normaalne operaatorite täitmise järjekord (override normal precedence of the operators) ! expression ei loogiline (logical not) -a ning loogiline (logical and) -o või loogiline (logical or) Stringide võrdlus -z tühi "null" pikusega string (string is "null", that is, has zero length) -n string pole "null" (string is not "null"). = stringid on võrdsed (is equal to, $a = $b) != stringid pole võrdsed (is not equal to, $a != $b) \< string on väiksem kui (ASCII alfabeet järjekorras), (is less than, in ASCII alphabetical order, $a \< $b, Note that the "<" needs to be escaped). \> string on suurem kui (ASCII alfabeet järjekorras), (is greater than, in ASCII alphabetical order, $a \> $b, Note that the ">" needs to be escaped). Failisüsteem -e fail eksisteerib (file exists) -f eksisteeriv fail on regulaarne (pole kaust pole seade pole toru pole pesa ning pole link) (file is a regular file) -s faili pikus pole null (file is not zero size) -d fail on kaust (file is a directory) -b fail on plokkseade (file is a block device: floppy, cdrom, etc.) -c fail on jarjestikseade (file is a character device: keyboard, sound card, etc.) -p fail on toru (file is a pipe) -S fail on pesa (file is a socket) -L fail on sümboolne link (file is a symbolic link) -r faili võib lugeda (file has read permission) -w faili võib kirjutada (file has write permission) -x faili võib käivitada (file has execute permission) -g group-id lipp on üleval. (group-id flag set on file) -u user-id lipp on üleval. (user-id flag set on file) -k "sticky bit" on üleval. (kui kasutaja pole kausta, kus "sticky-bit" on üleval, omanik siis ta ei saa sellest kaustast faile kustutada, isegi enda omi). ("sticky bit" set, if user does not own a directory that has the sticky bit set, she cannot delete files in it, not even files she owns) -O Teie olete faili omanik (you are owner of file) -G faili group-id on sama nagu teil (group-id of file same as yours) -t n faili deskriptor - avatud faili indeks - n on kasutusel (tavaliselt 0 - stdin, 1 - stdout, 2 - stderr) (file descriptor n is open. This usually refers to stdin, stdout, and stderr: file descriptors 0 - 2). f1 -nt f2 fail f1 on uuem kui f2 (file f1 is newer than f2) f1 -ot f2 fail f1 on vanem kui f2 (file f1 is older than f2) f1 -ef f2 failid f1 ja f2 on ühe ja sama faili lingid (aliased). (files f1 and f2 are links to the same file) Programmid, kasulikud skriptide kirjutamise puhul: expr. -------------------------------------------------------- expr - käsurea kalkulaator - opereerib täisarvudega ning stringidega. Operatsioonid täisarvudega: (+ - * / %) + pluss (plus) - miinus (minus) * korrutamine (multiplication) / jagamine (division) % jagamise jääk (modulo - returns the remainder of an integer division) Näide. Kui palju baitte mahub standardse kolmetollise flopy ketta rajale (üks pea). virtu@darkstar:~$ expr 18 \* 512 9216 Milleks "\" ennem korrutamist oli vaja, vaadake allpool "Backslashing" peatükkis. Operatsioonid stringidega: (index substr length match) # index: otsitakse vasakult paremale substringis esimene sümbol, mis eksisteerib ka stringis. Trükitakse leitud sümboli positsioon (vasakult paremale, alates ühest, kui vastavust pole leitud, trükitakse 0) stringis. (position in string of first character in substring that matches). Näide. a=1234zipper43231 b=`expr index $a 23` echo Numerical position of first 2 in $a is $b. Numerical position of first 2 in 1234zipper43231 is 2. # substr: trükime substring, kui on antud string, substringi algus stringis (akates ühest), ning substringi pikus. (print substring, starting position & length specified). Näide. a=1234zipper43231 b=`expr substr $a 2 6` echo Substring of $a, starting at 2 and 6 chars long is $b. Substring of 1234zipper43231, starting at 2 and 6 chars long is 234zip. # length: Stringi pikus. (length of the string) Näide. a=1234zipper43231 b=`expr length $a` echo Length of $a is $b. Length of 1234zipper43231 is 15. # 'match' Töötab analoogselt programmiga 'grep' (operates similarly to 'grep'). Näude. a=1234zipper43231 b=`expr match $a [0-9]*` echo Number of digits at the beginning of $a is $b. Number of digits at the beginning of 1234zipper43231 is 4. b=`expr match $a '\([0-9]*\)'` echo The digits at the beginning of $a are $b. The digits at the beginning of 1234zipper43231 are 1234. Backslashing. ------------- Meie alfabeet on mõlemalt poolt kinni (ASCII), selle tõttu meie ei saa uued sümbolid uue väärtusega juurde tuua. Väljapääs seisneb selles et meie määrame olemasolevas alfabeedis spetsiaalne sümbol paralleelalfabeedi hüppeks (backslash, siit "backslashing"). Näide. Vana alfabeet: A B Z \ a b z Uus paralleelalfabeet: A B a b # Uues alfabeedis ei pea olema # \ sümboli \\ - Nüüd tähendab sama, mida kunagi \ z - Nüüd tähendab sama, mida kunagi z, uues paralleelalfabedis z ei eksisteeri. \a - Nüüd tähendab sama, mida kunagi a a - Nüüd on uue paralleelalfabeedi käsk. Käsu expr 18 \* 512 täidab BASH koorik, kus sümbol "*" omab teist tähendust, kui korrutamine (see on hoopis üks regulaaravaldiste metasümbolitest). Selleks et korrutamiskäsk jõuaks moonutusteta expr käsuni, kasutatakse gi "backslashing"-mekanismi. Regulaaravaldised. ------------------ 1940-ndatel aastatel Warren McCulloch ja Walter Pitts proovisid kirjrldada närvisüsteemi lõppautomatide teooria abil. 1956-l aastal Steeve Kleene mõtles välja matemaatilise vormi neuron- mudeli kirjeldamiseks ning nimetas seda regulaarhulgad. Regulaaravaldis on võte, kuidas saab kirjeldada stringide hulga. Kuna selline hulk võib omada lõppmatu arvu liikmeid, me ei saa seda renumereerida. On olemas neli operatsiooni regulaaravaldiste loomiseks 1. Kleene closure (kordumine) * 2 Alteration (valik) | 3 Concatenation none 4 Grouping (Gruppeerimine) () Järgmine tabel illustreerib neid näide peal Operatsioon Regulaaravaldis Ja Ei .................................................................. Kleene closure ab*a aa ab aba abba Alternation aa | baab aa Iga teine string baab Concatenation aabaab aabaab Iga teine string Grouping a(a|b)aab aaaab Iga teine string abaab Operaator * on kõrgema prioriteediga, siis | ,siis Concatenation.' Kui meie tahame mõelda välja regulaaravaldis a, aba, ababa, abababa hulga jaoks, selleks on (ab)*a kuna ab muster peab korduma tervikuna Robert Sedgewick, Kevin Wayne, Princetoni Ülikool, 2004 Kasulikud lisandmetasümbolid: . suvaline üksik sümbol $ rea lõpp ^ rea algus [Ci-Cj] suvaline sümbol Ci ja Cj vahel ? korrata eelnev sümbol 0 või 1 korda * korrata eelnev sümbol 0 või rohkem kordi + korrata eelnev sümbol 1 või rohkem kordi {n} korrata eelnev sümbol n korda {n,m} korrata eelnev sümbol n kuni m korda \ backslashing sümbol. grep. ----- grep (-i, -v, -r, -n -H) 'regexp' [filename] Algul vaatame need 'grep' võtmed, mida me kavatseme hakata kasutama. -i ignore case -v invert -r recursive -H --with-filename. Print the file name for each match. This is the default when there is more than one file to search. -n --line-number. Prefix each line of output with the 1-based line number within its input file. (-n is specified by POSIX). 'regexp' - regulaaravaldis, lihtsamal juhul otsitava stringi fragment. [filename] - kui failide nimed ei ole mugav edastada toru kaudu (võti -r) naad võivad olla üleantud argumendina. Näide. cat *.sh | head -n 1 | grep ^#! # Leida jooksvas kaustas sellised # .sh failid, mis on skriptid # (algavad #!-ga). Keerulisemate regulaaravaldiste näided tuuakse raamatu teises pooles "Ja mida kõige sellega teha või praktiline Unix-i kasutamine". Voogu redaktor sed. ------------------- Paljudele on tuttav "Find and Replace" vahend, mida saate kohtuda Windows-i teksti redaktorites. Linuxis sed, ed ning vi omavad palju võimsamat vahendi, kuna otsing toimub regulaaravaldiste abil ja ühise süntaksi alusel: s/Find_regexp/Replace_To/g || | | | || ||search re- |replace ||globally, everywhere in string ||gular exp- |text with | ||ression | |single character representing search and |search and replace replace borders ( /, #, etc.) Näide. Asendada sõna Beatles sõnadega Rolling Stones kogu BeatlesFile faili ulatuses. Nimetada uus fail RSFile. cat BeatlesFile | sed s'Beatles/Rolling Stones/'g > RSFile awk. ---- AWK on keerulise tekstitöötluse keele interpretaator, millest meile läheb ainult natuke vaja: "plain ASCII" tabeli veerude trükimine valiku järgi ja teises järjekorras, stringi pikuse trükimine samuti "plain ASCII" failist. Näide: awk '{print $4, $1, $2}' awk '{print length}' Veidrad redaktorid ed ja vi. ---------------------------- ed Redaktor. Faili lesson1.txt loomine kodukaustas. --------------------------------------------------- ed redaktor. lesson1.txt faili loomine kodukaustas. --------------------------------------------------- Kolime kodukaustasse $ cd ~ Veendume et oleme kodukaustas $ pwd /home/user Kui sinu nimi on user siis /home/user on sinu kodukaust Käivitame tekstiredaktori. $ ed lesson1.txt Redaktoril on kaks tööreziimi - käsu ja sisestamis. Reziimi muutmine ja kõik käsud on ühetähelised, kõik see hästi meenutab ideed "backslicing"-uga, redaktori algtekst kulub samale autorile. Algselt redaktor on käsureziimis, mingit abirea ei trükita. Trükida välja käsurea "status bar" "*" võib "P" - käsu abil. Redaktoril puudub kursor, kogu redigeerimine toimub täpse adresseerimise ning regulaaravaldiste teadmise abil: rea_numberkäsk algrida,lõpuridakäsk Fail algab reas number üks ning lõpeb reaga $ Näide. Trükida konsoolile terve fail (p - print) 1,$p Peale "p"-käsu on kasulik teada järgmised käsud a - append text i - insert text (mõttetu on teha insert null pikusega tühja faili). s - search and replace (süntaks on ülevõetud sed - programmist). . - exit edit mode (see on ainus käsk, mis töötab redigeerimis- reziimis. Sisestatakse positsioonis 1 (kõige vasakumas veerus). w - save (write, w filename) q - exit vi redaktor. lesson1.txt faili loomine kodukaustas. --------------------------------------------------- Ülespool toodud ed - käsud töötavad ka vi - redaktoris. Kolime kodukaustasse. Veendume et oleme kodukaustas. Käivitame tekstiredaktori. $ vi lesson1.txt Kõige vähem probleeme tekib siis, kui õnnestub harjuda mõttega et klaviatuuril töötavad ainult põhigrupi klahvid. [ESC][1][2][3][4][5][6][7][8][9][0][-][=][ <-- ] [Q][W][E][R][T][Y][U][I][O][P][[][]] [A][S][D][F][G][H][J][K][L][;]['] [Enter] [Shift] [Z][X][C][V][B][N][M][,][.][/] [ Space ] Redaktoril on kolm tööreziimi - sisestamis- (S) - parandamis- (P) - käsu- (?) Reziimi ümberlülitamine: S -> P Esc S -> K Esc : P -> S i (insert) või a (append) P -> K : K -> S Esc i K -> P Esc Liikumine ekraanil oleval tekstis toimub parandus reziimis klahvide abil. Samas reziimis toimub lihtne teksti redigeerimine. h - vasakule, "Head" suunas j - alla (Jookseb vesi) k - ülesse (Kõrgustesse) l - paremale "taiL" suunas x - kustutada jooksev sümbol "panna rist peale" r - asendada jooksev sümbol "replace" 1. Jutumärkides kommentaarid on mõeldud selleks et paremini jääksid meelde vi-vi-vi redaktori klahvid. 2. Jooksev objekt on märgistatud kursoriga (et ära ei jookseks). Operatsioonid jooksva reaga. yy - (yank - copy to clipboard) dd - (copy to clipboard and delete) p - (paste from clipboard). Save (write). Lülitame sisse käsureziim, siis: w või w faili_nimi Väljumine vi redaktorist. Lülitame sisse käsureziim, siis: q quit wq write (save) and quit q! salvestamata väljumine Lingid ja eestikeelne kirjandus http://www.eenet.ee/EENet/assets/docs/tigu/appi.vi.html BASH - keeles skriptide programmeerimine. ------------------------------------------ Meile piisab universaalsemast alamkeelest, ms on SH, peale seda meie teame juba küllalt palju sellist, mis sobib uue keele osadeks: seq, test, expr, regulaaravaldised. On tähtis mõista selline imperatiiv- keele (SH on imperatiivkeel) õppimisjärjekord, et meie saaks täisväärilise keele omadusi nii kiiresti kui võimalik, ja pärast ainult teeks seda mugavamaks. Kommentarid Konstandid ja muutujad Operatsioonid Funktsioonid --- Täisvääriline keel, võime programmeerida suvalise algorütmi --- "Flow control" - operaatorid (if, while, do, for)- Meie peame teadma keele aluses rakendarud põhiprintsiibid - keele 'dazibao': - kõik muutujad on string- tüüpi mmutujad. - muutujate nimed lugemiseks sisaldab $ - prefiksi, kirjutamiseks ei sisalda. - osa muutujatest on sisseehitatud: $? (exit code), $#, $*, $0..$9 (argc, argv[]) - Teha vahet tugeva - '', nõrga - "" ning ümbersuunava - `` tsiteerimise vahel. (Understand strong - '', weak - "" and redirecting - `` quotation). - Kasutada expr funktsioon (programm) aritmeetika jaoks ning stringide manipuleerimiseks (Use expr function for arithmetics and string manipulation). - Kasutada test funktsioon (programm) loogiliste- ning võrdlus- operatsioonide jaoks. Test-i tulemuse leiate $? muutuja väärtuses (Use test for logical operations and comparison. Result is in $?). 1. Kommentarid #!/bin/bash # # Esimene rida teatab süsteemile millise koorikuga (shell) # töötab antud skript. 2. Andmed koodis Stringid 'this is $strong quoting' # muutujate väärtusi # ei asendata "this is $weak quoting" # muutujate väärtusi # asenda `expr 2 + 3` # 5 on tulemus # suunatakse ümber 3. Muutujate väärtused Kõik primaarsed andmete tüübid (All primary types of data) - boolean, - bit set, - finite integer, - floating point number Salvestatakse mällu formatitud stringina - inimesele arusaadavas formaadis (are stored as formatted strings - in human readable form). Muutujad ei vaja deklareerimist (Variables does not require declaration). Uuemad BASH versioonid toetavad ühemõõdulisi massiive (Newer versions of bash support one-dimensional arrays). (a[3]=Abcd) Struktuurid või konteinerid keeles puuduvad (Structures or Containers are not available). $ VAR = "My variable" # luua / kirjutada (create / write) $ echo $VAR # lugeda (read) $ unset $VAR # vabastada mälust $VAR # (free memory allocated to $VAR). Sisseehitatud muutujad (Special variables) $? viimase käsu return code (tagastamiskood) (return code of the last command) $# käsurea argumentide arv (number of command line arguments) $* kogu argumentide rida esitatud ühe stringina (whole string of arguments as one string) $0 skripti failinimi (script filename) $1 .. $n käsurea argumendid (command line arguments) 4. Avaldised Avaldisi arvutatakse expr utiliidi abil. 5. "Flow control" - käsud. test utiliit ------------ test - nimeline utiliit kasutatakse avaldise loogilise väärtuse arvutamiseks. Tulemuse tagastatakse exit koodis: 0 - tõde, 1 - vale, seda võib saada kätte $? muutuja väärtusena. Operaatorid ----------- exit N - väljuda skriptist exit koodiga N if test expression then ... fi while test expression until test experssion do do ... ... done done break - kasutage see operaator et väljuda do-done tsükklist continue - kasutage see operaator et järgmisel iteratsioonil jätkata (use this operator to resume next iteration). for vVar in 1 2 4 8 do echo $vVar done Märkus 1: Kasutage for vVar in *; do ... ;done et itereerida failide nimedel jooksvas kaustas Märkus 2: Kasutage seq utiliidi nimekirjade genereerimiseks seq 5 # (stop) 1 2 3 4 5 seq 3 5 # (start stop) 3 4 5 seq 3 2 7 # (start step stop) 3 5 7 Märkus 3: Kasutage ; separaatori kui tahate kirjeldada mitu operaatorit ühes reas Näide. for vVar in Alpha Beta Gamma; do echo $vVar done Märkus 4: Toome näide ümberlülitamis operaatori süntaksi demonstreerimiseks: case $vVar in "$condition1" ) command... ;; "$condition2" ) command... ;; esac Näide. #!/bin/bash case $1 [a-z] ) echo "väiksed tähed";; [A-Z] ) echo "SUURED TÄHED";; [0-9] ) echo "Numbrid";; * ) echo "Teised sümbolid";; esac # case lubab sümbolite diapasooni [kandilistes sulgudes]. 6. Nähtavus ning kapseldamine - Kirjutage iga funktsioon eraldi faili. - Juhul kui ainult skript nimega ascript kasutab foo funktsiooni, ascript_foo soovitatakse funktsiooni failinimeks. - Teistel juhtudel nimi anamespace_foo sobib funktsioonide jaoks, mida kasutatakse rohkem kui ühes skriptis. 7. Kuidas sisestada andmeid - käsureast (from command prompt) % read a # nüüd võite sisestada väärtuse alles loodud a muutuja # jaoks. % echo $a % echo # oodake klahvi vajutamist. - skripti algtekstist. cat > /etc/resolv.conf < - exec (failist) #!/bin/sh group=pa05b exec < pa05b_people while read user pass surename name do useradd $user -g 1009 -c $surename"_"$name echo $user":"$pass | chpasswd mkdir /home/$user/public_html chown $user:$group /home/$user chown $user:$group /home/$user/public_html chmod 755 /home/$user chmod 755 /home/$user/public_html cp index.php /home/$user/public_html/ chown $user:$group /home/$user/public_html/index.php done Tekst- ja binaarfailid. Kompileerimine. --------------------------------------- Iga arvuti täidab käske. mis on inimesele halvasti arusaadavad. Kui iga käsule panna vastavusse järgmine rida sõnadega: märgend: käsu mnemokood käsu argumendid muutuja nimi: andmed andmete väärtused siis selle asemel, et rääkida programmeerimisest masinakoodides, räägitakse programmeerimisest assembleri keeles - programmidest mid on salvestatud algkoodide kujul. Selliste failide tõlkimine masinkoodi võib olla teostatud automaatselt translaator - programmi (assembleri) abil. Assembleri algtekstid sõltuvad protsessori tüübist - võib rääkida masinsõltuvast keelest. Paljude programmeerijate unistuseks on programmide koostamine masinsõltmatus keeles. Kui selline tekst võib olla automaatselt tõlgitud vastava masina assembleriks ridade kaupa - räägitakse interpreteeriva tüübi keelest (Basic), kui minimaalseks tõlgitavaks ühikuks on loogiline plokk - kompileerivatest keeltest - ( {}, C ). Programmvarustuse komplekt, vajalik tõlkimiseks masinsõltmatukeelest masinkoodide binaarfailideks - compiler, linker ja loader tavaliselt kuuluvad operatsioonsüsteemi komplekti, või on sinna kergesti installitavad. OSA II. ------- Ja mida kõige sellega teha või praktiline Unix-i kasutamine. ------------------------------------------------------------ Täisväärilise graafilise alamsüsteemi ehitamine. ------------------------------------------------ 1. Laeme alla minimaalse Ubuntu süsteemi, leafs: grub-pc logrotate linux-virtual ubuntu-minimal 2. Ehitame Gnome ja Graafikf juurde apt-get install ubuntu-desktop # 482 MB of archives, 1095 packages 3. startx 800x600. Järgmisel laadimisel teie kohe saate normaalne Ubuntu jaoks graafiline kasutaja autentifitseerimise ekraan järgmise vea sõnumiga could not update ICEauthority file /home/virtu/.ICEauthority Teie võite seda ignoreerida või jääb soovida õnne interneti foorumitel selle kõrvaldamisel - "Welcome to Linux". Kasutajate nimekirjade registreerimine / kustutamine UNIX süsteemis. -------------------------------------------------------------------- #!/bin/sh # fedora script group=pa05b groupadd $group; exec < pa05b_people while read user pass surename name do useradd $user -g `cat /etc/group | tail -n 1 | sed s'/:/ /'g | awk '{print $3}'` -c $surename"_"$name echo $user":"$pass | chpasswd mkdir /home/$user/public_html chown $user:$group /home/$user chown $user:$group /home/$user/public_html chmod 755 /home/$user chmod 755 /home/$user/public_html cp index.php /home/$user/public_html/ chown $user:$group /home/$user/public_html/index.php done ----------------------------------------------------------------------- 1. Leia read, mis sisaldavad sõna 'bird' [kasutaja@darkstar ~]$ cat the_beatles.txt | grep -i bird /The Beatles/1966 - Revolver/09 - And Your Bird Can Sing /The Beatles/1965 - Rubber Soul/02 - Norwegian Wood (The Bird Has Flown) /The Beatles/1968 - The Beatles Disc 1/11 - Blackbird -------------------------------------------------------- 2. Leia read, mis sisaldavad sõna 'help' laulu nimetuses [kasutaja@darkstar ~]$ cat the_beatles.txt | sed s"/\/.*\/.....//" | grep -v "^-" | grep -i help Help! With A Little Help From My Friends -------------------------------------------------------- 3. Trüki albumite nimekirja [kasutaja@darkstar ~]$ cat the_beatles.txt | sed s"/\/The Beatles\/.......//" | grep -v "/" A Hard Day's Night Abbey Road Beatles For Sale Help! Let It Be Magical Mystery Tour Past Masters Disc 1 Past Masters Disc 2 Please Please Me Revolver Rubber Soul Sgt. Peppers Lonely Hearts Club Band The Beatles Disc 1 The Beatles Disc 2 With the Beatles Yellow Submarine -------------------------------------------------------- 4. Trüki albumite nimed, mis tulid välja peale 1965, kuid enne 1970 aastat. [kasutaja@darkstar ~]$ cat the_beatles.txt | sed s"/\/The Beatles\///" | grep -v "/" | grep "196[6789]" 1969 - Abbey Road 1967 - Magical Mystery Tour 1966 - Revolver 1967 - Sgt. Peppers Lonely Hearts Club Band 1968 - The Beatles Disc 1 1968 - The Beatles Disc 2 1969 - Yellow Submarine -------------------------------------------------------- 5. Trüki laulu kõige lühema nimetusega [kasutaja@darkstar ~]$ cat the_beatles.txt | sed s"/\/.*\/.....//" | grep -v "^-" | awk '{ print length, $0; }' | sort -n | head -n 1 4 Boys -------------------------------------------------------- 6. Trüki laulu kõige pikema nimetusega [kasutaja@darkstar ~]$ cat the_beatles.txt | sed s"/\/.*\/.....//" | grep -v "^-" | awk '{ print length, $0; }' | sort -n | tail -n 1 4 Boys -------------------------------------------------------- Appenix A. "The_Beatles.txt" algkood. Eemalda @ rea algusest. @/The Beatles/ @/The Beatles/1964 - A Hard Day's Night @/The Beatles/1964 - A Hard Day's Night/01 - A Hard Day's Night @/The Beatles/1964 - A Hard Day's Night/02 - I Should Have Known Better @/The Beatles/1964 - A Hard Day's Night/03 - If I Fell @/The Beatles/1964 - A Hard Day's Night/04 - I'm Happy Just To Dance With You @/The Beatles/1964 - A Hard Day's Night/05 - And I Love Her @/The Beatles/1964 - A Hard Day's Night/06 - Tell Me Why @/The Beatles/1964 - A Hard Day's Night/07 - Can't Buy Me Love @/The Beatles/1964 - A Hard Day's Night/08 - Any Time At All @/The Beatles/1964 - A Hard Day's Night/09 - I'll Cry Instead @/The Beatles/1964 - A Hard Day's Night/10 - Things We Said Today @/The Beatles/1964 - A Hard Day's Night/11 - When I Get Home @/The Beatles/1964 - A Hard Day's Night/12 - You Can't Do That @/The Beatles/1964 - A Hard Day's Night/13 - I'll Be Back @/The Beatles/1969 - Abbey Road @/The Beatles/1969 - Abbey Road/01 - Come Together @/The Beatles/1969 - Abbey Road/02 - Something @/The Beatles/1969 - Abbey Road/03 - Maxwell's Silver Hammer @/The Beatles/1969 - Abbey Road/04 - Oh! Darling @/The Beatles/1969 - Abbey Road/05 - Octopus's Garden @/The Beatles/1969 - Abbey Road/06 - I Want You (She's So Heavy) @/The Beatles/1969 - Abbey Road/07 - Here Comes The Sun @/The Beatles/1969 - Abbey Road/08 - Because @/The Beatles/1969 - Abbey Road/09 - You Never Give Me Your Money @/The Beatles/1969 - Abbey Road/10 - Sun King @/The Beatles/1969 - Abbey Road/11 - Mean Mr. Mustard @/The Beatles/1969 - Abbey Road/12 - Polythene Pam @/The Beatles/1969 - Abbey Road/13 - She Came In Through The Bathroom Window @/The Beatles/1969 - Abbey Road/14 - Golden Slumbers @/The Beatles/1969 - Abbey Road/15 - Carry That Weight @/The Beatles/1969 - Abbey Road/16 - The End @/The Beatles/1969 - Abbey Road/17 - Her Majesty @/The Beatles/1964 - Beatles For Sale @/The Beatles/1964 - Beatles For Sale/01 - No Reply @/The Beatles/1964 - Beatles For Sale/02 - I'm A Loser @/The Beatles/1964 - Beatles For Sale/03 - Baby's In Black @/The Beatles/1964 - Beatles For Sale/04 - Rock and Roll Music @/The Beatles/1964 - Beatles For Sale/05 - I'll Follow the Sun @/The Beatles/1964 - Beatles For Sale/06 - Mr. Moonlight @/The Beatles/1964 - Beatles For Sale/07 - Kansas City,Hey-Hey-Hey-Hey @/The Beatles/1964 - Beatles For Sale/08 - Eight Days A Week @/The Beatles/1964 - Beatles For Sale/09 - Words of Love @/The Beatles/1964 - Beatles For Sale/10 - Honey Don't @/The Beatles/1964 - Beatles For Sale/11 - Every Little Thing @/The Beatles/1964 - Beatles For Sale/12 - I Don't Want to Spoil the Party @/The Beatles/1964 - Beatles For Sale/13 - What You're Doing @/The Beatles/1964 - Beatles For Sale/14 - Everybody's Trying To Be My Baby @/The Beatles/1965 - Help! @/The Beatles/1965 - Help!/01 - Help! @/The Beatles/1965 - Help!/02 - The Night Before @/The Beatles/1965 - Help!/03 - You've Got to Hide Your Love Away @/The Beatles/1965 - Help!/04 - I Need You @/The Beatles/1965 - Help!/05 - Another Girl @/The Beatles/1965 - Help!/06 - You're Going to Lose That Girl @/The Beatles/1965 - Help!/07 - Ticket To Ride @/The Beatles/1965 - Help!/08 - Act Naturally @/The Beatles/1965 - Help!/09 - It's Only Love @/The Beatles/1965 - Help!/10 - You Like Me To Much @/The Beatles/1965 - Help!/11 - Tell Me What You See @/The Beatles/1965 - Help!/12 - I've Seen That Face @/The Beatles/1965 - Help!/13 - Yesterday @/The Beatles/1965 - Help!/14 - Dizzy Miss Lizzy @/The Beatles/1970 - Let It Be @/The Beatles/1970 - Let It Be/01 - Two Of Us @/The Beatles/1970 - Let It Be/02 - Dig A Pony @/The Beatles/1970 - Let It Be/03 - Across the Universe @/The Beatles/1970 - Let It Be/04 - I Me Mine @/The Beatles/1970 - Let It Be/05 - Dig It @/The Beatles/1970 - Let It Be/06 - Let It Be @/The Beatles/1970 - Let It Be/07 - Maggie Mae @/The Beatles/1970 - Let It Be/08 - I've Got A Feeling @/The Beatles/1970 - Let It Be/09 - One After 909 @/The Beatles/1970 - Let It Be/10 - The Long and Winding Road @/The Beatles/1970 - Let It Be/11 - For Your Blue @/The Beatles/1970 - Let It Be/12 - Get Back @/The Beatles/1967 - Magical Mystery Tour @/The Beatles/1967 - Magical Mystery Tour/01 - Magical Mystery Tour @/The Beatles/1967 - Magical Mystery Tour/02 - The Fool On The Hill @/The Beatles/1967 - Magical Mystery Tour/03 - Flying @/The Beatles/1967 - Magical Mystery Tour/04 - Blue Jay Way @/The Beatles/1967 - Magical Mystery Tour/05 - Your Mother Should Know @/The Beatles/1967 - Magical Mystery Tour/06 - I Am The Walrus @/The Beatles/1967 - Magical Mystery Tour/07 - Hello Goodbye @/The Beatles/1967 - Magical Mystery Tour/08 - Strawberry Fields Forever @/The Beatles/1967 - Magical Mystery Tour/09 - Penny Lane @/The Beatles/1967 - Magical Mystery Tour/10 - Baby You're A Rich Man @/The Beatles/1967 - Magical Mystery Tour/11 - All You Need Is Love @/The Beatles/1988 - Past Masters Disc 1 @/The Beatles/1988 - Past Masters Disc 1/01 - Love Me Do (Original Single Version) @/The Beatles/1988 - Past Masters Disc 1/02 - From Me To You @/The Beatles/1988 - Past Masters Disc 1/03 - Thank You Girl @/The Beatles/1988 - Past Masters Disc 1/04 - She Loves You @/The Beatles/1988 - Past Masters Disc 1/05 - I'll Get You @/The Beatles/1988 - Past Masters Disc 1/06 - I Want To Hold Your Hand @/The Beatles/1988 - Past Masters Disc 1/07 - This Boy @/The Beatles/1988 - Past Masters Disc 1/08 - Komm, Gib Mir Deine Hand @/The Beatles/1988 - Past Masters Disc 1/09 - Sie Liebt Dich @/The Beatles/1988 - Past Masters Disc 1/10 - Long Tall Sally @/The Beatles/1988 - Past Masters Disc 1/11 - I Call Your Name @/The Beatles/1988 - Past Masters Disc 1/12 - Slow Down @/The Beatles/1988 - Past Masters Disc 1/13 - Matchbox @/The Beatles/1988 - Past Masters Disc 1/14 - I Feel Fine @/The Beatles/1988 - Past Masters Disc 1/15 - She's A Woman @/The Beatles/1988 - Past Masters Disc 1/16 - Bad Boy @/The Beatles/1988 - Past Masters Disc 1/17 - Yes It Is @/The Beatles/1988 - Past Masters Disc 1/18 - I'm Down @/The Beatles/1988 - Past Masters Disc 2 @/The Beatles/1988 - Past Masters Disc 2/01 - Day Tripper @/The Beatles/1988 - Past Masters Disc 2/02 - We Can Work It Out @/The Beatles/1988 - Past Masters Disc 2/03 - Paperback Writer @/The Beatles/1988 - Past Masters Disc 2/04 - Rain @/The Beatles/1988 - Past Masters Disc 2/05 - Lady Madonna @/The Beatles/1988 - Past Masters Disc 2/06 - The Inner Light @/The Beatles/1988 - Past Masters Disc 2/07 - Hey Jude @/The Beatles/1988 - Past Masters Disc 2/08 - Revolution @/The Beatles/1988 - Past Masters Disc 2/09 - Get back @/The Beatles/1988 - Past Masters Disc 2/10 - Don't Let Me Down @/The Beatles/1988 - Past Masters Disc 2/11 - The Ballad of John and Yoko @/The Beatles/1988 - Past Masters Disc 2/12 - Old Brown Shoe @/The Beatles/1988 - Past Masters Disc 2/13 - Across The Universe @/The Beatles/1988 - Past Masters Disc 2/14 - Let It Be @/The Beatles/1988 - Past Masters Disc 2/15 - You Know My Name (Look Up The Number) @/The Beatles/1963 - Please Please Me @/The Beatles/1963 - Please Please Me/01 - I Saw Her Standing There @/The Beatles/1963 - Please Please Me/02 - Misery @/The Beatles/1963 - Please Please Me/03 - Anna (Go to Him) @/The Beatles/1963 - Please Please Me/04 - Chains @/The Beatles/1963 - Please Please Me/05 - Boys @/The Beatles/1963 - Please Please Me/06 - Ask Me Why @/The Beatles/1963 - Please Please Me/07 - Please Please Me @/The Beatles/1963 - Please Please Me/08 - Love Me Do @/The Beatles/1963 - Please Please Me/09 - P.S. I Love You @/The Beatles/1963 - Please Please Me/10 - Baby It's You @/The Beatles/1963 - Please Please Me/11 - Do You Want To Know A Secret @/The Beatles/1963 - Please Please Me/12 - A Taste of Honey @/The Beatles/1963 - Please Please Me/13 - There's A Place @/The Beatles/1963 - Please Please Me/14 - Twist and Shout @/The Beatles/1966 - Revolver @/The Beatles/1966 - Revolver/01 - Taxman @/The Beatles/1966 - Revolver/02 - Eleanor Rigby @/The Beatles/1966 - Revolver/03 - I'm Only Sleeping @/The Beatles/1966 - Revolver/04 - Love You To @/The Beatles/1966 - Revolver/05 - Here, There and Everywhere @/The Beatles/1966 - Revolver/06 - Yellow Submarine @/The Beatles/1966 - Revolver/07 - She Said She Said @/The Beatles/1966 - Revolver/08 - Good Day Sunshine @/The Beatles/1966 - Revolver/09 - And Your Bird Can Sing @/The Beatles/1966 - Revolver/10 - For No One @/The Beatles/1966 - Revolver/11 - Doctor Robert @/The Beatles/1966 - Revolver/12 - I Want to Tell You @/The Beatles/1966 - Revolver/13 - Got To Get You Into My Life @/The Beatles/1966 - Revolver/14 - Tomorrow Never Knows @/The Beatles/1965 - Rubber Soul @/The Beatles/1965 - Rubber Soul/01 - Drive My Car @/The Beatles/1965 - Rubber Soul/02 - Norwegian Wood (The Bird Has Flown) @/The Beatles/1965 - Rubber Soul/03 - You Won't See Me @/The Beatles/1965 - Rubber Soul/04 - Nowhere Man @/The Beatles/1965 - Rubber Soul/05 - Think For Yourself @/The Beatles/1965 - Rubber Soul/06 - The Word @/The Beatles/1965 - Rubber Soul/07 - Michelle @/The Beatles/1965 - Rubber Soul/08 - What Goes On @/The Beatles/1965 - Rubber Soul/09 - Girl @/The Beatles/1965 - Rubber Soul/10 - I'm Looking Through You @/The Beatles/1965 - Rubber Soul/11 - In My Life @/The Beatles/1965 - Rubber Soul/12 - Wait @/The Beatles/1965 - Rubber Soul/13 - If I Needed Someone @/The Beatles/1965 - Rubber Soul/14 - Run For Your Life @/The Beatles/1967 - Sgt. Peppers Lonely Hearts Club Band @/The Beatles/1967 - Sgt. Peppers Lonely Hearts Club Band/01 - Sgt. Pepper's Lonely Hearts Club Band @/The Beatles/1967 - Sgt. Peppers Lonely Hearts Club Band/02 - With A Little Help From My Friends @/The Beatles/1967 - Sgt. Peppers Lonely Hearts Club Band/03 - Lucy In The Sky With Diamonds @/The Beatles/1967 - Sgt. Peppers Lonely Hearts Club Band/04 - Getting Better @/The Beatles/1967 - Sgt. Peppers Lonely Hearts Club Band/05 - Fixing A Hole @/The Beatles/1967 - Sgt. Peppers Lonely Hearts Club Band/06 - She's Leaving Home @/The Beatles/1967 - Sgt. Peppers Lonely Hearts Club Band/07 - Being For The Benefit of Mr. Kite! @/The Beatles/1967 - Sgt. Peppers Lonely Hearts Club Band/08 - Within You Without You @/The Beatles/1967 - Sgt. Peppers Lonely Hearts Club Band/09 - When I'm Sixty-Four @/The Beatles/1967 - Sgt. Peppers Lonely Hearts Club Band/10 - Lovely Rita @/The Beatles/1967 - Sgt. Peppers Lonely Hearts Club Band/11 - Good Morning Good Morning @/The Beatles/1967 - Sgt. Peppers Lonely Hearts Club Band/12 - Sgt. Pepper's Lonley Hearts Club Band (Reprise) @/The Beatles/1967 - Sgt. Peppers Lonely Hearts Club Band/13 - A Day In The Life @/The Beatles/1968 - The Beatles Disc 1 @/The Beatles/1968 - The Beatles Disc 1/01 - Back in the U.S.S.R. @/The Beatles/1968 - The Beatles Disc 1/02 - Dear Prudence @/The Beatles/1968 - The Beatles Disc 1/03 - Glass Onion @/The Beatles/1968 - The Beatles Disc 1/04 - Ob-La-Di, Ob-La-Da @/The Beatles/1968 - The Beatles Disc 1/05 - Wild Honey Pie @/The Beatles/1968 - The Beatles Disc 1/06 - The Continuing Story of Bungalow Bill @/The Beatles/1968 - The Beatles Disc 1/07 - While My Guitar Gently Weeps @/The Beatles/1968 - The Beatles Disc 1/08 - Happiness Is A Warm Gun @/The Beatles/1968 - The Beatles Disc 1/09 - Martha My Dear @/The Beatles/1968 - The Beatles Disc 1/10 - I'm So Tired @/The Beatles/1968 - The Beatles Disc 1/11 - Blackbird @/The Beatles/1968 - The Beatles Disc 1/12 - Piggies @/The Beatles/1968 - The Beatles Disc 1/13 - Rocky Raccoon @/The Beatles/1968 - The Beatles Disc 1/14 - Don't Pass Me By @/The Beatles/1968 - The Beatles Disc 1/15 - Why Don't We Do It In The Road @/The Beatles/1968 - The Beatles Disc 1/16 - I Will @/The Beatles/1968 - The Beatles Disc 1/17 - Julia @/The Beatles/1968 - The Beatles Disc 2 @/The Beatles/1968 - The Beatles Disc 2/01 - Birthday @/The Beatles/1968 - The Beatles Disc 2/02 - Yer Blues @/The Beatles/1968 - The Beatles Disc 2/03 - Mother Nautre's Son @/The Beatles/1968 - The Beatles Disc 2/04 - Everybody's Got Something to Hide Except Me and My Monkey @/The Beatles/1968 - The Beatles Disc 2/05 - Sexy Sadie @/The Beatles/1968 - The Beatles Disc 2/06 - Helter Skelter @/The Beatles/1968 - The Beatles Disc 2/07 - Long, Long, Long @/The Beatles/1968 - The Beatles Disc 2/08 - Revolution I @/The Beatles/1968 - The Beatles Disc 2/09 - Honey Pie @/The Beatles/1968 - The Beatles Disc 2/10 - Savoy Truffle @/The Beatles/1968 - The Beatles Disc 2/11 - Cry Baby Cry @/The Beatles/1968 - The Beatles Disc 2/12 - Revolution 9 @/The Beatles/1968 - The Beatles Disc 2/13 - Good Night @/The Beatles/1963 - With the Beatles @/The Beatles/1963 - With the Beatles/01 - It Won't Be Long @/The Beatles/1963 - With the Beatles/02 - All I've Got To Do @/The Beatles/1963 - With the Beatles/03 - All My Loving @/The Beatles/1963 - With the Beatles/04 - Don't Bother Me @/The Beatles/1963 - With the Beatles/05 - Little Me @/The Beatles/1963 - With the Beatles/06 - Till There Was You @/The Beatles/1963 - With the Beatles/07 - Please Mister Postman @/The Beatles/1963 - With the Beatles/08 - Roll Over Beethoven @/The Beatles/1963 - With the Beatles/09 - Hold Me Tight @/The Beatles/1963 - With the Beatles/10 - You Really Got A Hold On Me @/The Beatles/1963 - With the Beatles/11 - I Wanna Be Your Man @/The Beatles/1963 - With the Beatles/12 - Devil In Her Heart @/The Beatles/1963 - With the Beatles/13 - Not A Second Time @/The Beatles/1963 - With the Beatles/14 - Money (That's What I Want) @/The Beatles/1969 - Yellow Submarine @/The Beatles/1969 - Yellow Submarine/01 - Yellow Submarine @/The Beatles/1969 - Yellow Submarine/02 - Only A Northern Song @/The Beatles/1969 - Yellow Submarine/03 - All Together Now @/The Beatles/1969 - Yellow Submarine/04 - Hey Bulldog @/The Beatles/1969 - Yellow Submarine/05 - It's All To Much @/The Beatles/1969 - Yellow Submarine/06 - All You Need Is Love @/The Beatles/1969 - Yellow Submarine/07 - Pepperland @/The Beatles/1969 - Yellow Submarine/08 - Sea of Time @/The Beatles/1969 - Yellow Submarine/09 - Sea of Holes @/The Beatles/1969 - Yellow Submarine/10 - Sea of Monsters @/The Beatles/1969 - Yellow Submarine/11 - March of the Meanies @/The Beatles/1969 - Yellow Submarine/12 - Pepperland Laid Waste @/The Beatles/1969 - Yellow Submarine/13 - Yellow Submarine in Pepperland