Ero sivun ”Väite” versioiden välillä

Siirry navigaatioon Siirry hakuun
pEi muokkausyhteenvetoa
p (artikkelin terminologia palautettu alkuperäiseen)
Rivi 1: Rivi 1:
'''Väite''', '''valitsin''', '''argumentti''' tai '''parametri''' on ohjelmalle [[pääte|päätteessä]] annettu lisätieto siitä, kuinka ohjelman tulisi pyöriä.
'''Valitsin''', '''vipu''', '''argumentti''', '''parametri''', '''lippu''' eli optio on [[komentorivi]]llä annettava ohjelman toimintaan vaikuttava lisäohje, joka yleensä kirjoitetaan ennen mahdollisten käsiteltävien tiedostojen nimiä. Tässä esitellään tavallisimpia käytäntöjä.


Ota huomioon, että kaikki ohjelmat eivät käytä samoja väitteitä samoihin tarkoituksiin, joten voit tahattomasti vahingoittaa järjestelmääsi yrittäessäsi käyttää tuntemiasi väitteitä.
== Perusteet ==
 
Unix-pohjaisten käyttöjärjestelmien, kuten Linux-jakeluitten kanssa, komennot annetaan tavallisimmin tyyliin
$ komento -a -b -c tiedosto ...
 
Valitsimet on myös mahdollista listata yhtenäisenä ryhminä.
$ komento -abc tiedosto ...


== Antaminen ==
== Antaminen ==
Kaikki ohjelmat eivät aina ota väitteitä.
Kaikki ohjelmat eivät aina ota valitsimia.
  $ true '''väite'''
  $ [[true]] '''valitsin'''
'''Paksulla''' merkitty teksti on väite. [[true]] ei välitä väitteistä, joita käyttäjä sille antaa, joten sen käyttäytyminen ei muutu.
'''Paksulla''' merkitty teksti on valitsin. [[true]] ei välitä valitsimista, joita käyttäjä sille antaa, joten sen käyttäytyminen ei muutu.


Jotkin ohjelmat eivät tarvitse väitteitä.
Jotkin ohjelmat eivät tarvitse valitsimia.
  $ cat
  $ [[cat]]
[[cat]] ottaa muutaman väitteen, jos se niitä saa, mutta se ei tarvitse niitä toimiakseen. [[GNU]]-versio cat:ista ottaa muun muassa tämän:
cat ottaa muutaman valitsimen, jos se niitä saa, mutta se ei tarvitse niitä toimiakseen. [[GNU]]-versio cat:ista ottaa muun muassa tämän:
  $ cat '''--version'''
  $ cat '''--version'''
Tämä tulostaa näytölle versiotiedot.
Tämä tulostaa näytölle versiotiedot.
  cat (GNU coreutils) 8.30
  cat (GNU coreutils) 9.1
  Copyright © 2018 Free Software Foundation, Inc.
  Copyright (C) 2022 Free Software Foundation, Inc.
  License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
  License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
  This is free software: you are free to change and redistribute it.
  This is free software: you are free to change and redistribute it.
Rivi 21: Rivi 27:
  Kirjoittaneet Torbjorn Granlund ja Richard M. Stallman.
  Kirjoittaneet Torbjorn Granlund ja Richard M. Stallman.


Jotkin ohjelmat vaativat väitteitä.
Valitsimet ja niiden käsittely on ohjelmakohtaisia, mutta joitakin valitsimia käytetään usein tiettyihin tarkoituksiin.
 
 
Jotkin ohjelmat vaativat valitsimia.
  $ [[gcc]]
  $ [[gcc]]
  '''gcc: <span style="color: red;">fatal error:</span>''' no input files
  '''gcc: <span style="color: red;">fatal error:</span>''' no input files
Rivi 29: Rivi 38:
  [ei tulostetta]
  [ei tulostetta]


Joillain väitteillä on tarkentajia, jotka annetaan kyseisen väitteen jälkeen. Yleensä tarkentaja erotetaan väitteestä välilyönnillä, mutta monet ohjelmat hyväksyvät ja jotkut vaativat sen kirjoittamista yhteen väitteen kanssa. GNU-tyyliset pitkät väitteet erotetaan tarkentajistaan "="-merkillä. Jos tarkentajia on useampia, ne usein erotetaan toisistaan pilkulla, ilman välilyöntiä.
Joillain valitsimilla on tarkentajia, jotka annetaan kyseisen valitsimen jälkeen. Yleensä tarkentaja erotetaan valitsimesta välilyönnillä, mutta monet ohjelmat hyväksyvät ja jotkut vaativat sen kirjoittamista yhteen valitsimen kanssa. GNU-tyyliset pitkät valitsimet erotetaan tarkentajistaan "="-merkillä. Jos tarkentajia on useampia, ne usein erotetaan toisistaan pilkulla, ilman välilyöntiä.


Väite, jolla voi olla tarkentaja, pitää laittaa väiteryhmän viimeiseksi:
valitsin, jolla voi olla tarkentaja, pitää laittaa valitsinryhmän viimeiseksi:
  komento -vglo tulostiedosto -d erotin tiedosto ...
  komento -vglo tulostiedosto -d erotin tiedosto ...
Jos haluat käyttää tiedostoa, joka alkaa "-"-merkillä (''"-ihmetiedosto"'') tai jos viimeisellä väittellä on tarkentaja, jota nyt ei käytetä, väitteiden ja niiden tarkentajien lopun voi ohjelmasta riippuen usein merkitä yhdellä tai kahdella "-"-merkillä. "-"-merkkiä käytetään myös ilmaisemaan [[Standardivirrat|standardivirtoja]].
Jos haluat käyttää tiedostoa, joka alkaa "-"-merkillä (''"-ihmetiedosto"'') tai jos viimeisellä valitsimella on tarkentaja, jota nyt ei käytetä, valitsimien ja niiden tarkentajien lopun voi ohjelmasta riippuen usein merkitä yhdellä tai kahdella "-"-merkillä. "-"-merkkiä käytetään myös ilmaisemaan [[Standardivirrat|standardivirtoja]].


=== Kuinka selvittää ohjelman väitteet? ===
=== Kuinka selvittää ohjelman valitsimet? ===
Voit tarkistaa väitteet hakemalla netistä, katsomalla [[man]]-ohjelmalla ja usein väitteillä ''-h'' tai ''--help''.
Voit tarkistaa valitsimet hakemalla netistä, katsomalla [[man]]-ohjelmalla ja usein valitsimilla ''-h'' tai ''--help''.


=== Yleisiä väitteitä ===
=== Yleisiä valitsimia ===
Muistutus: kaikki ohjelmat eivät käytä samoja väitteitä samoihin tarkoituksiin, joten voit tahattomasti vahingoittaa järjestelmääsi yrittäessäsi käyttää tuntemiasi väitteitä.
{{Huomautus|Ota huomioon, että kaikki ohjelmat eivät käytä samoja valitsimia samoihin tarkoituksiin, joten voit tahattomasti vahingoittaa järjestelmääsi yrittäessäsi käyttää tuntemiasi valitsimia.}}
  -f "force", "tiedän mitä teen, älä huoli"
  -f "force", "tiedän mitä teen, älä huoli"
  -h "help", lyhyt [[dokumentaatio|ohje]] komennon käytöstä
  -h "help", lyhyt [[dokumentaatio|ohje]] komennon käytöstä
Rivi 46: Rivi 55:
  -o "output", luotava tiedosto ([[GNU]]-ohjelmissa, sama onnistuu usein komentotulkin rakenteella > tiedosto)
  -o "output", luotava tiedosto ([[GNU]]-ohjelmissa, sama onnistuu usein komentotulkin rakenteella > tiedosto)


== Erilaisia väitetyylejä ==
== Erilaisia valitsintyylejä ==
[[GNU]]-ohjelmistot käyttävät yleensä rinnan ensinmainittuja yhden kirjaimen väitteitä ja omia kahdella viivalla alkavia pitkiä väitteitään:
 
Valitsimilla voi olla parametreja, jotka annetaan kyseisen valitsimen jälkeen. Yleensä parametri erotetaan valitsimesta välilyönnillä, mutta monet ohjelmat hyväksyvät ja jotkut vaativat parametrin kirjoittamista yhteen valitsimen kanssa. GNU-tyyliset pitkät valitsimet erotetaan parametreistään "="-merkillä. Jos parametrejä on useampia, ne usein erotetaan toisistaan pilkulla, ilman välilyöntiä.
 
Valitsin, jolla voi olla parametri, pitää laittaa valitsinryhmän viimeiseksi:
 
komento -vglo tulostiedosto -d erotin tiedosto ...
 
Jos halutaan käyttää tiedostoa, joka alkaa "-"-merkillä (''"-ihmetiedosto"'') tai jos viimeisellä valitsimella voisi olla parametri, jota nyt ei käytetä, valitsimien ja niiden parametrien lopun voi ohjelmasta riippuen usein merkitä yhdellä tai kahdella "-"-merkillä. "-"-merkkiä käytetään myös ilmaisemaan [[Standardivirrat|standardivirtoja]].
 
komento -o - -d : -- -ihmetiedosto
txt2ps -header - tiedosto.txt > tiedosto.ps
 
[[GNU]]-ohjelmistot käyttävät yleensä rinnan ensinmainittuja yhden kirjaimen valitsimia ja omia kahdella viivalla alkavia pitkiä valitsimiaan:
  -h
  -h
  --help
  --help
Rivi 56: Rivi 77:
  -o tiedosto
  -o tiedosto
  --output=tiedosto
  --output=tiedosto
[[BSD]]-perinteessä (?) väitteiden edessä ei käytetä viivoja eikä niitä voi jakaa ryhmiin:
 
[[BSD]]-perinteessä (?) valitsimien edessä ei käytetä viivoja eikä valitsimia voi jakaa ryhmiin:
 
  [[ps]] aux
  [[ps]] aux
  [[tar]] xzf kohdetiedosto.tar tiedosto1 tiedosto2 ...
  [[tar]] xzf kohdetiedosto.tar tiedosto1 tiedosto2 ...
[[X Window System|X]]-ohjelmissa käytetään väitteinä lyhenteitä tai kokonaisia sanoja. GNU-standardista poiketen kokonaisina sanoina määriteltäviä väitteitä ei edellä kuin yksi viiva (-).
 
[[X Window System|X]]-ohjelmissa käytetään valitsimina lyhenteitä tai kokonaisia sanoja. GNU-standardista poiketen kokonaisina sanoina määriteltäviä valitsimia ei edellä kuin yksi viiva (-).
 
  -help
  -help
  -version
  -version
  -geometry 100x100
  -geometry 100x100
  -bg taustaväri
  -bg taustaväri
Monet ohjelmat käyttävät useamman perinteen mukaisia väitteitä, esimerkiksi jotta ne käyttäytyisivät odotusten mukaisesti riippumatta siitä, mikä perinne on käyttäjälle tutumpi tai minkä perinteen mukaista ohjelmaa skripti on kirjoitettu käyttämään.
 
Monet ohjelmat käyttävät useamman perinteen mukaisia valitsimia, esimerkiksi jotta ne käyttäytyisivät odotusten mukaisesti riippumatta siitä, mikä perinne on käyttäjälle tutumpi tai minkä perinteen mukaista ohjelmaa skripti on kirjoitettu käyttämään.


== Ottaminen ==
== Ottaminen ==
=== [[C]] ===
=== [[C]] ===
C-kielellä väitteet menevät pääfunktiolle. Yksi on kokonaisluku ja toinen taulukko merkkijonoista. Näille voi periaatteessa antaa mitkä tahansa nimet, mutta tyypillisesti ne ovat '''argc''' (argument count) ja '''argv''' (argument vector).
C-kielellä valitsimet menevät pääfunktiolle. Yksi on kokonaisluku ja toinen taulukko merkkijonoista. Näille voi periaatteessa antaa mitkä tahansa nimet, mutta tyypillisesti ne ovat '''argc''' (argument count) ja '''argv''' (argument vector).


<syntaxhighlight lang="c">
<syntaxhighlight lang="c">
Rivi 74: Rivi 100:


int main(int argc, char *argv[]) {
int main(int argc, char *argv[]) {
  //argv sisältää väitteet, argc kertoo argv:n pituuden  
  //argv sisältää valitsimet, argc kertoo argv:n pituuden  
  //argv:n ensimmäinen solu sisältää ohjelman nimen
  //argv:n ensimmäinen solu sisältää ohjelman nimen


  printf("Väitteittesi määrä on %i\n", argc);
  printf("Valitsimien lukumäärä on %i\n", argc);


  for(int i=0; i<argc; ++i)
  for(int i=0; i<argc; ++i)
  printf("Väite no. %i on: %s\n", i, argv[i]);
  printf("valitsin no. %i on: %s\n", i, argv[i]);
}
}
</syntaxhighlight>
</syntaxhighlight>
Jos käännät tuon ohjelman tiedostoon "väiteotto", nämä tulostukset syntyvät:
Jos käännät tuon ohjelman tiedostoon "valitsinotto", nämä tulostukset syntyvät:
  $ ./väiteotto
  $ ./valitsinotto
  Väitteittesi määrä on 1
  Valitsimien lukumäärä on 1
  Väite no. 0 on: ./väiteotto
  valitsin no. 0 on: ./valitsinotto
   
   
  $ ./väiteotto jgaoirjg igaoierj
  $ ./valitsinotto jgaoirjg igaoierj
  Väitteittesi määrä on 3
  Valitsimien lukumäärä on 3
  Väite no. 0 on: ./väiteotto
  valitsin no. 0 on: ./valitsinotto
  Väite no. 1 on: jgaoirjg
  valitsin no. 1 on: jgaoirjg
  Väite no. 2 on: igaoierj
  valitsin no. 2 on: igaoierj


=== [[Python]] ===
=== [[Python]] ===
Python varastoi väitteensä taulukossa sys.argv, joka kuuluu sys-kirjastoon.
Python varastoi valitsimensä taulukossa sys.argv, joka kuuluu sys-kirjastoon.
<syntaxhighlight lang="python">
<syntaxhighlight lang="python">
#!/usr/bin/python3
#!/usr/bin/python3
Rivi 101: Rivi 127:
import sys
import sys


print("Väitteittesi määrä on", len(sys.argv));
print("Valitsimien lukumäärä on", len(sys.argv));


for i in range(len(sys.argv)):
for i in range(len(sys.argv)):
print("Väite no.", i, "on:", sys.argv[i])
print("valitsin no.", i, "on:", sys.argv[i])
</syntaxhighlight>
</syntaxhighlight>
Jos tallennat tuon ohjelman tiedostoon "väiteotto.py", nämä tulostukset syntyvät:
Jos tallennat tuon ohjelman tiedostoon "valitsinotto.py", nämä tulostukset syntyvät:
  $ ./väiteotto.py
  $ ./valitsinotto.py
  Väitteittesi määrä on 1
  Valitsimien lukumäärä on 1
  Väite no. 0 on: ./väiteotto.py
  valitsin no. 0 on: ./valitsinotto.py
   
   
  $ ./väiteotto.py jgaoirjg igaoierj
  $ ./valitsinotto.py jgaoirjg igaoierj
  Väitteittesi määrä on 3
  Valitsimien lukumäärä on 3
  Väite no. 0 on: ./väiteotto.py
  valitsin no. 0 on: ./valitsinotto.py
  Väite no. 1 on: jgaoirjg
  valitsin no. 1 on: jgaoirjg
  Väite no. 2 on: igaoierj
  valitsin no. 2 on: igaoierj


[[Luokka:Komentorivi]]
[[Luokka:Komentorivi]]
[[Luokka:Käsitteet]]
[[Luokka:Käsitteet]]
Noudettu kohteesta ”https://www.linux.fi/wiki/Väite