5  Standardikomennot

Seuraavassa esitellään kaikki POSIX.2:n edellyttämät komennot paitsi erityisiä sisäisiä komentoja (4.7.3). Osa on esitelty jo aikaisemmin ja osa esitellään perusteellisemmin myöhemmin ja sivuutetaan nyt maininnalla, mutta täydellisyyden vuoksi ne kuitenkin luetellaan tässä. Vain ohjelmankehitysympäristössä vaadittavia komentoja ar, make ja strip ei esitellä tässä.

5.1  awk - Pattern scanning and processing language

Awk on täydellinen ohjelmointikieli ja ansaitsee oman lukunsa (ks. ).

5.2  basename - Return nondirectory portion of pathname

basename string [suffix]

tulkitsee argumenttinsa tiedostonimeksi, jossa voi olla polku ja/tai pisteellä erotettu tarkennin, ja palauttaa sen ilman polkua, ja ilman tarkenninta jos tarkennin on annettu argumenttina ja se vastaa nimen lopussa olevaa. Jos tarkenninargumentti ei vastaa nimeä, sillä ei ole vaikutusta (ei myöskään virheilmoitusta).

Jos argumentin lopussa on /, se poistetaan ensin ja palautetaan sen vasemmalla puolella oleva osa. Tulokseen voi jäädä / vain jos argumentissa on vain niitä.

5.3  bc - Arbitrary-precision arithmetic language

bc [-l]

Yleinen laskinohjelma. Ymmärtää suurin piirtein samoja liukulukulausekkeita kuin C (ei kaikkia kirjastofunktioita), mutta laskee mielivaltaisella tarkkuudella. Tuntee myös muuttujat, ohjausrakenteet for, while ja if, funktiomäärittelyt (omalla syntaksillaan) jne.

Optio -l asettaa näyttötarkkuudeksi alussa 20 numeroa (ilman sitä oletus on 0; asetettavissa muuten muuttujalla scale) ja määrittelee joitakin matemaattisia funktioita.

(Historiallisesti aikaisempi laskinohjelma dc, jolla bc usein on toteutettu, ei ole POSIX-standardissa.)

5.4  cat - Concatenate and print files

cat [-u] [file(s)]

Tulostaa argumenttina annetut tiedostot peräjälkeen (tai tiedostoargumenttien puutteessa stdinin) stdout'iin. Optiolla -u tulostus tapahtuu merkki kerrallaan ilman blokkausta (tarpeen lähinnä luettaessa laitetiedostoa).

Epästandardeja mutta yleisiä optioita ovat

-b ei tulosta tyhjiä rivejä
-e tulostaa jokaisen rivin loppuun $
-n tulostaa rivinumerot
-r tulostaa monesta peräkkäisestä tyhjästä rivistä vain yhden
-s estää virheilmoitukset
-t tulostaa tabulaattorin muodossa ^ I
-v (verbose): tulostaa kontrollimerkit näkyvässä muodossa (ei tabulaattoria)

Siirrettävissä skripteissä ei näitä optioita voi käyttää (samat asiat voi tehdä mm. sedillä), interaktiivisesti etenkin cat -et on usein kätevä.

5.5  cd - Change working directory

Vaihtaa työhakemiston annetuksi tai ilman argumenttia kotihakemistoksi ($HOME).

Jos annettu hakemisto ei ala /:lla, sitä etsitään muuttujan CDPATH sisältämistä hakemistoista (kaksoispisteellä eroteltu lista) tai jos se puuttuu, oletushakemistosta.

Ksh asettaa lisäksi $PWD:hen valitun hakemiston ja $OLDPWD:hen edellisen hakemiston, vaihtaa takaisin edelliseen jos argumenttina on pelkkä -, ja vaihtaa osan nykyisestä oletushakemistosta syntaksilla cd old new.

5.6  chgrp - Change file group ownership

chgrp [-R] group file(s)

Vaihtaa tiedostojen ryhmän, optiolla -R rekursiivisesti hakemistopuulle.

Yleensä sallittu vain superkäyttäjälle tai erikseen määritellyille käyttäjäryhmille.

5.7  chmod - Change file modes

chmod [-R] mode file(2)

Muuttaa tiedostojen suojausbittejä. Mode voi olla joko oktaaliluku tai symbolinen esitys muotoa

[augo][+-=][rwxXsugo][,...]

eli lista määrityksiä joissa ensimmäinen kirjainyhdistelmä kertoo kenen oikeuksia muutetaan, a=all, u=user, g=group, o=others (oletus umaskin mukainen), toinen miten ('=' asettaa, '+' lisää, '-' poistaa) ja kolmas mitä oikeutta muutetaan, r=read, w=write, x=execute/search, s=setuid/setgid, X=execute-if-relevant (sama kuin x jos kyseessä on hakemisto tai tiedosto jolla on jo ainakin yksi x-bitti päällä).

Oikeutena u, g ja o tarkoittavat vastaavaa oikeutta ko. joukolla (esim. chmod g=u asettaa ryhmälle samat oikeudet kuin käyttäjällä).

Huom. jos mode-argumentti alkaa -:lla, sen eteen tarvitaan -- ettei sitä tulkittaisi optioksi. (Käytännössä lähes kaikki toteutukset toimivat kyllä ilmankin.)

Oktaalimuotoinen mode asettaa kaikki oikeudet kerralla, oktaaliluvun bitit vastaavat seuraavia oikeuksia: 01: u=x, 02: u=w, 04: u=r, 010: g=x, 020: g=w, 04: g=r, 0100: o=x, 0200: o=w, 0400: o=r, 02000: g=s, 04000: u=s.

Huom. 01000 on standardissa jätetty auki, mutta yleisesti se on ns. sticky bit, ja sen voi asettaa symbolisessakin muodossa kirjaimena t.

Optio -R tekee muutoksen rekursiivisesti hakemistopuulle.

Joissakin järjestelmissä on lisäksi optio -A, joka säilyttää mahdolliset ACL:t (access control list), oletuksena ne poistetaan.

Jos tiedosto johon viitataan on symbolinen linkki, muutokset tehdään sen osoittamalle tiedostolle, ei linkille.

5.8  chown - Change file ownership

chown [-R] owner[:group] file(s)

Vaihtaa tiedostojen omistajaa (ja mahdollisesti ryhmää), optiolla -R rekursiivisesti koko hakemistopuulle.

Yleensä sallittu vain superkäyttäjälle tai erikseen määritellyille käyttäjäryhmille.

5.9  cksum - Write file checksums and sizes

Laskee tiedostoargumenteilleen tarkistussumman (ISO 8802-3:n määrittelemä CRC).

Historiallisesti samaan tarkoitukseen käytetty sum jätettiin pois standardista eikä sitä ole syytä käyttää mihinkään.

5.10  cmp - Compare two files

Vertaa kahta tiedostoa ja jos ne eroavat, tulostaa ensimmäisen eron paikan.

Optiolla -l tulostaa kaikki erot, optiolla -s ei mitään.

Exit status on nolla jos tiedostot ovat identtisiä, muutoin yksi.

5.11  comm - Select or reject lines common to two files

comm [-123] file1 file2

Valikoi yhteisiä rivejä kahdesta tiedostosta, joiden oletetaan olevan lajiteltuna, ensin vain tiedostossa file1 olevat rivit, sitten vain tiedostossa file2 olevat ja lopuksi yhteiset. Optiolla -1 jätetään vain ensimmäisessä olevat pois, -2:lla vain toisessa olevat ja -3:lla yhteiset.

Stdiniä käytetään argumenttina vain jos tiedostonimeksi annetaan -.

5.12  command - Execute a simple command

command [-p] command_name...

Suorittaa nimetyn komennon, ohittaen mahdollisen samannimisen funktion. Optiolla -p ohittaa myös PATHin ja etsii komentoa PATHin sen oletusarvon mukaisesti.

5.13  cp - Copy files

cp [-R|-r] [-fip] tiedosto(t) kohde

kopioi tiedostoja, optiolla -r tai -R myös hakemistopuita rekursiivisesti. Optio -R kopioi myös nimettyjä putkia yms erikoistiedostoja; -r:n käytös niiden kanssa on määrittelemätön, joten kannattanee aina käyttää -R:ää.

Jos kopioitavia tiedostoja on useita, kohteen pitää olla hakemisto, joka on valmiiksi olemassa.

Hakemistoa kopioitaessa luodaan aina uusi samanniminen hakemisto (vaikka kohde olisikin valmiiksi sellainen).

Jos kopioitava tiedosto on sama kuin kohde tai . tai .., sille ei tehdä mitään.

Uuden tiedoston suojausbitit ovat samat kuin alkuperäisen XOR umask.

Jos kohdetiedosto on jo olemassa, uusi kirjoitetaan oletuksena sen päälle, paitsi jos optio -i on annettu, jolloin asiaa kysytään käyttäjältä (viesti stderriin, vastaus stdinistä). Jos se on suojattu tapahtuu virhe, paitsi optiolla -f se yritetään ensin hävittää (unlink()-kutsulla - ei onnistu hakemistolle).

Jos -p-optio on annettu, tiedoston aikaleimat (mtime ja atime muttei ctime), suojausbitit, omistaja ja ryhmä säilytetään (viimeiset kaksi toimivat vain superkäyttäjälle tai yleensä niille joille myös chown, ja jos omistaja tai ryhmä muuttuu myös suid- ja setgid-bitit nollataan).

5.14  cut - Cut out selected fields of each line of a file

cut [-b] list [-n] [file(s)]
cut [-c] list [file(s)]
cut [-f] list [-d delim] [-s] [file(s)]

valikoi tiedostoista tai stdinistä kenttiä kolmella eri tavalla:

-b valitsee tavuja; valitun tavun puuttuminen on virhe. Optiolla -n ei katkaise monitavuisia merkkejä keskeltä.
-c valitsee merkkejä (jotka voivat olla monitavuisia joissakin kielissä); valitun puuttuminen ei ole virhe.
-f valitsee erotinmerkin (oletus tab, vaihdettavissa optiolla -d) rajaamia kenttiä. Rivit joilla ei ole yhtään erotinmerkkiä tulostetaan sellaisenaan, paitsi jos -s on annettu jolloin niitä ei tulosteta lainkaan.

Kaikissa valintalista on pilkuilla ja tavuviivoilla eroteltu kokonaislukulista: n-m tarkoittaa positioita n:stä m:ään, n- n:stä eteenpäin ja -m on sama kuin 1-m. Tällaisia elementtejä voi olla mielivaltainen määrä, ne voivat mennä päällekkäin ja olla missä järjestyksessä tahansa. Valittuja kenttiä ei kuitenkaan tulosteta moneen kertaan tai eri järjestyksessä.

5.15  date - Write the date and time

date [-u] [+format]

Tulostaa päiväyksen ja kellonajan halutussa formaatissa. Optiolla -u käyttää aikavyöhykkeenä UTC0:aa (GMT) riippumatta ympäristömuuttujan TZ arvosta.

Jos muotoiluformaatti on annettu, siitä korvataan prosenttialkuiset merkkiparit seuraavan listan mukaisesti.

%a Lyhennetty viikonpäivä1
%A Täydellinen viikonpäivä1
%b Lyhennetty kuukausi1
%B Täydellinen kuukausi1
%c Päivämäärä ja aika oletusformaatissa1,2
%C Vuosisata numerona 00-992
%d Kuukaudenpäivä numerona 01-313
%D Päivämäärä muodossa mm/dd/yy4
%e Päivämäärä numerona 1-31 (yksinumeroisissa alkutyhjä)3
%h Sama kuin %b4
%H Tunti 24h kellon mukaan 00-233
%I Tunti 12h kellon mukaan 01-123
%j Vuoden päivänumero (001-366)
%m Kuukausi desimaalilukuna 01-123
%M Minuutti desimaalilukuna 00-593
%n Rivinvaihto (newline)
%p Aamu/iltapäiväsymboli (AM/PM)1
%r Kellonaika 12h-muodossa1,4
%S Sekunnit desimaalilukuna 00-613
%t Tabulaattori
%T Kellonaika 24h-muodossa HH:MM:SS4
%U Viikkonumero (sunnuntaialkuinen viikko) 00-533
%w Viikonpäivä numerona 0-6 (0=su))3
%W Viikkonumero (maanantaialkuinen viikko) 00-533
%x Päivämäärä oletusformaatissa1,2
%X Kellonaika oletusformaatissa1
%y Vuosi kaksinumeroisena23
%Y Vuosi nelinumeroisena2
%Z Aikavyöhyke
%% Prosenttimerkki

1 Riippuu kielestä (locale)
2 E prosentin ja formaattikirjaimen välissä valitsee mahdollisen vaihtoehtoisen vuosiluvun
3 O prosentin ja formaattikirjaimen välissä valitsee mahdolliset vaihtoehtoiset numerosymbolit
4 Vanhentunut, pitäisi välttää

Esim. Saudi-Arabiassa +%OH voisi tuottaa kellonajan sikäläisillä numerosymboleilla (jotka eroavat meikäläisistä ns. arabialaisista numeroista!), kun taas +%H:n pitäisi aina käyttää länsimaisia numeroita. Sen sijaan tarkennin E on tarkoitettu vain kalentereille jotka poikkeavat gregoriaanisesta vain alkamisvuoden mukaan, kuten Thaimaassa ja Japanissa, ja laajennus kalenterihin joissa vuosi vaihtuukin eri aikaan on jätetty auki (``implementation-specific extension''). Muutkin päivämääräkentät on yleensä määritelty vain gregoriaanista kalenteria silmällä pitäen, vain %x ja %c on tarkoitettu yleisemmiksi.

Tarkentimet E ja O eivät aiheuta virhettä vaan jätetään huomiotta jos ko. vaihtoehtoista esitystä ei ole.

Moderneissa järjestelmissä näkee lisäksi mm. seuraavia:

%V Viikkonumero ISO-standardin mukaan
%E Aikakauden/keisarin nimi ja vuosiluku
%N Aikakauden/keisarin nimi
%o Vuosi japanilaisen kalenterin mukaan
%u Viikonpäivä numerona 1-7 (ma=1)

Huom. %U ja %W laskevat viikkonumeron väärin (suomalaisittain ja ISO-standardin mukaan)! Jos järjestelmä ei tunne %V:tä, sitä ei saa oikein mitenkään (muuten kuin erikseen laskemalla).

Joskus näkee myös %F:n, joka on sama kuin %B (paitsi ettei se ehkä välitä kieliasetuksesta).

Joissakin järjestelmissä voi lisäksi prosenttimerkin ja seuraavan kirjaimen väliin lisätä kentän pituus- ja tarkkuusmäärittelyn kuten printfissä.

Esim. Halutaan viikon- ja kuukaudenpäivä, kuukausi ja vuosi eri muuttujiin:

eval `date '+MONTH=%b DOW=%a DAY=%d YEAR=%Y'`

POSIX.2 ei tunne date-komennon toista yleistä käyttötapaa, joka kuitenkin toimii lähes kaikissa koneissa:

date [-u] mmddhhmm[[cc]yy]

Tällä asetetaan systeemikello. Yleensä sallittu vain superkäyttäjälle. (Huom. formaatti vaihtelee eri koneissa, tarkista ensin!)

5.16  dd - Convert and copy a file

dd on historiallisista syistä syntaksiltaan sangen erikoinen. Se tuntee seuraavanlaiset argumentit:

if=file syöttötiedosto, oletus stdin
of=file tulostustiedosto, oletus stdout; jos seek=-määritystä ei ole, tiedosto nollataan aluksi
ibs=n blokkikoko luettaessa, tavuja, oletus 512
obs=n blokkikoko kirjoitettaessa, tavuja, oletus 512
bs=n blokkikoko sekä luettaessa että kirjoitettaessa
cbs=n blokkikoko optioita block ja unblock varten
skip=n ohita n tavua syöttötiedoston alusta
seek=n ohita n tavua tulostustiedoston alusta
count=n kopioi vain n syöttötiedoston blokkia
conv=optio[,...] , missä optiot voivat olla seuraavia:

block lue vaihtelevanmittaisia rivinvaihtoon (\n) loppuvia tietueita ja muunna ne cbs:n mittaisiksi kiinteiksi (poistaen rivinvaihdot)
unblock tulosta vaihtelevanmittaisia rivinvaihdolla rajattuja tietueita
lcase muuta isot kirjaimet pieniksi
ucase muuta pienet kirjaimet isoiksi
swab vaihda aina kaksi peräkkäistä tavua keskenään
noerror älä keskeytä virheeseen
notrunc älä nollaa tiedostoa aluksi
sync täydennä syöttöblokit ibs=:n mittaisiksi nullilla

Yleisiä epästandardeja conv-optioita ovat lisäksi EBCDIC (muunna ASCII EBCDICiksi) ja ASCII (muunna EBCDIC ASCIIksi).

5.17  diff - Compare two files

diff [-c|-e|-C n] [-br] file1 file2

vertaa kahta tiedostoa ja tulostaa listan muutoksista joita ensimmäiselle olisi tehtävä että siitä saisi toisen. Jos tiedostot ovat identtisiä ei tulosta mitään.

Optiot:

-b älä ota huomioon alkutyhjiä ja tulkitse peräkkäisten tyhjien jonot samoiksi
-c tulosta kolme riviä kontekstia eroille
-C n tulosta n riviä kontekstia
-e ed-komennon syötöksi sopiva tulosformaatti
-r vertaa kahta hakemistoa rekursiivisesti

Exit status on 0 jos eroja ei löytynyt, 1 jos löytyi, suurempi jos tapahtui virhe.

5.18  dirname - Return directory portion of pathname

dirname string

Palauttaa tiedostonimen hakemisto-osan. Mahdollinen lopussa oleva / poistetaan ensin, sen jälkeen lopusta viimeiseen jäljelläolevaan kauttaviivaan saakka. Jos argumentissa ei ole yhtään kauttaviivaa, palauttaa pisteen, ja jos kauttaviivoja on vain alussa peräkkäin tai jos siinä on pelkkiä kauttaviivoja palauttaa /:n. (Historiallisista syistä dirname // saattaa palauttaa myös //:n.)

5.19  echo - Write arguments to standard output

Ks. .

5.20  ed - Edit text

Rivipohjainen editori, jota ei tässä esitellä sen tarkemmin (mutta vrt. sed).

5.21  env - Set environment for command invocation

env [-i] [muuttuja=arvo...] [komento...]

alustaa ympäristömuuttujat annetuilla arvoilla komennon suorituksen ajaksi. Ilman -i optiota se on olennaisesti sama kuin

[muuttuja=arvo...] [komento...]

(vrt. 4.4.8), paitsi että env on ulkoinen komento (toimii esim. findin kanssa).

Jos -i on annettu, ympäristö tyhjennetään ensin, jolloin suoritettava komento saa tasan envin asettamat ympäristömuuttujat.

Exit status on 0 jos komento onnistui, 1-125 jos env epäonnistui, 126 jos komento löytyi mutta sitä ei voitu suorittaa, ja 127 jos sitä ei löutynyt.

5.22  expr - Evaluate arguments as an expression

Ks. , merkkijonovertailun osalta vrt. grep ().

5.23  false - Return false value

Palauttaa nollasta eroavan statuksen.

5.24  find - Find files

find polku [optiot...]

etsii tiedostoja hakemistopuusta rekursiivisesti.

Hakua voi ohjata seuraavilla optioilla.

-atime n tosi jos tiedoston viimeinen käyttöaika (access time) on n päivää.
-ctime n tosi jos tiedoston hakemistotiedon (inoden) muutosaika on n päivää.
-depth aina tosi mutta muuttaa hakujärjestystä niin, että alihakemistot käydään läpi ensin.
-exec komento ... ] ; suorittaa ulkoisen komennon, tosi jos tämän exit status on nolla. Käsiteltävänä oleva polku voidaan välittää argumenttina {} (joihin ei yleensä saa liittää muuta).
-group gname tosi jos tiedoston ryhmä on gname.
-links n tosi jos tiedostoon on n linkkiä (ei laske symbolisia linkkejä!).
-mtime n tosi jos tiedoston muutosaika on n päivää.
-name pattern tosi jos tiedoston nimi vastaa annettua merkkijonolauseketta (glob pattern, ts. sama syntaksi kuin shellin tiedostonimilaajennuksissa, eri kuin grepissä).
-newer file tosi jos tiedosto on uudempi kuin file.
-nogroup tosi jos tiedoston ryhmää ei ole (se puuttuu /etc/group-tiedostosta).
-nouser tosi jos tiedoston omistajaa ei ole (se puuttuu /etc/passwd-tiedostosta).
-ok komento ... ; kuten -exec mutta kysyy interaktiivisesti suoritetaanko komento.
-perm [-]mode tosi jos tiedoston suojaukset vastaavat modea, joka on annettu samalla syntaksilla kuin chmod-komennossa paitsi että -:lla alkavia ei saa käyttää, sen sijaan jos alussa on - tutkitaan ovatko ainakin annetut suojaukset päällä, ilman sitä ovatko ne täsmälleen annetut. Kuten chmodissa tässäkin voi sekä symbolista että oktaalimuotoa (jälkimmäistä ei suositella).
-print aina tosi, tulostaa tiedostonimen (polun).
-prune aina tosi, estää rekursion kohdalla olevan hakemiston sisään. Ei toimi jos myös -depth on annettu.
-size n[c] tosi jos tiedoston koko on n/ lohkoa (512 tavun) tai tavua (jos koon lopussa on c).
-type c tosi jos tiedoston tyyppi on c, missä c:lle tunnistetaan arvot b = lohkolaitetiedosto (block special file), c = merkkilaitetiedosto (character special file), d = hakemisto, p = nimetty putki ja f = tavallinen tiedosto. Epästandardeja mutta yleisesti toimivia ovat myös l (symbolinen linkki), s (socket), n (network special file) ja M (mount point).
-user uname tosi jos tiedoston omistaja on uname.
-xdev aina tosi, estää rekursion eri laitteelle (mount pointin yli).

Näitä voi yhdistellä seuraavilla:

( lauseke ) ryhmittely.
! lauseke negaatio.
lauseke1 [-a] lauseke2 AND; toista lauseketta ei suoriteta jos ensimmäinen on epätosi.
lauseke1 -o lauseke2 OR; toista lauseketta ei suoriteta jos ensimmäinen on tosi.

Jos mitään optioista -print, -exec tai -ok ei ole annettu, optiolauseke tulkitaan kuin ( lauseke ) -print.

Huomaa että sulut ja puolipiste ovat shellin erikoismerkkejä ja on suojattava.

Yleisiä epästandardeja optioita on mm.

-follow seuraa symbolisia linkkejä
-fstype fstype tosi jos tiedostojärjestelmän tyyppi on fstype (esim. NFS)
-fsonly estää rekursion muihin tiedostojärjestelmätyyppeihin (globaalisti)
-path pattern kuten -name mutta vertaa koko polkua (ja kauttaviivat käyttäytyvät kuten muutkin merkit)
-inum n tosi jos tiedoston inode on n.
-linkedto file tosi jos tiedostosta on linkki file:een
-only ''käänteinen -prune'': hakemisto käsitellään rekursiivisesti vain jos... Ei toimi yhtaikaa -depth'in kanssa.

Joissakin uusissa toteutuksissa voi myös käyttää -execin loppumerkkinä puolipisteen vaihtoehtona plus-merkkiä, sillä toimintaerolla että tiedostoja kootaan useita jokaiselle komennon kutsulle (vrt. xargs).

5.25  fold - Fold lines

fold [-bs] [-w width] [file(s)]

jakaa syöttötiedostojen tai stdinin rivit enintään annetun mittaisiksi. Leveys annetaan optiolla -w merkkeinä (oletus 80) tai tavuina jos -b-optio on annettu. Jos optio -s on annettu, yrittää katkaista rivin tyhjän kohdalta.

Seuraava: 5.26-5.43 Standardikomennot G-M
Edellinen: 4.11-4.12 Shellin optiot, trap


File translated from TEX by TTH, version 1.98.
On 17 May 2001, 18:14.