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'
od [-v] [-A base] [-j skip] [N count] [-t type] file(s)
tulostaa tiedoston (tai stdinin) halutussa formaatissa. Optiot:
Optioiden puuttuessa oletus on -t o2.
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:
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.
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ä
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:
Jos omistaja tai ryhmä vaihtuu, setuid- ja setgid-bitit nollataan.
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.
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:
Nykyisin pr-komennolle on suhteellisen vähän tarvetta, vastaavat toiminnot tehdään erilaisilla ASCII-to-PostScript- ohjelmilla.
Ks. .
Tulostaa työhakemiston nimen. (Ksh:ssa se on myös muuttujassa PWD.)
Ks. .
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:
Tiedostoja . ja .. ei voi poistaa.
rmdir [-p] hakemisto...
poistaa tyhjiä hakemistoja (niiden hakemistotietoja, vrt. rm). Optiolla -p poistaa kaikki polun varressa olevat hakemistot (vrt. mkdir -p).
Esitellään tarkemmin myöhemmin (ks. ).
Komento sh käynnistää uuden shellin. Sille voi antaa set-komennon yhteydessä (4.11) lueteltuja optioita (myös +-merkin kanssa) sekä seuraavia:
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.
sleep seconds
pysäyttää shellin suorituksen määräajaksi.
Jos sleep saa ALRM-signaalin, se lopettaa normaalisti (exit status 0, shellin suoritus jatkuu).
Komennolla sort voi tehdä kolme asiaa:
Syntaksi:
sort [-m] [-o output] [-bdfinru] [-t char] [-k keydef]... [file...]
sort -c [-bdfinru] [-t char] [-k keydef]... [file]
Optiot:
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ä:
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
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):
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
tail [-f] [-c num | -n num] [tiedosto]
tulostaa oletuksena 10 viimeistä riviä tiedostosta (tai stdinistä).
Optiot:
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 -3Jälkimmäinen on teoriassa nopeampi (miksi?).
Vrt. myös sed -n 3,5p "$file" ja awk 'NR==3,NR==5' "$file".
tee [-ai] [tiedosto...]
kopioi stdinin (mahdollisesti useaan) tiedostoon.
Optiot:
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
Ks. .
touch [-acm] [ -r referenssi | -t time ] tiedosto...
muuttaa tiedostojen aikaleimoja. Optiot:
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$$
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:
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:
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'
Palauttaa exit statuksen nolla.
Yleensä : ajaa saman asian ja voi olla nopeampi, mutta true voi olla luettavampi.
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).
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=
uname [-amnrsv]
tulostaa tietoja käyttöjärjestelmästä, ilman optioita sen nimen.
Optiot:
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
uniq [-c|-d|-u] [-f fields] [-s chars] [infile [outfile]]
poistaa oletuksena duplikaattirivit (peräkkäisistä identtisistä riveistä jättää yhden).
Optiot:
Vanha syntaksi: -n on sama kuin -f n, +n sama kuin -s n.
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.
wc [-clw] [tiedosto...]
laskee tiedostossa olevien tavujen, sanojen ja rivien määrät. Optiot:
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
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:
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