Ero sivun ”Komentotulkki” versioiden välillä

Siirry navigaatioon Siirry hakuun
2 096 merkkiä lisätty ,  5. syyskuuta 2021
p
(tarkennuksia)
 
(12 välissä olevaa versiota 6 käyttäjän tekeminä ei näytetä)
Rivi 1: Rivi 1:
Unix-tyyppisille järjestelmille on saatavilla laaja valikoima erilaisia komentotulkkeja. Ylivoimaisesti suosituin komentulkki on monipuolisesti muokattava ja tavallisimmat ominaisuudet tarjoava [[bash]], joka myös on oletuskomentotulkkina suurimmassa osassa [[jakelu]]ita.
'''Komentotulkki''' on ensisijainen Unixin käyttöliittymä. Mikäli käytössä on graafinen käyttöliittymä, komentotulkkia eli [[komentorivin perusteet|komentoriviä]] käytetään [[terminaaliemulaattori|pääteikkunassa]].


Monet järjestelmän [[asetustiedostot]] ovat itse asiassa komentotulkilla tulkittavia ''skriptejä'' (katso [[bash-skriptaus]]). Näiden ensimmäisellä rivillä kerrotaan yleensä millä tulkilla ne on tulkittava ja tulkiksi määritellään yleensä /bin/sh, jonka on oltava olemassa. Usein /bin/sh on jokin muu tulkki kuin aito [[sh]], mutta näin käynnistettynä ueimmat komentotulkit (ainakin ash, bash, dask, ksh ja zsh) yrittävät toimia yhteensopivasti aidon sh:n kanssa.
Unix-tyyppisille järjestelmille on saatavilla laaja valikoima erilaisia komentotulkkeja. Ylivoimaisesti suosituin komentulkki Linux-jakeluissa on monipuolisesti muokattava ja tavallisimmat ominaisuudet tarjoava [[bash]], joka myös on oletuskomentotulkkina suurimmassa osassa [[jakelu]]ita.
 
Monet järjestelmän [[asetustiedostot]] ovat itse asiassa komentotulkilla tulkittavia ''skriptejä'' (katso [[bash-skriptaus]]). Näiden ensimmäisellä rivillä kerrotaan yleensä millä tulkilla ne on tulkittava ja tulkiksi määritellään yleensä /bin/sh, jonka on oltava olemassa. Usein /bin/sh on jokin muu tulkki kuin aito [[sh]], mutta näin käynnistettynä useimmat komentotulkit (ainakin [[ash]], [[bash]], [[dash]], [[ksh]] ja [[zsh]]) yrittävät toimia yhteensopivasti aidon sh:n kanssa.


== Komentotulkin ominaisuuksia ==
== Komentotulkin ominaisuuksia ==
Rivi 7: Rivi 9:
* [[alias|Aliakset]], skriptit ja funktiot, joilla voi kirjoittaa usein tarvittavan toiminnallisuuden helposti ulottuville.  
* [[alias|Aliakset]], skriptit ja funktiot, joilla voi kirjoittaa usein tarvittavan toiminnallisuuden helposti ulottuville.  
* Komentohistoria: aikaisemmin annettuja komentoja voi selata ja niihin suorittaa hakuja. Komentohistorian koko voidaan määrittää, samoin kuin vaikkapa se, halutaanko identtisten komentojen tallentuvan monta kertaa peräkkäin komentohistoriaan.
* Komentohistoria: aikaisemmin annettuja komentoja voi selata ja niihin suorittaa hakuja. Komentohistorian koko voidaan määrittää, samoin kuin vaikkapa se, halutaanko identtisten komentojen tallentuvan monta kertaa peräkkäin komentohistoriaan.
* Sanatäydennys: TAB-näppäintä painamalla tulkki kirjoittaa loput tiedostonimestä, komennon nimestä tms. tai esittää mahdolliset (tai todennäköisimmät, joitakin valintoja rajataan joskus oletuksena pois) valinnat. Osa komentotulkeista tukee myös mm. tavallisimpien komentojen valitsinten täydennystä, väärin kirjoitetun täydennettävän merkkijonon "oikolukua", täydennyksen aloittamista myös merkkijonon loppupäästä sekä täydennysvaihtoehtojen esittämistä nuolinäppäimillä navigoitavassa valikossa.
* Sanatäydennys: {{näppäin|TAB}}-näppäintä painamalla tulkki kirjoittaa loput tiedostonimestä, komennon nimestä tms. tai esittää mahdolliset (tai todennäköisimmät, joitakin valintoja rajataan joskus oletuksena pois) valinnat. Osa komentotulkeista tukee myös mm. tavallisimpien komentojen valitsinten täydennystä, väärin kirjoitetun täydennettävän merkkijonon "oikolukua", täydennyksen aloittamista myös merkkijonon loppupäästä sekä täydennysvaihtoehtojen esittämistä nuolinäppäimillä navigoitavassa valikossa.
* Ehtolauseet ja muu logiikka (if, while yms.).
* Ehtolauseet ja muu logiikka (<code>if, while</code> yms.).
* Putkitus, syötteen ja tulosteen ohjaus.
* Putkitus, syötteen ja tulosteen ohjaus.
<!-- listaa pitäisi jatkaa -->
<!-- listaa pitäisi jatkaa -->
Rivi 15: Rivi 17:


== Komentotulkkeja ==
== Komentotulkkeja ==
*[[sh]] eli ''Bourne shell'' oli Unixin alkuperäinen komentotulkki ja sillä nimellä kutsutaan yleensä komentotulkkia [[skripti|skripteistä]], jollei kaivata minkään tietyn komentotulkin erityispiirteitä.
*[[Bourne Shell]] oli Unixin alkuperäinen komentotulkki
*[[ash]] tai sen pohjalta kehitetty [[dash]] on usein käytössä pelkistetymmissä ympäristöissä, kuten asennuksen, järjestelmän käynnistyksen tai virheenkorjauksen yhteydessä. Mm. [[Ubuntu]]ssa /bin/sh on [[symbolinen linkki|symlinkattu]] dashiin.
*[[ash]] tai sen pohjalta kehitetty [[dash]] on usein käytössä pelkistetymmissä ympäristöissä, kuten asennuksen, järjestelmän käynnistyksen tai virheenkorjauksen yhteydessä. Mm. [[Ubuntu]]ssa <tt>/bin/sh</tt> on [[symbolinen linkki|symlinkattu]] dashiin.
*[[bash]] on [[GNU]]-projektin kehittynyt sh-muunnos, Linux-maailman ylivoimaisesti käytetyin komentotulkki.
*[[bash]] on [[GNU]]-projektin komentotulkki, Linux-maailman ylivoimaisesti käytetyin komentotulkki.
* [[ksh]] – kehittynyt sh:n muunnos, etenkin skriptitulkin ominaisuuksia korostava komentotulkki<!--[[wikipedia:fi:POSIX|POSIX]]in standardikomentotulkki; mistä tämä väite? en löydä perusteita wikipedian ksh- tai posix-artikkeleistä enkä ksh:n kotisivulta-->, vapaa ksh:n korvaajaksi kehitetty komentotulkki on [[pdksh]].
* [[ksh]] – kehittynyt Bourne Shellin pohjalta kehitetty tulkki joka korostaa etenkin skriptitulkin ominaisuuksia. [[POSIX]]-syntaksi on kehitetty ksh:n pohjalta. Vapaa ksh:n korvaajaksi kehitetty komentotulkki on [[pdksh]].
*[[tcsh]], [[csh]]:n edelleenkehitetty versio oli pitkään interaktiivisessa käytössä edistyneempi kuin sh ja on siksi käyttäjien oletuskomentotulkkina monessa Unix-järjestelmässä. Toimintojen määrä on suurin piirtein sama kuin bashissa. Tcsh:n ja csh:n erityispiirteenä on [[C]]-ohjelmointikieltä jäljittelevä syntaksi, joka tulee esille erityisesti skriptauksessa.
*[[tcsh]], [[csh]]:n edelleenkehitetty versio oli pitkään interaktiivisessa käytössä edistyneempi kuin Bourne Shell ja on siksi käyttäjien oletuskomentotulkkina monessa UNIX-järjestelmässä. Toimintojen määrä on suurin piirtein sama kuin bashissa. Tcsh:n ja csh:n erityispiirteenä on [[C]]-ohjelmointikieltä jäljittelevä syntaksi, joka tulee esille erityisesti skriptauksessa.
*[[zsh]] on melko suosittu sh-johdannainen komentotulkki, joka tarjoaa laajaa toimintovalikoimaa sekä laajennettavuutta.
*[[zsh]] on melko suosittu POSIX-yhteensopiva komentotulkki, joka tarjoaa laajaa toimintovalikoimaa sekä laajennettavuutta.


Erikoisia, vähemmän tunnettuja komentotulkkeja on
Erikoisia, vähemmän tunnettuja komentotulkkeja on
* [[advsh]] – seikkailupeleistä inspiraationsa saanut komentotulkki
* [[advsh]] – seikkailupeleistä inspiraationsa saanut komentotulkki
* [[es]] – paranneltu versio rc-komentotulkista
* [[es]] – paranneltu versio rc-komentotulkista
* [[fish]] – uusi, aloittelijaystävällisyyteen keskittyvä, runsaasti ajonaikaista ohjeistusta sisältävä komentotulkki.
* [[fish]] – uusi, aloittelijaystävällisyyteen keskittyvä, runsaasti ajonaikaista ohjeistusta sisältävä komentotulkki. Fish ei ole kokonaan POSIX-yhteensopiva-komentotulkki, joten esim. skriptien toiminnallisuus voi kärsiä.
* [[psh]] – syntaksiltaan [[Perl]]iä jäljittelevä komentulkki
* [[psh]] – syntaksiltaan [[Perl]]iä jäljittelevä komentulkki
* [[rc]] – bashiin pohjautuva, mutta syntaksiltaan paranneltu komentulkki
* [[rc]] – bashiin pohjautuva, mutta syntaksiltaan paranneltu komentulkki


Käyttäjä voi vaihtaa kirjautuessa avattavaa komentotulkkia komennolla [[chsh]]. Vähintään root-tunnuksella kannattaa säilyttää jokin turvalliseksi ja toimivaksi todettu komentotulkki. Eri komentotulkkeja voi kokeilla tai käyttää väliaikaisesti antamalla niiden nimi tavallisena komentona.  
Käyttäjä voi vaihtaa kirjautuessa avattavaa komentotulkkia komennolla [[chsh]]. Vähintään root-tunnuksella kannattaa säilyttää jokin turvalliseksi ja toimivaksi todettu komentotulkki. Eri komentotulkkeja voi kokeilla tai käyttää väliaikaisesti antamalla niiden nimi tavallisena komentona.
 
== Komentotulkkien historiaa ==
 
Ennen Bourne Shelliä UNIX-maailmassa oli muun muassa Thompson Shell, sekä Mashley Shell. Steve Bournen Unix Version 7 -käyttöjärjestelmälle kirjoittamaa [[Bourne Shell]]iä pidetään kuitenkin ensimmäisenä modernina komentotulkkina.
 
Pian Bourne Shellin julkaisun jälkeen Bill Joy kritisoi Bourne Shellin heikkoa interaktiivisuutta ja kirjoitti C Shell (<tt>[[csh]]</tt>) -komentotulkin, joka nosti suosiotaan varsinkin interaktiivisessa käytössä. C Shell ei ollut kuitenkaan syntaksiltaan yhteensopiva ''de facto'' standardin asemaan nousseen Bourne Shellin kanssa, minkä seurauksena monilla oli tuohon aikaan tapana kirjoittaa skriptit Bourne Shellille ja käyttää C Shelliä interaktiivisessa käytössä.
 
David Korn kuitenkin korjasi tämän tilanteen kirjoittamalla Korn Shellin ([[ksh]]). Se perustui suoraan alkuperäiseen Bourne Shellin lähdekoodiin ja oli näin ollen täysin yhteensopiva Bourne Shellin syntaksin kanssa. Samalla <tt>ksh</tt> tarjosi <tt>csh</tt>:sta tuttuja interaktiivisia ominaisuuksia. Korn Shellin pohjalta laadittiin [[POSIX]]-syntaksi komentotulkeille. Tämä standardi määrittelee komentotulkin perustoiminnallisuuden, jonka mukaan sen tulee toimia.
 
[[GNU]]-projekti päätti kirjoittaa puhtaalta pöydältä uuden POSIX-yhteensopivan kometotulkin osaksi GNU-ohjelmakokoelmaa. Uuteen tulkkiin kopioitiin David Kornin ideat ja <tt>ksh</tt>:n ominaisuudet, sekä aiemmin mainetta niittäneen Bourne Shellin nimi. Näin syntyi Bourne Again Shell (<tt>[[bash]]</tt>), jolla nimestään huolimatta ei ole mitään tekemistä alkuperäisen Bourne Shellin kanssa.
 
2000-luvun alkuun asti <tt>ksh</tt> pysyi suljetun lähdekoodin ohjelmana, kunnes AT&T päätti julkaista <tt>ksh</tt>:n lähdekoodin. Oli kuitenkin liian myöhäistä, sillä <tt>bash</tt> oli saatu ujutettua GNU-projektin monopoliaseman myötä Linux-jakelupakettien oletuskomentotulkiksi.


[[Luokka:Käsitteet]]
[[Luokka:Käsitteet]]
[[Luokka:Komentotulkit]]
[[Luokka:Komentotulkit]]
3 173

muokkausta

Navigointivalikko