Tree

From EIK wiki

Sissejuhatus

Tree on käsklus (command), mis on kasutatav Unixi ja ka enamikes Unixi-laadsetes operatsioonisüsteemides. Tree on lisatud ja peaks töötama näiteks järgmistes operatsioonisüsteemides: Linux, FreeBSD, OS X, Solaris, HP/UX, Cygwin, HP Nonstop ja OS/2. Käskluse kasutamiseks peab olema installeeritud tree programm.

Linux/Unix operatsioonisüsteemid kasutavad kataloogisüsteemi, kus kataloog on kogum failidest. Seda võib käsitleda kui ühte kausta, mis sisaldab palju erinevaid faile. Kataloogidel on nimed mille järgi neid tuvastada ning neid säilitatakse puukujulises struktuuris. Tree käsklus ongi vajalik just failide lihtsaks järjekorda seadmiseks ja kataloogide struktureerimiseks. See käsklus koostab kataloogide sisust nimekirja puu-formaadis ehk nö kataloogide sisupuu, millest ka käskluse nimi tree (eesti keeles: puu). Käsklust on läbi aegade täiustanud väga paljud inimesed – ainuüksi nimeliselt on neid teada juba üle kolmekümne. Seega on käsklust vormitud ajapikku järjest paremaks ning kasulikumaks.

Paigaldamine

Käsk tree sisaldub oma originaal nimelises pakis, mis on samuti tree. Kui teil ei ole seda eelnevalt installitud, siis on selleks kaks võimalust:

apt-get update && apt-get install tree

või

aptitude update && aptitude install tree

Mis on tree command ja kuidas see toimib?

Tree käskluse kasutamisel kuvab see täieliku loendi kodulehe kataloogidest ja alamkataloogidest ning näitab kõiki peidetud ja avalikke (mitte-peidetud) faile/dokumente nendes. Teisisõnu on tree rekursiivne kataloogi nimekirja koostamise käsklus, mis valmistab süva alamkategooriatega nimekirja kõikidest failidest, mis on märgistatud.

Allolevad on näited sellest, milline üks käskluse koostatud loend välja näeb. Esimene ilma alamakaustadeta ja teine näide näitab puu-kujulist nimekirja mitmete alamkaustade ja näidete puhul.

Näide 1 (tree -L 1 käsklus):

.
|-- Boards
|-- Members
|-- Messages
|-- Settings.pl
|-- Sources
|-- Variables
|-- YaBB.cgi
|-- english.lng
|-- template.html
`-- template2.html

5 directories, 5 files 

Näide allikast: http://www.computerhope.com/unix/tree.htm#01

Näide 2:

Tree1.png


Tree ilma lisakäsklusteta

Ainult tree käsklus ilma täiendavate käsklusteta koostab nimekirja failidest kataloogis, kus käskluse andmise hetkel parasjagu asutakse. Kõikide leitud failide/kataloogide loendi koostamise lõpetamisel annab tree tehniliste andmetena teada ka kõikide loendis olevate failide ja/või kataloogide koguarvu. Seega kui käskluse andmise hetkel asutakse peakataloogis, siis saadakse üldarv ja nimekiri kõikidest failidest ja alamkataloogidest selles peakataloogis. Kui tree käsklus anda süsteemi kaustas saadakse vastu tuhandeid ja tuhandeid failikirjeid, kuid käskluse lõpule jõudes loend kõikidest failidest ja kataloogidest selles.

Tree lisavõimalused

Ka tree käsklus nagu enamus teisi omab mitmeid võimalusi vastavalt sellele, milliseid lisakäsklusi antakse. Kui lisaks antakse täiendavad käsklused kataloogide või loendis kaasatavate osade kohta, siis tree koostab nimekirja kõikidest failidest ja/või kataloogidest, mis käsklusega etteantud kõikides kataloogides leidub või vastavalt nende failide/kataloogide kohta, mida vaja. Lisaks on täiendavaid võimalusi koostatava nimekirja formaadi ja vormistuse osas.

Süntaks:

tree [-adfgilnopqrstuxACDFNS] [-L level [-R]] [-H baseHREF] [-T title] [-o filename] [--nolinks] [-P pattern] [-I pattern] [--inodes] [--device] [--noreport] [--dirsfirst] [--version] [--help] [directory ...]

Näiteks mõned enamkasutatavad võimalused tree võimalustest koos lisakäsklustega on:

Loendab kõik failid, sh peidetud failid:

tree -a

Loendab ainult kataloogid:

tree -d

Loendab koos faili nimedega ka suurused:

tree -s

Loendab värviliselt:

tree -C

Kena vormistus:

tree -A

Saadab nimekirja kõikidest failidest koos nende suurustega faili nimega „my_files“ (eesti keeles: minu failid). Kui kasutajal on näiteks mitutuhat faili, siis see meetod annab võimaluse mugavalt neid kõiki koos vaadata:

tree -s > my_files

Lisaks on võimalik lisakäsklustega koos teha järgmist:

annab iga faili juurde lingi selle auskohale:

tree -f

püsib kindlas failisüsteemis (nt leiab ainult –xdev failid:

tree -x

annab iga faili juurde selle kasutajanime või kirje UID# kui ei ole kasutajanime:

tree -u

annab iga faili juurde selle grupi nime või kirje GID# kui ei ole gruppi:

tree -g

annab iga faili juurde selle viimase muutmise kuupäeva:

tree -D

sorteerib väljundi tähestikulises järjekorras Z-A:

tree -r

sorteerib väljundi viimase muutmise kuupäeva järgi tähestikulise järjestuse asemel:

tree -t

annab pealkirjale ja H1 pealkirja formaadi reale HTML väljundi formaadi:

tree -T title

kõrvaldab hüperlingid HTML väljundi formaadis:

tree -nolinks

Eeltoodud loetelu on siiski ainult mõned näited kõikidest võimalustest, mis tree käsklusega võimalik teha on ning pikemat ja põhjalikumat loetelu saab näha näiteks siin: link


Alternatiivid käsklusele

On teada, et tree käsklus ei ole olemas kõikides Unixi-laadsetes operatsioonisüsteemides. Sellisel juhul on võimalik masinates, kuhu seda ei ole installeeritud, tree käsklust stimuleerida alternatiivsete käsklustega, mis on tavalisemad *nix masinate puhul nagu näiteks :

find . -type d
# or
ls -R | grep ':$' | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/   /' -e 's/-/|/' 
# or
ls -R | grep ':$' | sed -e 's/:$//' -e 's/[^\/]*\//|  /g' -e 's/|  \([^|]\)/`--\1/g'

Programmivead

Vaatamata tree programmi pidevale täiustamisele vabavara kasutajate poolt on teada hetkel mõned vead, mis käskluse kasutamisel esinevad. Näiteks ei kaasa tree tühju katalooge teatud käskluste korral (näiteks tree -P ja tree -I). Lisaks on teada, et tree prindib katalooge nii nagu ta neid kuvab ja ei suuda koguda informatsiooni failidest ja kataloogidest, mis prinditava kataloogi alla kuuluvad. Ilmselt on taolisi pisivigasid veelgi. See aga näitab lihtsalt, et pidev täiustamine on vajalik nagu iga programmi puhul.

Kasutatud kirjandus

http://mama.indstate.edu/users/ice/tree/

http://mama.indstate.edu/users/ice/tree/thanks.html

http://en.wikipedia.org/wiki/Tree_(Unix)

http://www.perpetualpc.net/srtd_tree.html

http://www.computerhope.com/unix/tree.htm#01

http://www.tldp.org/LDP/gs/node5.html

http://www.debian-administration.org/articles/606

Autor

Kimmo Lillipuu A21
valmis: 26.11.2012
muudetud: 03.01.2013