Test: Difference between revisions
No edit summary |
|||
(84 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
Gerli Kaunissaar AK41 2013 | Gerli Kaunissaar AK41 2013/2014 | ||
== Sissejuhatus == | == Sissejuhatus == | ||
Test on käsk, mis kontrollib | Antud referaat kirjeldab test käsu kasutamise erinevaid võimalusi, seda käsurea utiliiti kasutatakse UNIX-laadsetes operatsioonisüsteemides. Juhendi lugejal, et näidetest aru saada, peaks olema | ||
if-then-else lausete koostamise oskused. | |||
Test on käsk, mis kontrollib failide tüüpe ja võrdleb väärtusi. Ja sellega on võimalik testida failde, stringide, loogiliste avaldiste ja muutujate kindlaid tunnuseid. Peamine eesmärk on avastada IT süsteemist puudused, leida vead ja need parandada. | |||
== Süntaks == | == Süntaks == | ||
Line 15: | Line 17: | ||
== Kasutamine ja näited == | == Kasutamine ja näited == | ||
=== Failid ja stringid === | === Failid ja stringid === | ||
Sageli tuleb kontrollida | Sageli tuleb kontrollida failide, stringide ja programmide omadusi. Me saame uurida, kas fail eksisteerib ja mis õigused tal on (kustutamise,kirjutamise, lugemise õigus). Mis tüüpi fail on (fail, kataloog, programm või nimelink jne.)? Saame kontrollida faili suurust. Ning kas on võimalik faile käivitada ja neid omavahel võrrelda? Täpsemalt on test käsu kõik võtmed on ära kirjeldatud järgnevas loetelus. | ||
Järgnevaid funktsioone kasutatakse testide moodustamiseks. [http://en.wikipedia.org/wiki/Test_(Unix)] | |||
<pre> | <pre> | ||
-e FileName - FileName exists. | -e FileName - FileName exists. (Kontrollib faili olemasolu) | ||
</pre> | </pre> | ||
Kõik ülejäänud funktsioonid annavad tagasi true, kui objekt (fail või string) on olemas ja määratud tingimus on tõene. | Kõik ülejäänud funktsioonid annavad tagasi true, kui objekt (fail või string) on olemas ja määratud tingimus on tõene. [http://en.wikipedia.org/wiki/Test_(Unix)] | ||
<pre> | <pre> | ||
FUNKTSIOONID | |||
-b Filename - Returns a True exit value if the specified FileName exists | -b Filename - Returns a True exit value if the specified FileName exists (Tõsi, kui fail eksisteerib ja on blokkseade) | ||
and is a block special file. | and is a block special file. | ||
-c FileName - FileName is a character special file. | -c FileName - FileName is a character special file. (Tõsi, kui fail eksisteerib ja on kindla omadusega) | ||
-d FileName - FileName is a directory. | -d FileName - FileName is a directory. (Tõsi, kui fail eksisteerib ja see on kataloog) | ||
-f FileName - FileName is a regular file. | -f FileName - FileName is a regular file. (Tõsi, kui fail eksisteerib ja see on regulaarne fail) | ||
-g FileName - FileName's Set Group ID bit is set. | -g FileName - FileName's Set Group ID bit is set. (Tõsi, kui fail eksisteerib ja omab kindlat grupi ID) | ||
-h FileName - FileName is a symbolic link. | -h FileName - FileName is a symbolic link. (Tõsi, kui fail eksisteerib ja on nimelink) | ||
-k FileName - FileName's sticky bit is set. | -k FileName - FileName's sticky bit is set. | ||
-L FileName - FileName is a symbolic link. | -L FileName - FileName is a symbolic link. (Tõsi, kui fail eksisteerib ja see on nimelink) | ||
-p FileName - FileName is a named pipe (FIFO). | -p FileName - FileName is a named pipe (FIFO). (Tõsi, kui fail eksisteerib ja see on toru) | ||
-r FileName - FileName is readable by the current process. | -r FileName - FileName is readable by the current process. (Tõsi, kui fail eksisteerib ja seda saab lugeda) | ||
-s FileName - FileName has a size greater than 0. | -s FileName - FileName has a size greater than 0. (Tõsi, kui fail eksisteerib ja see on suurem kui 0) | ||
-t FileDescriptor - FileDescriptor is open and associated with a terminal. | -t FileDescriptor - FileDescriptor is open and associated with a terminal. (Avab terminali) | ||
-u FileName - FileName's Set User ID bit is set. | -u FileName - FileName's Set User ID bit is set. | ||
-w FileName - FileName's write flag is on. However, the FileName will | -w FileName - FileName's write flag is on. However, the FileName will (Tõsi, kui fail eksisteerib ja seda saab kirjutada) | ||
not be writable on a read-only file system even if test indicates true. | not be writable on a read-only file system even if test indicates true. | ||
-x FileName - FileName's execute flag is on. | -x FileName - FileName's execute flag is on. (Tõsi, kui fail eksisteerib ja seda saab käivitada) | ||
If the specified file exists and is a directory, the True exit value indicates | If the specified file exists and is a directory, the True exit value indicates | ||
that the current process has permission to change (chdir) into the directory. | that the current process has permission to change (chdir) into the directory. | ||
file1 -nt file2 - file1 is newer than file2. | file1 -nt file2 - file1 is newer than file2. (Fail1 on uuem kui fail2) | ||
file1 -ot file2 - file1 is older than file2. | file1 -ot file2 - file1 is older than file2. (Fail1 on vanem kui fail2) | ||
file1 -ef file2 - file1 is another name for file2. (symbolic link or hard link) | file1 -ef file2 - file1 is another name for file2. (symbolic link or hard link) (Fail1 on teise nimega kui fail2) | ||
STRINGI FUNKTSIOONID | STRINGI FUNKTSIOONID | ||
-n String1 - the length of the String1 variable is nonzero. | -n String1 - the length of the String1 variable is nonzero. (String1 pikkus ei ole null) | ||
-z String1 - the length of the String1 variable is 0 (zero). | -z String1 - the length of the String1 variable is 0 (zero). (String1 pikus on null) | ||
String1 = String2 - String1 and String2 variables are identical. | String1 = String2 - String1 and String2 variables are identical. (Stringid on võrdsed) | ||
String1 != String2 - String1 and String2 variables are not identical. | String1 != String2 - String1 and String2 variables are not identical. (Stringid ei ole võrdsed) | ||
</pre> | </pre> | ||
NÄIDE: Kui fail kass.txt eksisteerib, siis kustutatakse see | NÄIDE 1: Kui fail kass.txt eksisteerib, siis kustutatakse see ja ilmub ekraanile kirje "faili ei ole enam". | ||
<source lang="bash"> | |||
if test -e kass.txt | |||
then rm kass.txt | |||
echo "faili ei ole enam" | |||
fi | |||
</source> | |||
NÄIDE 2: Kui faili koer.txt ei eksisteeri või selle suurus on 0, siis tuleb teade ekraanile. Kui aga fail on olemas ja suurus on suurem nullist, siis ei ilmu ekraanile midagi. | |||
<source lang="bash"> | |||
if test ! -s koer.txt | |||
then | |||
echo "faili ei ole või on tühi" | |||
fi | |||
</source> | |||
NÄIDE 3: Kontrollime, kas saame käivitada programmi htop'i [https://wiki.itcollege.ee/index.php/Htop]. Antud juhul on tingimus tõene ja htop käivitub. | |||
<source lang="bash"> | |||
if test -x $1 | |||
then | |||
echo "seda programmi ei ole installitud" | |||
htop $1 | |||
fi | |||
</source> | |||
=== Loogilised avaldised ja numbri funktsioonid === | |||
Muutujaid on kõik stringid, mida on võimalik omavahel võrrelda. [http://www.codewalkers.com/c/a/Miscellaneous/The-Test-in-the-UNIX-Shell/2/] | |||
<pre> | <pre> | ||
if | numbrid | ||
Arg1 -eq Arg2 - True if Arg1 is equal (eq) to Arg2 (Tõsi kui arg1 ja arg2 on võrdsed) | |||
Arg1 -ne Arg2 - True if Arg1 is not equal (ne) to Arg2 (Tõsi kui arg1 ja arg2 ei ole võrdsed) | |||
Arg1 -lt Arg2 - True if Arg1 is less than (lt) Arg2 (Tõsi kui arg1 on väiksem kui arg2) | |||
Arg1 -le Arg2 - True if Arg1 is less than or equal (le) to Arg2 (Tõsi kui arg1 on väiksem või võrdne kui arg2) | |||
Arg1 -gt Arg2 - True if Arg1 is greater than (gt) Arg2 (Tõsi kui arg1 on suurem kui arg2) | |||
Arg1 -ge Arg2 - True if Arg1 is greater than or equal (ge) to Arg2 (Tõsi kui arg1 on suurem või võrdne kui arg2) | |||
</pre> | </pre> | ||
Neid operaatoreid on võimalik kombineerida üleval pool loetletud funktsioonidega. [http://www.codewalkers.com/c/a/Miscellaneous/The-Test-in-the-UNIX-Shell/2/] | |||
<pre> | <pre> | ||
! expression - True if the expression is false | ! expression - True if the expression is false (Avaldis ei ole tõsi) | ||
expression_1 -a expression_2 - True if both of the expressions are true; it's a logical and (-a) | expression_1 -a expression_2 - True if both of the expressions are true; it's a logical and (-a) (Mõlemad avaldised on tõesed) | ||
expression_1 -o expression_2 - True if either one of the expressions is true; it's a logical or (-o) | expression_1 -o expression_2 - True if either one of the expressions is true; it's a logical or (-o) (Üks või teine avaldis on tõene) | ||
</pre> | </pre> | ||
NÄIDE 4: Avaldis on tõene ja ekraanile ilmub teade "esimene argument ei ole 2" . Sest võti -ne eeldab, et argumendid ei oleks võrdsed. | |||
<source lang="bash"> | |||
if [ 3 -ne 2 ] | |||
then | |||
echo "esimene argument ei ole 2" | |||
fi | |||
</source> | |||
NÄIDE 5: Avaldis on tõene, sest võti -gt eeldab ,et arg1 on arg2 suurem. | |||
<source lang="bash"> | |||
if [ 3 -gt 2 ] | |||
then | |||
echo "on suurem" | |||
fi | |||
</source> | |||
NÄIDE 6: Kui fail siil.txt eksisteerib ja kasutajal on vastav õigus, siis kustutatakse see. Aga kui ei ole enam faili, tuleb vastav teade ekraanile "faili ei ole või ei ole õigus kustutada seda". | |||
<source lang="bash"> | |||
if [ -e siil.txt ] && [ -w siil.txt ] | |||
then | |||
rm siil.txt | |||
else | |||
echo "faili ei ole või ei ole õigus kustutada seda" | |||
fi | |||
</source> | |||
== Kokkuvõtteks == | |||
Testimine on väga oluline, mille käigus hinnatakse IT süsteemi kvaliteeti, test käsk annab selleks erinevaid võimalusi. Saab lihtsalt kontrollida ja võrrelda failide omadusi ja tüüpe. Referaadis on välja toodud võimalused, mida test käsuga on võimalik teha. Kõikides näidetes on kasutatud ainult if-then-else lauseid. | |||
== Kasutatud kirjandus == | == Kasutatud kirjandus == | ||
Latest revision as of 22:42, 9 January 2014
Gerli Kaunissaar AK41 2013/2014
Sissejuhatus
Antud referaat kirjeldab test käsu kasutamise erinevaid võimalusi, seda käsurea utiliiti kasutatakse UNIX-laadsetes operatsioonisüsteemides. Juhendi lugejal, et näidetest aru saada, peaks olema if-then-else lausete koostamise oskused. Test on käsk, mis kontrollib failide tüüpe ja võrdleb väärtusi. Ja sellega on võimalik testida failde, stringide, loogiliste avaldiste ja muutujate kindlaid tunnuseid. Peamine eesmärk on avastada IT süsteemist puudused, leida vead ja need parandada.
Süntaks
test EXPRESSION
või
[ EXPRESSION ]
Kui kasutada teist varjanti tuleb jälgida, et sulgude ja selle sees oleva avaldise vahel on alati tühik.
Kasutamine ja näited
Failid ja stringid
Sageli tuleb kontrollida failide, stringide ja programmide omadusi. Me saame uurida, kas fail eksisteerib ja mis õigused tal on (kustutamise,kirjutamise, lugemise õigus). Mis tüüpi fail on (fail, kataloog, programm või nimelink jne.)? Saame kontrollida faili suurust. Ning kas on võimalik faile käivitada ja neid omavahel võrrelda? Täpsemalt on test käsu kõik võtmed on ära kirjeldatud järgnevas loetelus.
Järgnevaid funktsioone kasutatakse testide moodustamiseks. [1]
-e FileName - FileName exists. (Kontrollib faili olemasolu)
Kõik ülejäänud funktsioonid annavad tagasi true, kui objekt (fail või string) on olemas ja määratud tingimus on tõene. [2]
FUNKTSIOONID -b Filename - Returns a True exit value if the specified FileName exists (Tõsi, kui fail eksisteerib ja on blokkseade) and is a block special file. -c FileName - FileName is a character special file. (Tõsi, kui fail eksisteerib ja on kindla omadusega) -d FileName - FileName is a directory. (Tõsi, kui fail eksisteerib ja see on kataloog) -f FileName - FileName is a regular file. (Tõsi, kui fail eksisteerib ja see on regulaarne fail) -g FileName - FileName's Set Group ID bit is set. (Tõsi, kui fail eksisteerib ja omab kindlat grupi ID) -h FileName - FileName is a symbolic link. (Tõsi, kui fail eksisteerib ja on nimelink) -k FileName - FileName's sticky bit is set. -L FileName - FileName is a symbolic link. (Tõsi, kui fail eksisteerib ja see on nimelink) -p FileName - FileName is a named pipe (FIFO). (Tõsi, kui fail eksisteerib ja see on toru) -r FileName - FileName is readable by the current process. (Tõsi, kui fail eksisteerib ja seda saab lugeda) -s FileName - FileName has a size greater than 0. (Tõsi, kui fail eksisteerib ja see on suurem kui 0) -t FileDescriptor - FileDescriptor is open and associated with a terminal. (Avab terminali) -u FileName - FileName's Set User ID bit is set. -w FileName - FileName's write flag is on. However, the FileName will (Tõsi, kui fail eksisteerib ja seda saab kirjutada) not be writable on a read-only file system even if test indicates true. -x FileName - FileName's execute flag is on. (Tõsi, kui fail eksisteerib ja seda saab käivitada) If the specified file exists and is a directory, the True exit value indicates that the current process has permission to change (chdir) into the directory. file1 -nt file2 - file1 is newer than file2. (Fail1 on uuem kui fail2) file1 -ot file2 - file1 is older than file2. (Fail1 on vanem kui fail2) file1 -ef file2 - file1 is another name for file2. (symbolic link or hard link) (Fail1 on teise nimega kui fail2) STRINGI FUNKTSIOONID -n String1 - the length of the String1 variable is nonzero. (String1 pikkus ei ole null) -z String1 - the length of the String1 variable is 0 (zero). (String1 pikus on null) String1 = String2 - String1 and String2 variables are identical. (Stringid on võrdsed) String1 != String2 - String1 and String2 variables are not identical. (Stringid ei ole võrdsed)
NÄIDE 1: Kui fail kass.txt eksisteerib, siis kustutatakse see ja ilmub ekraanile kirje "faili ei ole enam".
if test -e kass.txt
then rm kass.txt
echo "faili ei ole enam"
fi
NÄIDE 2: Kui faili koer.txt ei eksisteeri või selle suurus on 0, siis tuleb teade ekraanile. Kui aga fail on olemas ja suurus on suurem nullist, siis ei ilmu ekraanile midagi.
if test ! -s koer.txt
then
echo "faili ei ole või on tühi"
fi
NÄIDE 3: Kontrollime, kas saame käivitada programmi htop'i [3]. Antud juhul on tingimus tõene ja htop käivitub.
if test -x $1
then
echo "seda programmi ei ole installitud"
htop $1
fi
Loogilised avaldised ja numbri funktsioonid
Muutujaid on kõik stringid, mida on võimalik omavahel võrrelda. [4]
numbrid Arg1 -eq Arg2 - True if Arg1 is equal (eq) to Arg2 (Tõsi kui arg1 ja arg2 on võrdsed) Arg1 -ne Arg2 - True if Arg1 is not equal (ne) to Arg2 (Tõsi kui arg1 ja arg2 ei ole võrdsed) Arg1 -lt Arg2 - True if Arg1 is less than (lt) Arg2 (Tõsi kui arg1 on väiksem kui arg2) Arg1 -le Arg2 - True if Arg1 is less than or equal (le) to Arg2 (Tõsi kui arg1 on väiksem või võrdne kui arg2) Arg1 -gt Arg2 - True if Arg1 is greater than (gt) Arg2 (Tõsi kui arg1 on suurem kui arg2) Arg1 -ge Arg2 - True if Arg1 is greater than or equal (ge) to Arg2 (Tõsi kui arg1 on suurem või võrdne kui arg2)
Neid operaatoreid on võimalik kombineerida üleval pool loetletud funktsioonidega. [5]
! expression - True if the expression is false (Avaldis ei ole tõsi) expression_1 -a expression_2 - True if both of the expressions are true; it's a logical and (-a) (Mõlemad avaldised on tõesed) expression_1 -o expression_2 - True if either one of the expressions is true; it's a logical or (-o) (Üks või teine avaldis on tõene)
NÄIDE 4: Avaldis on tõene ja ekraanile ilmub teade "esimene argument ei ole 2" . Sest võti -ne eeldab, et argumendid ei oleks võrdsed.
if [ 3 -ne 2 ]
then
echo "esimene argument ei ole 2"
fi
NÄIDE 5: Avaldis on tõene, sest võti -gt eeldab ,et arg1 on arg2 suurem.
if [ 3 -gt 2 ]
then
echo "on suurem"
fi
NÄIDE 6: Kui fail siil.txt eksisteerib ja kasutajal on vastav õigus, siis kustutatakse see. Aga kui ei ole enam faili, tuleb vastav teade ekraanile "faili ei ole või ei ole õigus kustutada seda".
if [ -e siil.txt ] && [ -w siil.txt ]
then
rm siil.txt
else
echo "faili ei ole või ei ole õigus kustutada seda"
fi
Kokkuvõtteks
Testimine on väga oluline, mille käigus hinnatakse IT süsteemi kvaliteeti, test käsk annab selleks erinevaid võimalusi. Saab lihtsalt kontrollida ja võrrelda failide omadusi ja tüüpe. Referaadis on välja toodud võimalused, mida test käsuga on võimalik teha. Kõikides näidetes on kasutatud ainult if-then-else lauseid.
Kasutatud kirjandus
http://www.codewalkers.com/c/a/Miscellaneous/The-Test-in-the-UNIX-Shell/
http://unixhelp.ed.ac.uk/CGI/man-cgi?test
http://en.wikipedia.org/wiki/Test_(Unix)