Test (Unix)

codice_1 je program nachádzajúci sa v Unixových systémoch. Slúži na vyhodnotenie výrazu, ktorý je v danom formáte odovzdaný ako argument na príkazovom riadku. Často sa používa pri vyhodnocovaní podmienok v shelloch (napr. bash). Pomocou tohto príkazu možno overovať vlastnosti súborov alebo textových reťazcov.
Synonymom tohto príkazu je codice_2 (počiatočná hranatá zátvorka), ktorá ale vyžaduje ukončenie pomocou codice_3 (koncovú hranatú zátvorku). Pri skriptovaní v unixových shelloch sa namiesto codice_4 viac používa ekvivalentný variant , ktorý sa viac podobá programátorskému zápisu.
Opis.
Príkaz codice_1 v Unixe vyhodnocuje parameter codice_6. V novších implementáciach shellu je priamo zabudovaným príkazom, ale stále existujú i externé verzie. V druhej podobe tohto príkazu musia byť (hranaté zátvorky) obklopené medzerami (pretože codice_2 je program a shelly kompatibilné s POSIXom vyžadujú medzeru medzi názvom programu a jeho argumentami). V prípade C shellu je nutné testovať názvy súborov. Substitúcia v názvoch súborov (glob) spôsobí ukončenie shellového skriptu.
Príkaz codice_1 by sa nemal zamieňať za codice_9, ktorý sa objavil v [[Korn shell|ksh88]]. codice_9 nie je príkaz, ale súčasťou syntaxe ksh88 a neaplikuje substitúcie v názvoch súborov vo výrazoch s globom.
Verziu codice_1 prítomnú v [[GNU]] [[coreutils]] napísali Kevin Braunsdorf a Matthew Bradburn. Tento príkaz je prítomný ako samostatný balík pre [[Microsoft Windows]] ako súčasť kolekcie [[UnxUtils]] [[Natívny (počítač)|natívnych]] [[Win32]] portov bežných GNU Unix-like [[Utilita (informatika)|utilít]]. Príkaz codice_1 bol takisto portnutý pre operačný systém [[IBM i]].
Syntax.
Príkaz codice_1 sa používa jedným z nasledovných spôsobov:
 test "vyraz"
 [ "vyraz" ]
 [[ "vyraz" ]]
Prepínače.
Prepínače, s ktorými je možné volať príkaz codice_1:
 -e NazovSuboru – vráti hodnotu 0 (pravda) ak súbor NazovSuboru existuje
Ďalšie prepínače potom rozširujú funkcionalitu prepínača codice_15 v zmysle, že vracajú hodnotu 0 (pravda), ak súbor existuje a zároveň spĺňa niektoré ďalšie kritérium:
 -b NazovSuboru – NazovSuboru je blokový špeciálny súbor
 -c NazovSuboru – NazovSuboru je znakový špeciálny súbor
 -d NazovSuboru – NazovSuboru je [[adresár (informatika)|adresár]] 
 -f NazovSuboru – NazovSuboru je bežný súbor
 -g NazovSuboru – NazovSuboru má nastavený "Group ID" príznak
 -h NazovSuboru – NazovSuboru je [[symbolický odkaz]]
 -k NazovSuboru – NazovSuboru má nastavený "[[sticky bit]]" príznak
 -L NazovSuboru – NazovSuboru je symbolický odkaz
 -p NazovSuboru – NazovSuboru je pomenované [[zreťazenie]] (named pipe, FIFO)
 -r NazovSuboru – NazovSuboru je čitateľný aktuálnym procesom
 -s NazovSuboru – NazovSuboru má nenulovú veľkosť
 -t DeskriptorSuboru – DeskriptorSuboru je otvorený a asociovaný s terminálom
 -u NazovSuboru – NazovSuboru má nastavený User ID príznak
 -w NazovSuboru – NazovSuboru je zapisovateľný aktuálnym procesom
 -x NazovSuboru – NazovSuboru má nastavený príznak spúšťateľného súboru
Tento zoznam nie je kompletný. 
Návratová hodnota.
Podľa toho, či program prebehol správne, vracia jednu z troch návratových hodnôt:
Príklad.
Na overenie toho, či súbor neexistuje alebo je prázdny, možno použiť nasledujúce príkazy:
 if test ! -s "$1"
 then
 echo $1 neexistuje alebo je prázdny.
 fi
Ak súbor, ktorý je špecifikovaný prvým pozičným parametrom shellového procesu, $1, neexistuje alebo je jeho veľkosť nulová, vypíše sa uvedená správa. Ak parameter $1 existuje a má nenulovú veľkosť, nezobrazí sa žiadna správa. V príkaze musí byť medzera medzi codice_21 a názvom súboru. 
Parameter $1 je v úvodzovkách, aby sa zaručilo, že codice_1 bude fungovať správne, i keď $1 je prázdny textový reťazec. Ak sa nepoužijú úvodzovky a $1 je prázdny textový reťazec, príkaz codice_1 zobrazí chybovú hlášku:
 test: argument expected.
Zdroje.
[[Kategória:Unixové príkazy]]