Which: Difference between revisions
Line 5: | Line 5: | ||
=Sissejuhatus= | =Sissejuhatus= | ||
<code>which</code> on lihtne käsk, mis võimaldab leida käsu või skripti käivitusfaili täispika tee, kui see asub ühes süsteemi või kasutaja kaustadest, mis on kirjeldatud keskkonnamuutujas '''$PATH'''. Kui kasutaja sisestab Linuxi käsureale käsu, siis kontrollib Linuxi shell '''$PATH''' keskkonnamuutujas kirjeldatud kaustades käsule vastava käivitusfaili olemasolu. Kui sobivat käivitusfaili ei leita, siis kuvatakse veateade "'''command not found'''," käivitusfaili olemasolu korral see käivitatakse. Analoogselt Linuxi shellile toimib ka käsklus <code>which</code>, mis tagastab sisestatud käsu täispika tee, kui käivitusfail leitakse või tagastab veateate kui käsule on lisatud mitte-eksisteeriv optsioon. Programm ei kontrolli '''$PATH''' muutujas kirjeldatud kaustades asuvaid nimelinke. Programmil on kolm tagastusväärtust: | <code>which</code> on lihtne käsk, mis võimaldab leida käsu või skripti käivitusfaili täispika tee, kui see asub ühes süsteemi või kasutaja kaustadest, mis on kirjeldatud keskkonnamuutujas '''$PATH'''. Kui kasutaja sisestab Linuxi käsureale käsu, siis kontrollib Linuxi shell '''$PATH''' keskkonnamuutujas kirjeldatud kaustades käsule vastava käivitusfaili olemasolu. Kui sobivat käivitusfaili ei leita, siis kuvatakse veateade "'''command not found'''," käivitusfaili olemasolu korral see käivitatakse. Analoogselt Linuxi shellile toimib ka käsklus <code>which</code>, mis tagastab sisestatud käsu täispika tee, kui käivitusfail leitakse või tagastab veateate kui käsule on lisatud mitte-eksisteeriv optsioon. Programm ei kontrolli '''$PATH''' muutujas kirjeldatud kaustades asuvaid nimelinke. Programmil on kolm tagastusväärtust:[http://manpages.debian.org/cgi-bin/man.cgi?query=which&apropos=0&sektion=0&manpath=Debian+7.0+wheezy&format=html&locale=en [1]] | ||
* 0 - argumendile vastav käivitusfail leiti. | * 0 - argumendile vastav käivitusfail leiti. | ||
* 1 - argumendile vastavat käivitusfaili ei leitud. | * 1 - argumendile vastavat käivitusfaili ei leitud. |
Revision as of 14:14, 4 January 2015
Autor
Sven Rekkaro AK21
Sügis 2014
Sissejuhatus
which
on lihtne käsk, mis võimaldab leida käsu või skripti käivitusfaili täispika tee, kui see asub ühes süsteemi või kasutaja kaustadest, mis on kirjeldatud keskkonnamuutujas $PATH. Kui kasutaja sisestab Linuxi käsureale käsu, siis kontrollib Linuxi shell $PATH keskkonnamuutujas kirjeldatud kaustades käsule vastava käivitusfaili olemasolu. Kui sobivat käivitusfaili ei leita, siis kuvatakse veateade "command not found," käivitusfaili olemasolu korral see käivitatakse. Analoogselt Linuxi shellile toimib ka käsklus which
, mis tagastab sisestatud käsu täispika tee, kui käivitusfail leitakse või tagastab veateate kui käsule on lisatud mitte-eksisteeriv optsioon. Programm ei kontrolli $PATH muutujas kirjeldatud kaustades asuvaid nimelinke. Programmil on kolm tagastusväärtust:[1]
- 0 - argumendile vastav käivitusfail leiti.
- 1 - argumendile vastavat käivitusfaili ei leitud.
- 2 - käsk sisestati koos vigase võtmega.
Käsu süntaks
Käsk which
süntaks erineb mõningal määral, olenevalt kasutusel olevast Linux või BSD distributsioonist. Vähemate võimalustega on käsklus Debianil põhinevatel Linuxitel [1]. Keerukam on käsu süntaks teistel Unixil põhinevatel operatsioonisüsteemidel, näiteks Gentoo 2.6.23-gentoo-r8. [2]. Käsu kasutamiseks piisab tavakasutaja õigustest.
Süntaks Debianil põhinevatel Linuxitel
which [võtmed] argument
Käsu
which
argumendiks on programmi, skripti või käsu nimetus. Argumente võib which
käsu järele sisestada mitu.
Võtmed:
-a
Prindib välja kõikide argumentide kõik leitud täispikad teed. Ilma võtmeta "-a" prinditakse ainult esimene leitud väärtus1.
Süntaks teistel Unixi-laadsetel operatsioonisüsteemidel
which [võtmed] [--] argument
Erinevalt Debianist on kasutatavate võtmete hulk oluliselt suurem. Argumendiks on otsitava käsu, skripti või programminimi. Argumente võib olla mitu. Tulemus tagastatakse iga argumendi kohta eraldi.
--all, -a
Prindib ekraanile kõik sobivad käivitusfailid, mis $PATH muutujas kirjeldatud kataloogidest leiti, mitte ainult esimese.
--read-alias, -i
Loeb aliased standard sisendist (stdin), tagastab sobivad standard väljundile (stdout). See on kasulik kombinatsioon, kuis käsu which
jaoks on kasutusel alias. Näiteks: alias which=?alias | which -i?
--skip-alias
Ignoreerib võtit: `--read-alias
, kui see peaks olema sisestatud. Kasulik kui otsitakse algseid käivitusfaile ja samal ajal on aliases või funktsioonis kasutusel võti --read-alias
.
--read-functions
Loeb shelli funktsiooni definitsiooni standard sisendist (stdin), väljastab sobivad vasted standard väljundil (stdout). See on kasulik kombinatsioon, kui kasutatakse shelli funktsiooni which
käsu enda jaoks. Näiteks: which() { declare -f | which --read-functions $@ }
export -f which
--skip-functions
Ignoreerib valikud --read-functions
, kui see peaks olemas sisestatud. Kasulik, kui otsitakse konkreetselt normaalseid binaarfaile, samal ajal, kui on aktiivne read-functions?
optsioon which funktsiooni või aliase seadistuses.
--skip-dot
Käsk ignoreerib $PATH keskkonnamuutujas kirjeldatud punktiga algavaid kaustu.
--skip-tilde
Käsk ignoreerib $PATH keskkonnamuutujas kirjeldatud kaustu, mis alavad tildega ja binaarfaile, mis asuvad HOME kataloogis.
--show-dot
Kui kaust $PATH muutujas algab punktiga ja otsitav käivitusfail asub antud kataloogis, siis väljastatakse ekraanile "./programminimi
," selle asemel, et kuvada faili täispikka teed.
--show-tilde
Väljastab tilde, kui otsingutulemus asub "HOME" kataloogis. Antud valikut ignoreeritakse, kui käsk on väljakutsutud juurkasutajana.
--tty-only
Peatab valikute protsessimise, kui need ei pärine tty terminalilt.
--version,-v,-V
Väljastab standardväljundile (stdout) versiooni informatsiooni ja seejärel väljub edukalt programmitööst.
--help
Väljastab standardväljundis kasutusinformatsiooni ja seejärel väljub edukalt programmitööst.2
Näited
Kuna olenevalt kasutusel olevast Unixi-laadsest operatsioonisüsteemist, toon eraldi välja näited nii Debiani (keerulisem versioon which
käsust) ja Gentoo (keerukam versioon)baasil.
Näited Debiani baasil
Ühe programmi käivitusfaili otsimiseks:
which fdisk
Ekraanile tagastatakse tulemus:
/sbin/fdisk
Otsingut võib teostada ka mitme programmi kohta üheaegselt:
which fdisk ifconfig make mkdir
Tulemus ekraanil:
/sbin/fdisk /sbin/ifconfig /usr/bin/make /bin/mkdir
Kõikide asukohtade ekraanile kuvamiseks tuleb kasutada võtit -a
:
which -a less
Tulemus:
/usr/bin/less /bin/less
Näited Gentoo baasil
Ühe programmi otsimine:
which which
Tagastab tulemuse:
/usr/bin/which
Mitme programmi otsimine:
which man cp mkdir ifconfig
Tulemus:
/usr/bin/man /usr/bin/cp /usr/bin/mkdir /sbin/ifconfig
Sarnaselt Debianile toimib ka võti -a
või --all
, mis tagastab kõik positiivsed otsingutulemused:
which --all nano
Tagastab tulemuse:
/usr/bin/nano /bin/nano
Kui otsida programmi, mis ei asu keskkonnamuutujas $PATH kirjeldatud kaustades, siis tagastab käsklus erinevalt Debiani baasil süsteemidest veateate.
which minuprogramm
Tulemus:
which: no minuprogramm in (/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/i686-pc-linux-gnu/gcc-bin/4.1.1:/usr/i686-pc-linux-gnu/gcc-bin/4.1.2)