5.44  nohup - Invoke a utility immune to hangups

nohup komento [argumentteja...]

suorittaa ulkoisen komennon niin, että se ei keskeydy saadessaan SIGHUP-signaalin. Jos stdout on pääte se suunnataan tiedoston ./nohup.out perään (appending) tai jos siihen ei voi kirjoittaa, $HOME/nohup.out (jos siihenkään ei voi kirjoittaa, aiheutuu virhe). Jos stderr on pääte se suunnataan samaan tiedostoon kuin stdout.

Exit status on 126 jos komento löytyi mutta sitä ei voinut suorittaa, 127 jos komentoa ei löytynyt tai nohup itse epäonnistui, muuten komennon palauttama status.

Huom. nohup suorittaa vain yhden komennon. Jos se halutaan tehdä putkelle tms, tarvitaan jotain tällaista:

nohup sh -c 'prog1 | prog2'

5.45  od - Dump files in various formats

od [-v] [-A base] [-j skip] [­N count] [-t type] file(s)

tulostaa tiedoston (tai stdinin) halutussa formaatissa. Optiot:

-A base Kantaluku osoitteille: d=desimaali, o=oktaali, x=heksadesimaali, n=osoitteita ei tulosteta.
-j skip Ohita skip tavua alusta. Oletuksena skip on desimaaliluku, jos se alkaa 0x heksadesimaali, jos se muuten alkaa nollalla oktaaliluku. Suffikseilla b, k ja m se tulkitaan blokeiksi (512 tavua), kiloiksi (1024) tai megoiksi (1048576).
-N count Tulosta enintään count tavua (count voi olla desimaali-, oktaali- tai heksadesimaaliluku kuten skip).
-t type Tulostustyyppi: a=ASCII (7-bittinen, kontrollimerkit nimillä), c=merkki, d=desimaaliluku, f=liukuluku, o=oktaaliluku, u=etumerkitön kokonaisluku, x=heksadesimaaliluku. Kaikkien perässä voi olla luku joka määrää montako tavua tulostetaan; f:n perässä tarkkuus F=float, D=double tai L=long double; d:n, o:n, u:n ja x:n perässä voi olla C=char, S=short, I=int, L=long. Tyypit kuten C:ssä.
-v Tulosta kaikki. Ilman -v:tä identtiset rivit korvataan tähdillä.

Optioiden puuttuessa oletus on -t o2.

5.46  paste - Merge corresponding or subsequent lines of files

paste [-s] [-d lista] tiedosto...

tulostaa tiedostoja rinnakkain, oletuksena erotettuna tabulaattorilla. Muita lyhyemmät tiedostot käsitellään kuin niiden lopussa olisi tyhjää, ellei -s-optiota ole annettu.

Optiot:

-d lista Käytä erottimena tabulaattorin asemesta listan merkkejä järjestyksessä (tarvittaessa toistuvasti). Kunkin rivin (tai tiedoston -s-option kanssa) jälkeen aloitetaan listan alusta, ja viimeisen tiedoston rivinvaihtoa (tai tiedoston viimeistä rivin vaihtoa -s:n kanssa) ei korvata. Seuraavilla merkkiyhdistelmillä on erikoismerkitys:

\n = rivinvaihto
\t = tabulaattori
\\ = kenoviiva (\)
\0 = tyhjä merkkijono (-d '' ei yleensä toimi)

-s Tulosta jokainen tiedosto omana rivinään, niin että vastinrivit tulevat alekkain samoihin sarakkeisiin.

Stdiniä luetaan vain jos - on annettu argumenttina. Jos se on annettu monta kertaa, stdiniä luetaan rivi kerrallaan jokaista listan alkiota kohti yhä uudestaan.
Esim. ls | paste - - - - tulostaa hakemiston neljään palstaan.

5.47  pathchk - Check pathnames

pathchk [-p] tiedostonimi...

tarkistaa että annetut tiedostonimet ovat laillisia, oletuksena käytettävässä järjestelmässä, eli että

Komponenttien puuttuminen ei aiheuta virhettä jos ne olisi mahdollista luoda.

Jos optio -p on annettu tutkitaan nimen siirrettävyyttä, eli että

5.48  pax - Portable archive interchange

pax  [-cdnv] [-f archive] [-s replstr] ...  [pattern ...]

pax  -r [-cdiknuv] [-f archive] [-o options] ...  [-p string] ...
      [-s replstr] ...  [pattern ...]                             

pax  -w [-dituvX] [-b blocksize] [ [-a] [-f archive] ] [-o options] ...
      [-s replstr] ...  [-x format] [file ...]

pax  -r -w [-diklntuvX] [-p string] ...  [-s replstr] ...  [file ...]
      directory

Pax lukee ja kirjoittaa tiedostoarkistoja (file archive):

Jos tiedostoargumentteja ei ole annettu, pax lukee tiedostolistan stdinistä. Hakemistot tulkitaan rekursiivisesti hakemistopuiksi.

Edellämainittujen -r ja -w lisäksi pax tuntee seuraavat optiot:

-b blocksize Lohkokoko
-c etsii tiedostonimiä jotka eivät vastaa annettua patternia
-d ei käy hakemistoja läpi rekursiivisesti
-f archive käyttää arkistona nimettyä tiedostoa stdinin tai stdoutin asemesta
-i kysyy interaktiivisesti mitä tiedostoille tehdään (ohita, vaihda nimeä, käytä sellaisenaan)
-k ei kirjoita olemassaolevien tiedostojen päälle
-n valitse vain yksi (ensimmäinen) tiedostonimi per pattern
-q options järjestelmäkohtaisia optioita
-p string joukko seuraavia optioita:

a älä säilytä käyttöaikoja (access time)
e säilytä omistaja, ryhmä, aikaleimat ja suojausbitit
m älä säilytä muutosaikoja (modification time)
o säilytä omistaja ja ryhmä
o säilytä suojausbitit

Jos omistaja tai ryhmä vaihtuu, setuid- ja setgid-bitit nollataan.

-s replstr muuta tiedostonimiä ed-editorin 's'-syntaksin mukaisesti: /old/new/[gp], missä old ja new ovat ed-tyylisiä regexp'ejä, g tarkoittaa että kaikki esiintymät korvataan, p että tehdyt muutokset tulostetaan stderr'iin.
-t palauta tiedostojen käyttöajat samoiksi kuin ennen kuin pax luki niitä
-u ohita tiedostot jotka ovat vanhempia kuin samannimiset kohteessa
-v pitkä tulostusmuoto sisällysluettelolle
-x format valitse tallennusformaatti: cpio tai ustar (extended tar)
-X älä ohita mount pointteja (ts. pysy yhden laitteen sisällä)

Pax on tarkoitettu korvaamaan vanhoja cpio- ja tar-komentoja, niistä kun on paljon erilaisia ja keskenään yhteensopimattomia versioita. Se ei kuitenkaan ole saavuttanut suurtakaan suosiota eikä sitä esim. Linux-järjestelmissä useinkaan ole.

5.49  pr - Print files

pr [+page] [-column] [-adFmrt] [-e[char][gap]] [-h header] [-i[char][gap]] [-l lines] [-n[char][width]] [-o offset] [-s[char]] [-w width] [file ...]

muotoilee tekstiä tulostusta varten, oletuksena 66-rivisiksi sivuiksi, joissa on 5-rivinen otsikko jossa on sivunumero, päivämäärä, kellonaika ja tiedostonimi, ja 5 riviä tyhjää sivun alalaidassa.

Optiot:

+page Aloita sivulta page
-column Muotoile tulostus column palstaiseksi
-a Palstoita riveittäin
-d Tuplarivinvälit (kaksi rivinvaihtoa joka väliin)
-e[char][gap] Aseta tabulaattorimerkiksi syötössä char (mikä tahansa ei-numero) ja -positioiksi n*gap+1, missä n = 1,2,...
-F Käytä formfeed-merkkiä sivujen välissä
-h header Otsikkoon tiedostonimen paikalle header
-i[char][gap] Aseta tabulaattorimerkiksi tulostuksessa char ja -positioiksi n*gap+1, missä n = 1,2,...
-l lines Aseta sivun pituudeksi lines.
-m Yhdistä tiedostoja rinnakkain, ts. eri sarakkeet eri tiedostoista.
-i[char][width] Rivinumerointi width numerolla, erottimena char (oletus tab).
-o offset Joka rivin alkuun offset välilyöntiä.
-p (ei POSIX.2:ssa, vain interaktiivisessa käytössä) pysähdy joka sivun jälkeen odottamaan näppäilyä
-r Ei virhettä tiedostoista joita ei saada avatuksi.
-s[char] Palstojen erottimena vain yksi char (oletus tab)
-t Ei otsikkoa eikä tyhjiä rivejä sivun eikä tiedoston loppuun
-w width Rivin leveydeksi width (vaikuttaa vain palstaleveyteen monipalstatulostuksessa)

Nykyisin pr-komennolle on suhteellisen vähän tarvetta, vastaavat toiminnot tehdään erilaisilla ASCII-to-PostScript- ohjelmilla.

5.50  printf - Write formatted output

Ks. .

5.51  pwd - Return working directory name

Tulostaa työhakemiston nimen. (Ksh:ssa se on myös muuttujassa PWD.)

5.52  read - Read a line from standard input

Ks. .

5.53  rm - Remove directory entries

rm [-fiRr] tiedosto...

poistaa tiedostojen hakemistotietoja (tiedostoon osoittavia linkkejä). Tiedoston sisältö hukkuu (sen käyttämä levytila vapautuu) kun viimeinen siihen osoittava linkki poistetaan (mikä saattaa epäonnistua jos kyseessä on käynnissä oleva ohjelma).

Optiot:

-f ei virhettä olemattomista tiedostoista, poista kyselemättä.
-i kysy varmistus käyttäjältä (stdinistä, vaikkei se olisikaan pääte). Jos sekä -f että -i on annettu, viimeinen ratkaisee. Oletuksena -i on päällä jos stdin on pääte ja yritetään poistaa hakemistoa.
-R poista hakemistopuu rekursiivisesti
-r sama kuin -R.

Tiedostoja . ja .. ei voi poistaa.

5.54  rmdir - Remove directories

rmdir [-p] hakemisto...

poistaa tyhjiä hakemistoja (niiden hakemistotietoja, vrt. rm). Optiolla -p poistaa kaikki polun varressa olevat hakemistot (vrt. mkdir -p).

5.55  sed - Stream editor

Esitellään tarkemmin myöhemmin (ks. ).

5.56  sh - Shell, the standard command language interpreter

Komento sh käynnistää uuden shellin. Sille voi antaa set-komennon yhteydessä (4.11) lueteltuja optioita (myös +-merkin kanssa) sekä seuraavia:

-c command Suorittaa argumenttina annetun merkkijonon sisältämän komennon sen sijaan että lukisi komentoja stdinistä. Positioparametrit seuraavat sen jälkeen.
-i Kertoo että shell on interaktiivinen.
-s Lukee komentoja stdinistä (oletus ellei argumentteja ole).

Optioiden -c tai -s puuttuessa ensimmäinen optioita seuraava argumentti tulkitaan komentoja sisältäväksi tiedostoksi. Viivaa (-) ei tässä tulkita stdiniksi vaan se jätetään huomiotta. Loput argumentit asetetaan positioparametreiksi.

5.57  sleep - Suspend execution for an interval

sleep seconds

pysäyttää shellin suorituksen määräajaksi.

Jos sleep saa ALRM-signaalin, se lopettaa normaalisti (exit status 0, shellin suoritus jatkuu).

5.58  sort - Sort, merge, or sequence check text files

Komennolla sort voi tehdä kolme asiaa:

  1. lajitella tiedostoja haluttuun järjestykseen;
  2. yhdistää valmiiksi lajiteltuja tiedostoja; tai
  3. tutkia onko tiedosto oikein lajiteltu.

Syntaksi:

sort [-m] [-o output] [-bdfinru] [-t char] [-k keydef]... [file...]

sort -c [-bdfinru] [-t char] [-k keydef]... [file]

Optiot:

-c Tutkii onko (yksi) tiedosto oikein lajiteltu. Ei tulosta mitään, exit status 0 jos tiedosto on lajiteltu, muuten 1.
-m (merge) Yhdistää tiedostot joiden on oltava valmiiksi järjestyksessä.
-o output Kirjoittaa tuloksen tiedostoon output stdinin asemesta. Tulostiedosto saa olla sama kuin syöttötiedosto (tai yksi niistä).
-u Tulostaa vertailussa samanarvoisista riveistä vain yhden. Option -c kanssa tarkistaa että duplikaatteja ei ole.

-d Vain tyhjät ja aakkosnumeeriset merkit otetaan huomioon ([[:blank:][:alnum:]]).
-f Pienet kirjaimet samaistetaan isoihin.
-i Vain näkyvät merkit otetaan huomioon ([[:graph:]]).
-n Numeerinen avain: kentän alussa olevat numeromerkit (mahdollisesti tyhjän jälkeen) tulkitaan numeroksi (sallittuja numerot, alussa miinusmerkki, desimaalipilkku, tuhansien erotin, riippuu LC_NUMERIC:stä). Tyhjä (tai ei-numeerinen) kenttä tulkitaan nollaksi.
-r Lajittelee laskevaan järjestykseen.

-b Ohittaa alkutyhjät avainkentissä. Ennen ensimmäistä -k:ta vaikuttaa kaikkiin avaimiin, muuten voi liittää erikseen jokaiseen -k:hon.
-t char Merkkiä char käytetään kenttien erottimena (jokainen merkitsevä; oletuksena erotin on tyhjä ja peräkkäisiä ei lasketa erikseen).
-k keydef Lajitteluavain (voi olla monta, merkitsevyysjärjestyksessä), muotoa
alku[tyyppi][,loppu[tyyppi]]
missä alku ja loppu määräävät avaimen alku- ja loppukohdan rivillä ja ovat muotoa n[.p], mikä tarkoittaa kentän n merkkiä p, numerointi ykkösestä alkaen, paitsi lopussa p==0 tarkoittaa kentän viimeistä merkkiä. Merkkimääritysten puuttuessa oletukset ovat alussa 1 ja lopussa 0. Tarkennin tyyppi on jokin kirjaimista b, d, f, i, n ja r ja vaikuttaa kuten vastaava optio mutta vain ko. avaimeen (b erikseen alkuun ja loppuun, muut koko avaimeen). Jos loppu puuttuu avain jatkuu rivin loppuun. Jos yhtään -k-optiota ei ole annettu, avaimena käytetään koko riviä. Erotinmerkkiä ei lasketa mukaan avainkenttään jos -t on annettu, oletuserotin kyllä.

Huomaa että optioiden järjestys on rajoitettu, erityisesti kaikki -k:t on annettava viimeiseksi (joissakin toteutuksissa optiot -bdfinr vaikuttavat vain itsensä jälkeen tuleviin (kaikkiin tai vain seuraavaan) avainmäärityksiin, tai mahdollisesti juuri edelliseen).

Kieliympäristö vaikuttaa kaikkiin lajitteluavaimiin, erityisesti LC_COLLATE mutta myös LC_CTYPE ja LC_NUMERIC.

Aika usein näkee yhä vanhaa syntaksia, jossa option -k asemesta avaimen alku- ja loppukohta annetaan muodossa +alku ja -loppu. Tällöin sekä kentät että merkit niiden sisällä numeroidaan nollasta alkaen ja loppu osoittaa ensimmäistä merkkiä lajitteluavaimen jälkeen. Siis +w.x -y.z on sama kuin -k w+1.x+1,y+1.z jos z>0 tai -k w+1.x+1,y.0 jos z==0.

Seuraavat epästandardit optiot ovat aika yleisiä:

-A ASCII-vertailu (kieliympäristöstä riippumatta);
-T dir Käyttää tilapäisenä hakemistona diriä oletuksen asemesta (joka on yleensä $TMPDIR, /var/tmp tai tmp).
M Vertailee kuukausien nimiä (riippuu LC_TIME:stä, tai sitten ei...).
-z n Riville varataan tilaa n merkkiä (tarpeen vain optioiden -m ja -c kanssa, jos tiedostossa on ylipitkiä rivejä).
-y [kmem] Varaa kmem kilotavua muistia aluksi. Pelkkä -y tarkoittaa maksimia, -y 0 minimiä.

Esim. listataan työhakemiston tiedostot kokojärjestyksessä:
ls -l | sort -k 5,5n

Esim. lajitellaan /etc/passwd ryhmän mukaan ja ryhmien sisällä tunnuksen mukaan:
sort -t: -k 3,3n -k 1,1 /etc/passwd

Esim. tutkitaan onko /etc/passwd järjestetty ID:n mukaan numerojärjestykseen:

if sort -c -t: -k 3,3n /etc/passwd
then echo "passwd properly sorted"
else echo "passwd out of order!"
fi

Esim. lajitellaan kaksi passwd-tiedostoa erikseen ID:n mukaan ja yhdistetään ne sitten:

sort -o passwd1.sorted -t: -k 3,3n passwd1
sort -o passwd2.sorted -t: -k 3,3n passwd2
sort -m -o passwd-both.sorted  -t: -k 3,3n passwd[12].sorted

5.59  stty - Set the options for a terminal

stty [-a|-g]
stty asetuksia...

tulostaa tai asettaa päätteen tai I/O-laitteen linjan tilan.

Optio -a tulostaa asetukset ihmisten luettavaksi tarkoitetussa muodossa, -g muodossa jonka voi myöhemmin antaa stty:lle argumenttina samojen asetusten palauttamiseksi (ja jossa kaikki erikoismerkit esitetään sellaisessa muodossa että niitä ei tarvitse suojata; muoto on järjestelmäkohtainen).

Mahdollisia asetuksia ovat (alkumiinus kääntää merkityksen):

[-]parenb: pariteettibitin generointi ja testaus päälle (pois)
[-]parodd: odd parity (even)
cs[5678]: merkkikoko bitteinä
kokonaisluku n: linjanopeus (baud rate)
ispeed n: syötön nopeus
ospeed n: tulostuksen nopeus
[-]hupcl: modeemilinjat vapautetaan kun laite suljetaan
[-]hup: sama kuin [-]hupcl
[-]cstopb: kaksi (-=yksi) stop bittiä
[-]cread: (laitteen) vastaanotto päälle
[-]clocal: oleta ettei linjalla ole modeemiohjauslinjoja
[-]ignbrk: ohita BREAK-signaali
[-]brkint: generoi SIGINTR BREAKista
[-]ignpar: jätä pariteettivirheet huomiotta
[-]parmrk: merkitse pariteettivirheet
[-]inpck: tarkista priteetti syötöstä
[-]istrip: nollaa pariteettibitti syötöstä
[-]inlcr: muunna rivinvaihto telanpalautukseksi syötössä
[-]igncr: ohita telanpalautus syötössä
[-]icrnl: muunna telanpalautus rivinvaihdoksi syötössä
[-]ixon: reagoi STOP- ja START-merkkeihin
[-]ixoff: generoi STOP- ja START-merkkejä
[-]opost: käsittele tulostus (vs. päästä raakana läpi)
[-]isig: reagoi kontrollimerkkeihin INTR, QUIT, SUSP
[-]icanon: kanoninen syötön tulostus, tulkitsee ERASE ja KILL merkit
[-]iexten: käsittele järjestelmäriippuvat kontrollimerkit (muut kuin START, STOP, ERASE ja KILL)
[-]echo: kaiuta näppäillyt merkit
[-]echoe: kaiuta ERASE (pyyhi merkki näytöstä jos mahdollista)
[-]echok: kaiuta KILL (pyyhi koko rivi näytöstä)
[-]echonl: kaiuta NL (mahd. -echo:sta huolimatta)
[-]noflsh: älä tyhjennä näppäinpuskuria INTRin, QUITin tai SUSPin jälkeen
[-]tostop: lähetä SIGTTOU taustatulostukselle
evenp|parity: sama kuin parenb cs7 -parodd
oddp: sama kuin parenb cs7 parodd
nl: sama kuin icrnl
-nl: sama kuin -icrnl -inclr -igncr
ek: ERASE ja KILL oletusarvoiksi
sane: kaikki arvot ''järkeviksi'' oletusarvoiksi
min n, time n: ohjaavat merkkien puskurointia ei-kanonisessa syötössä
control-char string: Asettaa arvon jollekin seuraavista kontrollimerkeistä:

eof: end-of-file
eol: end-of-line
erase: peruutus
intr: pehmeä keskeytys (SIGNIT)
kill: kova keskeytys (SIGKILL)
quit: lopetus (SIGQUIT)
susp: prosessin pysäytys (SIGTSTP)
start: tulostuksen jatko (IXON)
stop: tulostuksen pysäytys (IXOFF)

ja mahdollisia arvoja ovat normaalit merkit sekä ^ ja jokin merkki vastaavan kontrollimerkin symbolina (esim. ^ r on control-r). Lisäksi erityisesti ^ - ja undef tarkoittavat ko. kontrollimerkin kytkemistä kokonaan pois.

Toiminta on sangen järjestelmäriippuvaista, osa on mielekkäitä vain tietyntyyppisille laitteille jne, ja useissa järjestelmissä on myös muita kuin edellä lueteltuja asetuksia.

Huomaa että stty vaikuttaa stdiniin, joten laite valitaan tarvittaessa sen uudelleensuuntauksella.

Esim. jos modeemin laitetiedosto on /dev/modem ja sille halutaan linjanopeudeksi 38400 bps:
stty 38400 </dev/modem

5.60  tail - Copy the last part of a file

tail [-f] [-c num | -n num] [tiedosto]

tulostaa oletuksena 10 viimeistä riviä tiedostosta (tai stdinistä).

Optiot:

-c num Tulostuksen aloituskohta tavuina: +num tarkoittaa rivejä tiedoston alusta laskien, -num tai etumerkitön num tiedoston lopusta, numerointi alkaen ykkösestä.
-n num Tulostuksen aloituskohta riveinä, num kuten -c:llä
-f Älä lopeta tiedoston loppuessa vaan odota jatkoa. Ei toimi putkien kanssa.

Vanha syntaksi: tail [+-][num][c|l][f] [tiedosto]
+numc on sama kuin uudessa -c +num,
+num[l] sama kuin -n +num
ja vastaavasti miinukselle, suffiksi f = -f.

Esim. halutaan tiedostosta rivit 3-5:

tail -n +3 "$file" | head -n 3

head -n 5 "$file" | tail -n -3
Jälkimmäinen on teoriassa nopeampi (miksi?).

Vrt. myös sed -n 3,5p "$file" ja awk 'NR==3,NR==5' "$file".

5.61  tee - Duplicate standard input

tee [-ai] [tiedosto...]

kopioi stdinin (mahdollisesti useaan) tiedostoon.

Optiot:

-a Kirjoittaa tiedosto(je)n loppuun eikä päälle
-i Ei reagoi SIGINT-signaaliin

Esim. halutaan /etc/passwd-tiedostosta tunnukset, UID:t ja nimet sekä alkuperäisessä järjestyksessä että UID:n mukaan lajiteltuina:

cut -d: -f 1,3,5 /etc/passwd |
 tee list1 |
 sort -t: -k2,2 -o list1.sorted

5.62  test - Evaluate expression

Ks. .

5.63  touch - Change file access and modification times

touch [-acm] [ -r referenssi | -t time ] tiedosto...

muuttaa tiedostojen aikaleimoja. Optiot:

-a muuttaa käyttöaikaa (access time).
-m muuttaa muutosaikaa (modification time).
-c ei luo tiedostoa ellei se ole ennestään olemassa (eikä aiheuta virhettä).
-r referenssi käyttää aikana tiedoston referenssi aikaleimoja kellonajan asemesta.
-t [[CC]YY]MMDDhhmm[.SS] käyttää annettua aikaa kellonajan asemesta. Vuosiluvun CCYY puuttuessa olettaa kuluvan vuoden, vuosisadan CC puuttuessa oletus on 19 jos YY > = 69 ja 20 jos YY < = 68.

Jos kumpaakaan optioista -a ja -m ei ole annettu, tulos on sama kuin jos ne molemmat olisi annettu. Jos kumpaakaan optioista -t ja -r ei ole annettu, aikana käytetään suoritushetken kellonaikaa.

Vanha syntaksi: touch [-acm] [MMDDhhmm[yy]] tiedosto...

Huom. jos tiedoston nimi on tulkittavissa vanhanmalliseksi aikaleimaksi eikä -t tai -r -optioita käytetä, on tiedostonimen eteen syytä laittaa --.

Esim. asetetaan tiedoston /tmp/x luontiajaksi 19.1.2038 kello 04:53:
touch -t 203801190453 /tmp/x

Esim. etsittävä hakemistopuusta tiedostot joita on muutettu tänään puolenyön jälkeen:

touch -t $(date +%Y%m%d0000) /tmp/.marker$$
find . -type f -newer /tmp/.marker$$
rm /tmp/.marker$$

5.64  tr - Translate characters

tr [-cs] string1 string2
tr -s [-c] string1
tr -d [-c] string1
tr -ds [-c] string1 string2

muuttaa tai poistaa merkkejä stdinistä. Oletuksena (ilman optiota -d), tr korvaa jokaisen string1:n merkin string2:n vastaavalla merkillä. Merkkijonojen string1 ja string2 on tällöin oltava yhtä pitkiä (mahdollisten erikoismerkki- ym tulkintojen jälkeen).

Optiot:

-c käännä string1 komplementikseen (aakkosjärjestyksessä) (kaikki merkit joita siinä ei esiinny).
-d poista valitut merkit
-s korvaa monta peräkkäistä samaa merkkiä yhdellä

Jos sekä -d että -s on annettu, string1:tä käytetään -d:n ja string2:ta -s:n kanssa.

Erikoismerkkejä voi esittää seuraavilla tavoilla:

\nnn missä nnn on enintään kolmenumeroinen oktaaliluku
\c merkkiä c vastaava kontrollimerkki (ks. taulukko alla)
c-c merkkiväli (ks. 4.6.2).
[:class:] merkkiluokka (ks. 4.6.2), levitetään aakkosjärjestyksessä. Sallittu vain string1:ssä, paitsi että siinä olevaa [:lower:] luokkaa vastaavalla paikalla string2:ssa saa olla [:upper:] ja päinvastoin.
[=equiv=] lajitteluekvivalenssiluokka (ks. 4.6.2), levitetään määrittelemättömässä järjestyksessä (järkevä vain -d:n tai -s:n kanssa). Sallittu vain string1:ssä ellei ole annettu molempia optioita -d ja -s.
[x*n] merkki x toistettuna n kertaa. Sallittu vain string2:ssa. Jos n puuttuu tai on nolla, se tulkitaan niin isoksi että se venyttää string2:n yhtä pitkäksi kuin string1. Jos n alkaa nollalla se tulkitaan oktaaliluvuksi, muuten desimaali-.

Kontrollimerkit, joille on \c-esitys:

merkkiyhdistelmä kontrollimerkki merkitys
\\ \
\a control-G < alert >
\b control-H < backspace >
\f control-L < formfeed >
\n control-J < newline >
\r control-M < carriage return >
\t control-I < tab >
\v control-K < vertical tab >

Huom. tr ei huoli tiedostoargumenttia, tarvittaessa käytä uudelleensuuntausta.

Esim. Muutetaan åäö-kirjaimet a:ksi ja o:ksi:
tr åäöÅÄÖ aaoAAO

Esim. Vaihdetaan a:t ja b:t keskenään:
tr aAbB bBaA

Muutetaan pienet kirjaimet isoiksi:
tr '[:lower:]' '[:upper:]'

Muutetaan pienet kirjaimet isoiksi ja isot pieniksi:
tr '[:lower:][:upper:]' '[:upper:][:lower:]'

Poistetaan tiedostosta kontrollimerkit:
tr -d '[:cntrl:]'

Poistetaan kaikki näkymättömät kontrollimerkit (mutta ei rivinvaihtoa eikä tabulaattoreita):
tr -dc '[:print:][:space:]'

Poistetaan kaikki muut merkit kuin kirjaimet, numerot ja 'normaalit' välimerkit:
tr -dc '[:alnum:] .,:;?!()\n'

Poistetaan kaikki muut merkit kuin kirjaimet, numerot ja käytetyssä kieliympäristössä määritellyt välimerkit ja tyhjät:
tr -dc '[:alnum:][:punct:][:space:]'

Muutetaan MS-DOS- tai Windows-ympäristöstä peräisin oleva tekstitiedosto Unix-muotoon eli poistetaan telanpalautukset:
tr -d '\r'

Poistetaan moninkertaiset välilyönnit (korvataan yhdellä):
tr -s ' '

Poistetaan aksentit niiden vokaalien päältä joissa se ei vaikuta aakkosjärjestykseen:
tr '[=a=][=e=][=i=][=o=][=u=][=y=][=A=][=E=][=I=][=O=][=U=][=Y=]' 'aeiouyAEIOUY'

Muutetaan kaikki kokonaisluvut X:ksi:
tr -s '0-9' '[X*]'

Tulostetaan tiedostossa olevat sanat (kirjaimista koostuvat) yksi per rivi:
tr -cs '[:alpha:]' '[\n*]'

Huom. SystemV:n tr vaatii hakasulut merkkivälin ympärille, ja monet nykyisetkin versiot tulkitsevat ne siinä syntaksiin kuuluviksi (eivätkä muuta hakasulkuja). Tästä seuraa ongelmia jos hakasulkuja pitää muuttaa, esim.
tr '[a-z]' '{A-Z}'
on vaarallinen; parempi vaihtoehto on
tr '[]a-z' '{}A-Z'

5.65  true - Return true value

Palauttaa exit statuksen nolla.

Yleensä : ajaa saman asian ja voi olla nopeampi, mutta true voi olla luettavampi.

5.66  tty - Return user's terminal name

tty [-s]

Tulostaa stdiniä vastaavan laitetiedoston nimen, jos se on pääte. Optiolla -s ei tulosta mitään.

Exit status on 0 jos stdin on pääte, muuten 1. (Vrt. test -t 0).

5.67  umask - Get or set the file mode creation mask

umask [-S] [mask]

asettaa tai näyttää tiedostojen luonnissa käytettävät oletussuojaukset. Optiolla -S tulostus on symbolisessa muodossa, muuten oktaalilukuna.

Asetettaessa symbolisessa muodossa syntaksi on kuten chmod-komennossa ja ilmoittaa sallitut oikeudet, muut poistetaan (mutta sellaisia joita ei muutenkaan tulisi ei lisätä).

Oktaalimuodossa puolestaan annetaan ne oikeudet jotka poistetaan (ts. argumenttia käytetään bittimaskina suojausbiteille).

Esim. asetetaan oletussuojaus niin että kaikki voivat lukea ja suorittaa tiedostoja mutta vain omistaja voi muuttaa niitä:

umask 022
umask u=rwx,og=rx

Tai niin että vain omistaja voi tehdä yhtään mitään:

umask 077
umask u=rwx,og=

5.68  uname - Return system name

uname [-amnrsv]

tulostaa tietoja käyttöjärjestelmästä, ilman optioita sen nimen.

Optiot:

-m: tulostaa laitteiston tyypin
-n: tulostaa koneen nimen
-r: tulostaa käyttöjärjestelmän pääversion (release level)
-s: tulostaa käyttöjärjestelmän nimen
-v: tulostaa käyttöjärjestelmätoteutuksen version
-a: sama kuin -mnrsv

Esim. Linux-järjestelmistä usein puuttuu standardikomento mailx, mutta mail tuntee sen optiot, joten voidaan tehdä näin:

case "$(uname -s)" in 
	Linux) mailx() { mail "$@" ; } ;;
esac

5.69  uniq - Report or filter out repeated lines in a file

uniq [-c|-d|-u] [-f fields] [-s chars] [infile [outfile]]

poistaa oletuksena duplikaattirivit (peräkkäisistä identtisistä riveistä jättää yhden).

Optiot:

-c: tulosta joka rivin alkuun sen esiintymiskertojen määrä
-d: tulosta vain duplikaattirivit (kerran)
-f fields: ohita ensimmäiset fields kenttää joka riviltä vertailussa. Kenttien erottimina käytetään tyhjää.
-s chars: ohita ensimmäiset chars (kokonaisluku) merkkiä vertailussa.
-u: älä tulosta duplikaattirivejä lainkaan

Vanha syntaksi: -n on sama kuin -f n, +n sama kuin -s n.

5.70  wait - Await process completion

wait [pid...]

odottaa lapsiprosessi(e)n päättymistä, ilman argumentteja kaikkien, muuten vain niiden joiden PID on annettu.

Exit status sama kuin viimeisenä annetun lapsiprosessin, tai jos se keskeytyi signaalin takia signaalinumero+128, tai 0 jos argumentteja ei annettu eikä lapsiprosesseja ollut, tai 127 jos viimeistä annettua PIDiä vastaavaa prosessia ei ollut.

5.71  wc - Word, line, and byte count

wc [-clw] [tiedosto...]

laskee tiedostossa olevien tavujen, sanojen ja rivien määrät. Optiot:

-c: tulosta tavumäärä
-l: tulosta rivimäärä (rivinvaihtojen määrä)
-w: tulosta sanamäärä (tyhjällä rajatut)

Jos mitään optioita ei ole annettu, tulostaa sekä rivit, sanat että tavut.

Jos tiedostoargumentteja on useita, tulostaa sekä tiedostokohtaiset tulokset että yhteismäärät.

Esim. Etsittävä rekursiivisesti $HOME:n alta 10 rivimäärältään suurinta .c-loppuista tiedostoa:

find ~ -type f -name '*.c' -exec wc -l {} \; | sort -n | tail

5.72  xargs - Construct argument list(s) and invoke utility

xargs [-t] [-n num] [-s size] [command [args]]

lukee tyhjällä tai rivinvaihdoilla eroteltuja argumentteja stdinistä ja suorittaa annetun komennon niin monta kertaa kuin tarvitaan että se saa kerralla enintään halutun määrän argumentteja.

Optiot:

-n num käytä num argumenttia kerralla (tai vähemmän jos -s tulee ensin vastaan tai viimeisellä kerralla on vähemmän jäljellä)
-s size käytä kerralla niin monta argumenttia kuin mahtuu size tavun mittaiselle komentoriville (vähemmän jos -n tulee ensin vastaan tai viimeisellä kerralla on vähemmän jäljellä)
-t tulosta suoritettavat komennot ennen suoritusta stderr'iin
-x lopeta jos -n:ää argumenttia ei saada mahtumaan -s:n (tai järjestelmän maksimin) mittaiselle riville

Jos kumpaakaan optioista -n ja -s ei ole annettu, vaikutus on kuin -s ARG_MAX - 2048.

Jos komento palauttaa statuksen 255 tai kaatuu signaaliin, xargs lopettaa siihen.

Tyhjiä argumenteissa voi suojata lainausmerkeillä (ei rivinvaihtoja) ja mitä tahansa voi suojata kenoviivalla (eroaa shellistä tässä!).

Exit status on 126 jos komento löytyi mutta sitä ei voitu suorittaa, 127 jos sitä ei löytynyt, 1-125 jos tapahtui muu virhe.

Erityisen tarpeen xargs on siksi, että jotkin komennot eivät ymmärrä kuin tietyn määrän argumentteja ja shellin komentorivilläkin on rajallinen pituus.

Esim. poistetaan kaikki core-nimiset tiedostot /home'n alta:
find /home -type f -name core | xargs rm -f
on paljon nopeampi kuin
find /home -type f -name core -exec rm -f {}

Olennaisesti saman tekee myös
rm -f $(find /home -type f -name core)
mutta jos tiedostoja löytyy paljon, tämä kaatuu.

Yleensäkin ... | xargs on parempi kuin for... in $(...) aina kun argumenttien määrä vaihtelee ennustamattomasti. Erityisesti for i in $(find...) tai for i in $(cat...) on yleensä aina huono idea.

Jos argumenttikokoelma on valmiina tiedostossa tai luettavissa stdin'istä, xargs tarjoaa helpon tavan yksinkertaisen silmukan tekoon. Vertaa seuraavia:

for i in $(cat "$file") ;do
  ./myprog "$i"
done

while read line ;do
  ./myprog "$line"
done <"$file"

xargs -n 1 ./myprog <"$file"

Huom. xargs tulkitsee siis sekä rivinvaihtot että suojaamattomat välilyönnit argumenttien erottimiksi. Jos syöte on epäilyttävästä lähteestä, kannattaa olla varovainen.

Seuraava: 6. *grep & regular expressions
Edellinen: 5.26-5.43 Standardikomennot G-M


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