5.26 getconf - Get configuration values
getconf system_var
getconf path_var pathname
palauttaa systeemi- tai polkumuuttujan arvon, millä
tässä tarkoitetaan järjestelmäriippuvia (raja-)arvoja
ja vakioita, jälkimmäiset lisäksi tiedosto(järjestelmä)riippuvia.
Jos kysytty muuttuja on sallittu muttei määritelty
tässä järjestelmässä, tulos on merkkijono ``undefined''.
Exit status on nolla jos muuttuja on sallittu, muutoin yksi.
POSIX määrittelee seuraavat systeemimuuttujat:
- ARG_MAX
maximum length of arguments for running a program, in bytes,
including environment data.
- CHILD_MAX
maximum number of simultaneous processes allowed per real user.
- CLK_TCK
number of intervals per second in machine clock (optional).
- NGROUPS_MAX
number of simultaneous group IDs per process.
- OPEN_MAX
maximum number of open files at any time per process.
- STREAM_MAX
maximum number of streams that one process can have open at one time.
- TZNAME_MAX
maximum number of bytes supported for the name of a time zone (not of the
TZ variable).
- _POSIX_ARG_MAX
minimum conforming value for ARG_MAX.
- _POSIX_CHILD_MAX
minimum conforming value for CHILD_MAX.
- _POSIX_JOB_CONTROL
POSIX job control supported.
- _POSIX_LINK_MAX
minimum conforming value for LINK_MAX.
- _POSIX_MAX_CANON
minimum conforming value for MAX_CANON.
- _POSIX_MAX_INPUT
minimum conforming value for MAX_INPUT.
- _POSIX_NAME_MAX
minimum conforming value for NAME_MAX.
- _POSIX_NGROUPS_MAX
minimum conforming value for NGROUPS_MAX.
- _POSIX_OPEN_MAX
minimum conforming value for OPEN_MAX.
- _POSIX_PATH_MAX
minimum conforming value for PATH_MAX.
- _POSIX_PIPE_BUF
minimum conforming value for PIPE_BUF.
- _POSIX_SAVED_IDS
processes have saved set-user-ID and saved set-group-ID.
- _POSIX_SSIZE_MAX
value that can be stored in an object of type ssize_t.
- _POSIX_STREAM_MAX
minimum conforming value for STREAM_MAX.
- _POSIX_TZNAME_MAX
minimum conforming value for TZNAME_MAX.
- _POSIX_VERSION
gives version of POSIX adhered to in this release.
- BC_BASE_MAX
maximum ibase and obase values for the bc command.
- BC_DIM_MAX
maximum number of elements permitted in a bc array.
- BC_SCALE_MAX
maximum scale size allowed in bc.
- BC_STRING_MAX
maximum number of characters in a string in bc.
- COLL_WEIGHTS_MAX
maximum number of weights assignable to an entry of the
LC_COLLATE order keyword.
- EXPR_NEST_MAX
maximum number of expressions that you can nest inside
parentheses in an expression evaluated by expr.
- LINE_MAX
maximum number of characters that a utility can accept as an input line
(either from the standard input or a text file) when the utility takes
text files as input.
This number includes the trailing newline.
- PATH
standard PATH setting.
- RE_DUP_MAX
maximum number of repeated occurrences of a regular expression when using
the interval notation {m,n}
(see regexp).
- POSIX2_C_BIND
indicates whether the system supports the C Language Bindings Option.
- POSIX2_C_DEV
indicates whether the system supports the C Language Development Utilities
Option.
- POSIX2_FORT_DEV
indicates whether the system supports the FORTRAN Development Utilities Option.
- POSIX2_FORT_RUN
indicates whether the system supports the FORTRAN Runtime Utilities Option.
- POSIX2_LOCALEDEF
indicates whether the system supports the creation of locales.
- POSIX2_SW_DEV
indicates whether the system supports the Software Development Utilities
Option.
- POSIX2_CHAR_TERM
indicates whether the system supports at least one terminal type capable
of all operations necessary for the User Portability Utilities. Only
on if POSIX2_UPE is on.
- POSIX2_UPE
indicates whether the system supports the User Portability Utilities Option.
- POSIX2_VERSION
gives the version of POSIX.2 adhered to in this release.
- POSIX2_BC_BASE_MAX
minimum conforming value for BC_BASE_MAX.
- POSIX2_BC_DIM_MAX
minimum conforming value for BC_DIM_MAX.
- POSIX2_BC_SCALE_MAX
minimum conforming value for BC_SCALE_MAX.
- POSIX2_BC_STRING_MAX
minimum conforming value for BC_STRING_MAX.
- POSIX2_COLL_WEIGHTS_MAX
minimum conforming value for EQUIV_CLASS_MAX.
- POSIX2_EXPR_NEST_MAX
minimum conforming value for EXPR_NEST_MAX.
- POSIX2_LINE_MAX
minimum conforming value for LINE_MAX.
- POSIX2_RE_DUP_MAX
minimum conforming value for RE_DUP_MAX.
ja seuraavat polkumuuttujat:
- LINK_MAX
maximum number of links that this file can have.
- MAX_CANON
maximum number of bytes in the terminal's canonical input
queue (before line editing).
- MAX_INPUT
space available in terminal input queue.
- NAME_MAX
largest file name size.
- PATH_MAX
maximum number of bytes in a path name.
- PIPE_BUF
largest atomic write to a pipe.
- _POSIX_CHOWN_RESTRICTED
restrictions apply to file ownership changes.
- _POSIX_NO_TRUNC
if set, it is an error for any path name component to be longer than
NAME_MAX bytes.
- _POSIX_VDISABLE
processes are allowed to disable terminal special characters.
Eri järjestelmissä getconf voi tuntea muitakin muuttujia, mutta
sellaisia käytettäessä on syytä varautua sekä tulokseen
''undefined'' että virheeseen. Itse asiassa siihen on syytä varautua
yllämainittujenkin kanssa, erityisesti SSIZE_MAX,
_POSIX_SSIZE_MAX,
STREAM_MAX,
_POSIX_STREAM_MAX,
TZNAME_MAX
ja _POSIX_TZNAME_MAX eivät olleet mukana
alkuperäisessä POSIX.1-standardissa ja saattavat puuttua
joistakin järjestelmistä.
Muutenkaan tuloksiin ei aina kannata sokeasti luottaa, vaan ''sanity
check'' on aina paikallaan.
5.27 getopts - Parse utility options
Yleinen optionkäsittelijä, jolla saa
standardinmukaiset optiot shell-skripteihin.
Useimmat standardikomennot noudattavat seuraavia sääntöjä
optioiden ja argumenttien käsittelyssä:
- Optionimet ovat yksikirjaimisia, isot ja pienet kirjaimet
erillisiä, myös numerot sallittuja mutta muut merkit eivät.
- Optiot alkavat tavuviivalla (-).
- Argumentittomia optioita saa yhdistellä yhden tavuviivan perään.
- Argumentillisten optioiden pitää olla erillisiä ja sen argumentin
pitää olla pakollinen. Optio pitäisi erottaa argumentistaan tyhjällä.
(Tähän on historiallisista syistä paljon poikkeuksia. Tyhjä on kuitenkin
aina sallittu, vaikka monet komennot eivät sitä vaadikaan.)
- Jos optio tarvitsee useita argumentteja ne pitää antaa
yhtenä merkkijonona pilkuilla tai välilyönnillä erotettuina.
- Optiot pitää antaa komentorivillä ennen komennon argumentteja.
- Optiolistan voi lopettaa argumentilla ''--''.
- Optioiden keskinäisellä järjestyksellä ei pitäisi olla merkitystä.
- Argumenttien keskinäisellä järjestyksellä voi olla merkitys.
- Tiedostoargumenttina ''-'' tarkoittaa standard inputia
tai standard outputia.
Näiden sääntöjen mukaisen optiokäsittelyn saa tehtyä getoptsilla
seuraavasti: joka kerta kutsuttaessa
getopts optstring varname [arg...]
tutkii onko seuraava optiokirjain merkkijonossa optstring ja
jos on, asettaa sen muuttujaan varname.
Sen lisäksi se asettaa muuttujaan OPTIND seuraavan option
järjestysluvun (shellin käynnistyessä OPTIND alustetaan 1:ksi)
ja jos optiokirjaimen perässä optstringissä on kaksoispiste,
option argumentin muuttujaan OPTARG.
Kun optiot loppuvat, getopts palauttaa nollasta eroavan
statuksen, ja OPTIND osoittaa ensimmäiseen ei-optio-argumenttiin
komentorivillä (mahdollisen --:n ohi).
Jos optiokirjainta ei ole optstringissä, getopts asettaa
varname:een kysymysmerkin. Jos lisäksi optstring alkaa
kaksoispisteellä, tallettaa optiokirjaimen muuttujaan OPTARG,
muutoin aiheutuu virheilmoitus (mutta getoptsin exit status
on silti nolla).
Jos optiokirjaimen perässä optstringissä on kaksoispiste mutta
optiolle ei ole annettu argumenttia, aiheuttaa virheilmoituksen paitsi
jos optstringin alussa on kaksoispiste, jolloin
varnameen sijoitetaan kaksoispiste ja optiokirjain muuttujaan
OPTARG.
Jos getoptsille annetaan argumentteja optstringin
ja varnamen lisäksi, se tutkii niitä positioparametrien asemesta.
Esimerkki: skripti ymmärtää optiot -a, -b ja
-f tiedosto, ja haluaa niiden perään yhden
argumentin:
opta=
optb=
file=
while getopts :abf: opt ;do
case $opt in
a) opta=1 ;;
b) optb=1 ;;
f) file="$OPTARG" ;;
?) printf "%s: invalid option %s\n" "$0" "$OPTARG"
exit 1 ;;
esac
done
shift $((OPTIND - 1))
case $# in
0) printf "%s: argument missing\n", "$0"
exit 2 ;;
1) arg="$1" ;;
*) printf "%s: too many arguments\n", "$0"
exit 3 ;;
esac
...
5.28 grep - File pattern searcher
Esitellään tarkemmin myöhemmin ().
5.29 head - Copy the first part of files
head [-n number] [file(s)]
head [-number] [file(s)]
tulostaa tiedostoista tai stdinistä number
(oletus 10) ensimmäistä riviä. Alempi syntaksi
on vanha ja virallisesti epäsuosiossa.
Jos argumentteja on useita, tulostaa alkurivit
kustakin tiedostosta erikseen tiedostonimien kera.
5.30 id - Return user identity
id [-G|-g|-u] [-nr] [user]
tulostaa käyttäjän UID:n ja ryhmät.
Optiot:
- -G tulosta vain ryhmät
- -g tulosta vain EGID
- -n tulosta numeerisen UID:n asemesta käyttäjätunnus
- -r tulosta todellinen (real) ID vaikuttavan (EID) asemesta
- -u tulosta vain UID
5.31 join - Relational database operator
join [-a n | -v n] [-e s] [-o list] [-t char]
[-1 f1] [-2 f2] file1 file2
yhdistää kaksi tiedostoa yhteisen avainsarakkeen perusteella.
Tiedostojen on oltava valmiiksi lajiteltuja ko. sarakkeen
mukaan (kuten sort -b tekisi).
Oletuksena tulostaa ensin ensimmäisen avainsarakkeen,
sitten ensimmäisen tiedoston vastaavan rivin muut sarakkeet
ja sitten toisen tiedoston muut sarakkeet.
Sarakkeiden erottimena on oletuksena tyhjä (ja monta
peräkkäistä tyhjää lasketaan yhdeksi), ja alkutyhjiä
ei oteta huomioon.
Seuraavassa ''vastineeton rivi'' tarkoittaa riviä, jolle ei
löydy vastinetta (riviä jolla olisi sama avainsarake)
toisesta tiedostosta.
Optiot:
- -a n tulosta vastineettomat rivit tiedostosta
n, missä n on 1 tai 2.
Jos sekä -a 1 että -a 2 on
annettu, tulostaa kaikki vastineettomat rivit.
- -e string korvaa tyhjät kentät merkkijonolla
string.
- -o list määrittää mitkä sarakkeet tulostetaan ja
missä järjestyksessä. Sarakemääritykset ovat muotoa n.f,
missä n on tiedostonumero (1 tai 2) ja f sarakenumero,
ja niitä voi olla mielivaltainen määrä pilkulla tai tyhjällä
erotettuna.
- -t char käytä kentän erottimena merkkiä char,
sekä syötössä että tulostuksessa. Tätä käytettäessä tiedostojen
lajittelujärjestyksen pitäisi olla sama kuin sortin
ilman -b-optiota.
- -v n tulosta vain (normaalin
tulostuksen asemesta) vastineettomat rivit tiedostosta n, missä
n on 1 tai 2. Jos sekä -v 1 että -v 2 on
annettu, tulostaa kaikki vastineettomat rivit.
- -1 f käytä avainsarakkeena ensimmäisestä
tiedostosta saraketta f (kokonaisluku 1...).
- -2 f käytä avainsarakkeena toisesta
tiedostosta saraketta f.
Seuraavat optiot ovat virallisesti ''obsolete'' mutta
käytännössä toimivat yhteensopivuussyistä lähes kaikkialla.
Uusissa skripteissä niitä ei kuitenkaan tulisi käyttää:
- -j1 f sama kuin -1 f.
- -j2 f sama kuin -2 f.
- -j f sama kuin -1 f -2 f .
5.32 kill - Terminate or signal processes
kill -s signaalinimi pid...
kill -l [signaalinumero]
kill -[SIGsignaalinimi|signaalinumero] pid...
Lähettää prosess(e)ille halutun signaalin.
Viimeinen syntaksi on virallisesti vanhentunut,
mutta toimii käytännössä kaikkialla.
Jos signaalia ei anneta komentorivillä, oletus on SIGTERM.
Optio -l tulostaa kaikki järjestelmän tuntemat signaalit,
tai annettua numeroa vastaavan signaalin nimen.
Signaali voi olla jokin seuraavista (etuliitettä
SIG ei tarvita option -s kanssa),
suluissa numeroarvot niille joille ne on standardoitu
(kaikille löytyy kyllä numero joka järjestelmästä mutta
muut vaihtelevat):
- 0 null signal3
- SIGHUP (1) hangup1
- SIGINT (2) terminal interrupt 1
- SIGQUIT (3) terminal quit2
- SIGABRT (6) abort2
- SIGKILL (9) kill (cannot be caught or ignored)2
- SIGALRM (14) alarm clock1
- SIGTERM (15) software termination1
- SIGILL illegal instruction1
- SIGTRAP trace/breakpoint trap2
- SIGFPE floating point exception2
- SIGUSR1 user defined signal 11
- SIGSEGV segmentation violation2
- SIGUSR2 user defined signal 21
- SIGPIPE write on a pipe with no one to read it1
- SIGCHLD child process terminated or stopped3
- SIGCONT continue if stopped5
- SIGSTOP stop signal (cannot be caught or ignored)4
- SIGTSTP interactive stop signal4
- SIGTTIN background process wants to read4
- SIGTTOU background process wants to write4
Oletustoiminta jos prosessi ei ota signaalia kiinni:
1 prosessi lopetetaan epänormaalisti, siivotaan
kuten _exit()
2 prosessi lopetetaan epänormaalisti, järjestelmäkohtaisin
seurauksin (core dump)
3 ei vaikutusta
4 prosessi pysäytetään
5 jos prosessi on pysähtynyt sen suoritusta jatketaan,
muuten ei vaikutusta.
Exit status on nolla jos ainakin yksi prosessi käsitteli signaalin,
muutoin > 0.
Niinpä
kill -0 pid
sopii prosessin olemassaolon testaamiseen.
Useimmista järjestelmistä löytyy muitakin, epästandardeja
signaaleja, esim.
- SIGBUS Bus error
- SIGPOLL Pollable event
- SIGPROF Profiling timer expired
- SIGPWR Power fail/restart
- SIGSYS Bad system call
- SIGURG High bandwidth data is available at a socket
- SIGVTALRM Virtual timer expired
- SIGWINCH Window size change
- SIGXCPU CPU time limit exceeded
- SIGXFSZ File size limit exceeded
5.33 ln - Link files
ln [-f] [-s] tiedosto(t) kohde
''Linkittää'' tiedostoja, ts. luo niille uuden hakemistotiedon
(link()).
Jos linkitettäviä tiedostoja on useampia, kohteen on oltava
ennestään olemassa oleva hakemisto, ja linkki tehdään sen alle
alkuperäisellä nimellä. Joka tapauksessa kohteen on oltava
samassa tiedostojärjestelmässä eikä hakemistoa voi linkittää,
ellei optiota -s ole käytetty.
Jos kohdetiedosto on olemassa, aiheutuu virhe paitsi jos
optio -f on annettu, jolloin se yritetään ensin
poistaa (unlink() - ei onnistu hakemistolle).
Hakemistolle ei voi tehdä linkkiä.
POSIX.2 ei itse asiassa määritellyt symbolisia linkkejä lainkaan,
eikä niitä varsinkaan ei-Unixmaisissa POSIX-järjestelmissä
useinkaan ole, mutta kaikissa moderneissa Unixeissa kylläkin.
Symbolinen linkki on osoitin tiedoston nimeen
(tavallinen tai ''hard'' linkki osoittaa inodeen,
eikä itse asiassa eroa alkuperäisestä nimestä mitenkään),
ja voi siten osoittaa tiedostojärjestelmästä toiseen.
Symbolinen linkki voi myös osoittaa hakemistoon tai
vaikka tiedostoon jota ei edes ole olemassa, ja
alkuperäisen tiedoston nimen vaihtuessa se hukkaa sen.
Saadessaan argumenttina symbolisen linkin lähes kaikki
komennot käyttävät tiedostoa johon se viittaa
(poikkeuksena erityisesti rm).
5.34 locale - Get locale-specific information
locale [-a | -m]
locale [-ck] name...
palauttaa tietoja paikallisesta kieliympäristöstä
(locale, kieli- ja maa-valinta).
Ilman optioita tulostaa voimassa olevat asetukset,
ilman argumentteja yhteenvedon
(ts. LC_*- ja LANG-muuttujien arvot),
jos argumentteja on annettu, tulostaa niitä vastaavat
asetukset. Argumentti voi olla kategoria (LC_*),
jolloin tulostetaan kaikki siihen kuuluvat asetukset,
tai avainsana joka vastaa jotakin asetusta.
Optiot:
- -a tulosta lista järjestelmän tuntemista kieliympäristöistä
- -c tulosta kategorianimet
- -k tulosta avainsanat
- -m tulosta lista järjestelmän tuntemista merkistöistä
Mahdolliset kategoriat ja tärkeimmät niihin liittyvät avainsanat ovat:
- LC_CTYPE: Merkkien luokitteluun ja iso-pieni-muunnokseen
liittyvät koodit, vaihtelevat järjestelmittäin.
Käytännössä hyödyllinen voisi olla lähinnä
charmap, joka kertoo käytössä olevan merkistön.
- LC_NUMERIC: lukujen esitykseen liittyvät:
- decimal_point desimaalierotin (piste, pilkku)
- thousands_sep tuhansien (jne) erotinmerkki
- grouping erotteluvälit edelliselle
- LC_TIME: ajan ja päivämäärien esitykseen liittyvät, mm:
- abday viikonpäivien lyhenteet
- day viikonpäivien nimet
- abmon kuukausien lyhenteet
- mon kuukausien nimet
- am_pm aamu- ja iltapäiväsymbolit
- d_t_fmt ajan ja päiväyksen oletusformaatti (mitä date:n %c vastaa)
- d_fmt päiväyksen oletusformaatti (date:n %x)
- t_fmt kellonajan oletusformaatti (date:n %T)
- t_fmt_ampm 12h-ajan oletusformaatti (date:n %r)
- LC_COLLATE: lajittelualgoritmin määräävät avainsanat,
vaihtelevat järjestelmittäin eikä niitä juurikaan tarvita suoraan.
- LC_MONETARY: valuutan esittämiseen liittyvät:
- int_curr_symbol kansainvälinen valuuttasymboli (esim. FIM)
- currency_symbol paikallinen valuuttasymboli (esim. mk)
- mon_decimal_point desimaalierotin
- mon_thousands_sep tuhansien erotin
- mon_grouping em. ryhmittelyväli
- positive_sign positiivinen etumerkki
- negative_sign negatiivinen etumerkki
- int_frac_digits desimaalien määrä kv. yhteyksissä
- frac_digits desimaalien määrä paikallisesti
- p_cs_precedes tuleeko valuuttasymboli ennen (1) vai jälkeen (0)
positiivisissa luvuissa
- p_sep_by_space erotetaanko valuuttasymboli välilyönnillä
positiivisissa luvuissa (0=ei, 1=kyllä, 2=erotetaan myös etumerkistä)
- n_cs_precedes tuleeko valuuttasymboli ennen (1) vai jälkeen (0)
negatiivisissa luvuissa
- n_sep_by_space erotetaanko valuuttasymboli välilyönnillä
negatiivisissa luvuissa
- p_sign_posn positiivisen etumerkin paikka (0=luku suluissa,
1=ennen lukua ja valuuttasymbolia,
2=luvun ja valuuttasymbolin jälkeen,
3=ennen valuuttasymbolia,
4=valuuttasymbolin jälkeen)
- n_sign_posn negatiivisen etumerkin paikka
- LC_MESSAGES: viestejä käyttäjälle ja -ltä:
- yesexpr ''kyllä'' paikallisella kielellä
- noexpr ''ei'' paikallisella kielellä
- yesstr ''kyllä''-vastaukseksi tunnistettava regexp
(muodossa jonka grep -E tunnistaa)
- nostr ''ei''-vastaukseksi tunnistettava regexp
Näitä käyttävät soveltuvin osin kaikki standardikomennot, erityisesti
kaikki jotka vertailevat tai lajittelevat merkkijonoja tai
tulostavat kellonaikoja tai päivämääriä. Jos jotakin kategorianimeä
vastaava ympäristömuuttuja ei ole asetettu käytetään sen asemesta
muuttujaa LANG. Jos kuitenkin LC_ALL on asetettu käytetään
sitä riippumatta muista LC_*- tai LANG-muuttujista.
Jos arvo on virheellinen tai ko. järjestelmässä tuntematon,
käytetään oletuksena arvoa POSIX tai C (jotka
on määritelty kaikissa järjestelmissä).
Muuttujien LC_* ja LANG mahdolliset arvot vaihtelevat eri
järjestelmissä, mutta yleensä ne ovat muotoa
kieli[_alue][.merkistö]
missä kieli on joko kaksikirjaiminen lyhenne tai kielen
englanninkielinen nimi täydellisenä (mutta pienillä kirjaimilla)
(esim. fi tai finnish), alue on maan tai
alueen kaksikirjaiminen lyhenne (isoilla kirjaimilla, esim. FI), ja
merkistö on käytetyn merkistön lyhenne (vaihtelevat suuresti).
Suomessa voivat tulla kyseeseen esim. fi_FI.iso88591,
fi_FI.iso885915@euro, finnish.iso8859-1, finnish jne.
Jos haluaa olla varma että kieliympäristö ei muuta jonkin komennon
tulostusta voi asettaa LC_ALL-muuttujan tunnettuun arvoon, esim.
LC_ALL=C DOW=$(DATE +%a)
(Tuota ei pidä tehdä jos kyseessä on ihmisten luettavaksi
tarkoitettu viesti - ne yleensä halutaan voida kääntää paikalliselle
kielelle.)
Esim. LC_MESSAGES-kategorian avulla
saa monikielisen kyllä/ei-kysymyksen:
printf "%s? " "$(locale yesstr)/$(locale nostr)"
read reply
if printf "%reply\n" "$query?" | grep -Eq "$(locale yesexpr)"
then echo "se on suomeksi 'joo'!"
else echo "se on suomeksi 'ei hitossa'!"
fi
Tämä ei kuitenkaan monessakaan järjestelmässä toimi kuten pitäisi,
erityisesti joitakin arvoja ei ehkä ole määritelty ollenkaan joten
oletusarvot on syytä laittaa, ja mm. HP-UX lisää
ylimääräisiä lainausmerkkejä vastauksiinsa.
Paranoidisiirrettävyyttä kaipaava voisi tehdä esim. näin:
# get locale-specific yes/no question & reply, defaults in English
nostr=$(locale nostr); nostr=${nostr:-no}
yesstr=$(locale yesstr); yesstr=${yesstr:-yes}
yesexpr=$(locale yesexpr); yesexpr=${yesexpr:-"^[yY]"}
# peel possible extra quotes away
for var in yesstr nostr yesexpr ;do
eval value=\$$var
case "$val" in \"*) eval $var=$value ;; esac
done
printf "%s? " "$yesstr/$nostr"
read reply
if printf "%s\n" "$reply" | grep -Eq "$yesexpr"
then echo "se on suomeksi 'joo'!"
else echo "se on suomeksi 'ei hitossa'!"
fi
Esim. Halutaan tutkia onko annettu merkkijono luku,
jossa voi olla desimaalierotin (muttei muita koristeita):
case "${luku:-BAD}" in
*[!0-9$(locale decimal_point)]*)
echo "'$luku' is not a proper number" ;;
esac
5.35 localedef - Define locale environment
localedef [-c] [-f charmap] [-i sourcefile] name
luo uuden kieliympäristön annetun määrityksen mukaisesti.
Yksityiskohtiin ei tässä puututa sen enempää.
5.36 logger - Log messages
logger tekstiä
lähettää viestin systeemilokiin. Käyttökelpoinen lähinnä
järjestelmän ylläpitäjälle. Lokiin menee yleensä automaattisesti
myös aikaleima ja tieto siitä, kuka viestin lähetti.
5.37 logname - Return user's login name
Palauttaa käyttäjätunnuksen (kuten getlogin(), näkee
su:n läpi jne).
5.38 lp - Send files to a printer
lp [-c] [-d dest] [-o option...] [-n copies] [file(s)]
lähettää tiedostoja (tai stdinin) kirjoittimelle. Optiot:
- -c Palaa vasta kun tiedostoja ei enää tarvita.
- -d kirjoitin Käytä nimettyä kirjoitinta.
Ilman tätä oletus on ensisijaisesti $LPDEST, jos sitä
ei ole $PRINTER, jos sitäkään ei ole systeemin
oletuskirjoitin ja jos sitäkään ei ole tapahtuu virhe.
- -n k Tulosta k kopiota.
- -o option Tätä POSIX ei vaadi mutta suosittelee
järjestelmäkohtaisiin optioihin.
Useimmissa järjestelmissä on muitakin optioita, mutta vain nuo
ovat edes kohtuullisen siirrettäviä. BSD-pohjaisissa järjestelmissä
vastaava komento on historiallisesti lpr; sen optioista
mainittakoon -Pkirjoitin, joka vastaa lp:n
-d:tä.
5.39 ls - List directory contents
ls [-CFRacdilqrtu1] [file ...]
Tulostaa hakemiston sisällysluetteloa: muille kuin
hakemistoargumenteille ko. tiedoston tiedot,
hakemistoille ko. hakemiston sisältämien tiedostojen tiedot,
jos argumentteja ei ole, työhakemiston sisällön.
Optiot:
- -C Monisarakkeinen tulostus aakkosjärjestyksessä.
Ympäristömuuttuja COLUMNS määrää tulostusleveyden.
- -F Tulostaa kauttaviivan (/) hakemistonimien,
tähden (*) suoritettavien ja pystyviivna (|) putkien perään.
(Yleensä lisäksi sockettien ja @ symbolisten
linkkien perään.)
- -R Tulostaa alihakemistot rekursiivisesti.
- -a Tulostaa myös pisteellä alkavat tiedostonimet.
Ilman -a:ta niitä ei tulosteta ellei niitä ole erikseen
annettu argumentteina.
- -c Käyttää hakemistotiedon muutosaikaa (ctime)
itse tiedoston muutosajan asemesta lajittelussa (-t)
ja tulostuksessa (-l).
- -d Tulostaa tiedostoistakin niiden omat tiedot
niiden sisällön asemesta.
- -i Tulostaa tiedostojen inode-numerot
(tai yleisemmin ''järjestysnumero'').
- -l Pitkä tulostusmuoto, yksi tiedosto per rivi.
- -q Tulostaa erikoismerkkien paikalle kysymysmerkin.
- -r Lajittelee käänteisessä järjestyksessä (viimeinen
tai vanhin ensin).
- -t Lajittelee tiedostot ensin aikajärjestykseen (oletuksena
tiedoston muutosajan mukaan), vasta sitten aakkosjärjestykseen.
- -u Käyttää tiedoston käyttöaikaa (atime)
tiedoston muutosajan asemesta lajittelussa (-t)
ja tulostuksessa (-l).
- -1 Tulostaa vain yhden tiedosto per rivi. Oletus
silloin kun tulostuslaite ei ole pääte.
Argumenttina annettu tiedostonimi tulostetaan sellaisena kuin
se on annettu (polkuineen).
Optiolla -l tulostetaan seuraavat
tiedot järjestyksessä:
mode, links, owner, group, bytes, date and time, pathname
Päivämäärän ja kellonajan muotoilu riippuu kieliympäristöstä
(LC_TIME), POSIX-ympäristössä formaatti on kuten
date ''+%b %e %H:%M'' tulostaisi jos tiedosto on alle 6 kuukautta vanha,
muuten kuin ''+%b %e %Y''.
Laitetiedostoille voi koon asemesta tulostua jotain järjestelmäkohtaista.
Mode on muotoa tuuuoooggga, missä
- t: tiedoston tyyppi, d=hakemisto, b=lohkolaitetiedosto,
c=merkkilaitetiedosto, p=putki, -=tavallinen tiedosto. (Yleensä
lisäksi l=symbolinen linkki, s=socket, n=network special file.)
- uuu: tiedoston omistajan oikeudet
vasemmalta oikealle:
- r jos tiedosto on luettavissa, muutoin -
- w jos tiedosto on luettavissa, muutoin -
- x jos tiedosto on suoritettavissa, s
jos tiedosto on suoritettavissa ja setuid-bitti on päällä,
S jos tiedosto ei ole suoritettavissa ja setuid-bitti on päällä,
muutoin -.
- ggg: ryhmän oikeudet, kuten edellä mutta s
ja S viittaavat setgid-bittiin.
- ooo: muiden oikeudet, rxw- kuten edellä, muita ei määritelty.
Epästandardi mutta yleinen on t = sticky bit on päällä
(tai T jos suoritusoikeus samalla puuttuu).
- a: alternate access method flag, jos epätyhjä
(suositus: +) kertoo
että tiedostolle on jokin muukin suojaus (yleensä ACL eli
Access Control List).
Yleisiä epästandardeja optioita ovat
- -x Riveittäin lajiteltu monipalstainen tulostus.
- -m Tiivis pilkuilla eroteltu tulostus.
- -A Kuten -a mutta jättää tiedostot
. ja .. tulostamatta.
- -b Tulostaa erikoismerkit (enemmän tai
vähemmän) tunnistettavassa muodossa (vrt. cat -v).
- -s Tulostaa tiedoston koon lohkoina (yleensä 512 tavua).
- -L Jos tiedosto on symbolinen linkki, näyttää sen osoittaman
tiedoston tiedot itse linkin asemesta.
5.39.1 Epästandardien suojausbittien merkityksestä
Standardi ei määrittele mitä setuid- ja setgid-bitit
tarkoittavat jakemistoille eikä sticky bitin merkitystä
yleensä, mutta seuraavat ovat aika vakiintuneita:
- Sticky bit tiedostolle tarkoittaa, että suorituksen
päätyttyä ohjelmakoodi jätetään muistiin (kunnes muisti loppuu tms).
Historiallisesti yleinen, nykyisissä järjestelmissä harvinainen
(ei yleensä vaikuta mitään, tai saattaa olla muussa käytössä).
- Sticky bit hakemistolle tarkoittaa, että siellä olevan
tiedoston saa poistaa vain jos itse tiedostoon on kirjoitusoikeus
(muuten riittää kirjoitusoikeus hakemistoon). Yleinen kaikissa
/tmp:n tyyppisissä hakemistoissa.
- Setgid hakemistolle tarkoittaa, että sinne luodut
uudet tiedostot perivät hakemiston ryhmän.
5.40 mailx - Process messages
mailx [-s subject] address...
lähettää standard inputin sähköpostina.
(Huom. mail ei ole standardi, eikä ole mitään siirrettävää
tapaa antaa sille otsikkotietoa.)
5.41 mkdir - Make directories
mkdir [-p] [-m mode] dir...
luo nimetyt hakemistot.
Optiot:
- -p Luo mahdollisesti puuttuvat komponentit polun varresta,
ei aiheuta virhettä valmiiksi olemassa olevista hakemistoista.
- -m mode Asettaa luodun hakemiston suojauksen,
mode kuten chmod-komennossa. Oletussuojaus
on rwxrwxrwx XOR umask. Option -p takia luotavien
välihakemistojen suojaukseen tulee kuitenkin aina u+wx.
5.42 mkfifo - Make FIFO special files
mkfifo [-m mode] file...
luo nimetyn putken. Optiolla -m voi asettaa
sen suojausbitit, mode kuten chmodissa.
Historiallisesti samaan tarkoitukseen on käytetty komentoa
mknod file p.
5.43 mv - Move files
mv [-fi] tiedosto(t) kohde
siirtää tai uudelleennimeää tiedostoja, joko
luomalla uuden hakemistotiedon (kuten ln) ja poistamalla vanhan
(jos siirrettäviä on vain yksi ja kohde on samassa
tiedostojärjestelmässä) tai kopiomalla tiedoston tai tiedostot
(kuten cp) ja hävittämällä alkuperäiset.
Jos siirrettäviä on useita, kohteen on oltava olemassa oleva
hakemisto.
Jos kohde on ennestään olemassa eikä siihen ole kirjoitusoikeutta
aiheutuu virhe, paitsi jos -f on annettu jolloin se yritetään
ensin poistaa kyselemättä, tai jos stdin on pääte tai -i on
annettu jolloin kysytään käyttäjältä (ts. interaktiivisesti -i
on oletus). Jos on annettu sekä -f että -i, viimeinen
ratkaisee.
Mahdollisen virheen sattuessa joko alkuperäinen tai uusi
tiedosto voi olla korruptoitunut, mutta jompi kumpi on
aina ehjä.
Historiallisesti mv ei ole osannut siirtää
hakemistoa tiedostojärjestelmästä toiseen, mutta POSIX
edellyttää että senkin pitäisi onnistua, kunhan kaikkiin
siirrettäviin tiedostoihin on lukuoikeus (mitä ei
tiedostojärjestelmän sisällä tarvita).
Seuraava: 5.44-72 Standardikomennot N-Z
Edellinen: 5.1-5.25 Standardikomennot A-F
File translated from TEX by TTH, version 1.98.
On 17 May 2001, 18:14.