A Mutt-ban minden keresésre és mintára a 'POSIX extended' specifi- kációjú reguláris kifejezést kell megadni, amik többé-kevésbé hason- lítanak az egrep- és GNU awk-nál használt szintaktikára. Lentebb megtalálhatod ennek rövid leírását.
A keresés csak akkor tesz különbséget a kis- és nagybetűk között, ha
a mintában található legalább egy nagybetű, egyébként nem tesz
különbséget. Ha '\' -t használsz egy reguláris kifejezésben, akkor
azt meg kell előznie egy másik '\' -nek: '\\'.
További információkért: lásd a "keresés" részt lejjebb.
A reguláris kifejezések olyan minták, amik egy csoportba tartozó sztringeket írnak le. A reguláris kifejezések létrehozása hasonló a matematikai kifejezésekhez; különböző operátorokat használ kisebb kifejezések összerakására.
Az alapvető építőkockák olyan kifejezések, amik egyetlen karakterre illeszkednek. A legtöbb karakter, beleértve a betűket és a számokat is, olyan kifejezések, amik önmagukra illeszkednek. A többi meta- karaktert, aminek speciális jelentése van, egy megelőző '\'-el lehet megadni.
A pont (.) egy darab bármilyen karakterre illeszkedik. A kalap (^) és a dollár ($) olyan metakarakterek, amelyek a sor elejére ill. végére illeszkednek.
A szögletes zárójelbe ([ ]) zárt karakterek _egy_ olyan karakterre illeszkednek, amely a zárójelben lévők közül kerülnek ki. Ha az első karakter kalap (^), akkor olyan karaterre illeszkedik, amely _nincs_ a zárójelben. Például: a '[0123456789]' csak _egy_ számra illeszkedik. ASCII karakterek csoportját elég csak az első és utolsó karakterrel megadni, amiket egy kötőjel (-) választ el. A legtöbb metakarakter elveszíti speciális jelentését a zárójelen belül. Ha egy ']' -t akarsz berakni, akkor rakd legelőre. Hasonlóan, ha egy '^' -ot akarsz berakni, akkor bárhova rakhatod, kivéve legelőre. Végül kötőjel '-' esetén rakd legutoljára.
Különböző osztályú karakterek előre definiáltak. A karakter osztá- lyokat '[: megnevezés :]' formában adjuk meg. A következő osztályok a POSIX szabványban vannak definiálva:
A karakter osztályok csak a szögletes zárójelben lévő karakter-
listában érvényesek. A '[:' és ':]' része a karakterosztályok
nevének, s ez nem helyettesíti a a karakterlista kezdetét, végét
jelölő szögletes zárójelet.
pl: [[:digit:]] ugyanaz, mint [0-9].
Két további speciális szekvencia szerepelhet a karakter-listában. Ezek lehetővé teszik nem ASCII karakter-készletek számára, hogy egy szimbólumot ('collating element'), amit egy vagy több karakter reprezentál, éppúgy lehessen használni keresésnél, rendezésnél, mint a többi normál karaktert.
'Collating' szimbólumok
A 'collating' szimbólum egy több karakteres elem, ami '[.' és
'.]' közé van zárva. Pl: ha 'ch' egy ilyen collating elem, akkor
a '[[.ch.]]' erre az elemre fog illeszkedni, míg '[ch]' 'h' -ra
vagy 'c' -re.
Ekvivalencia osztályok
Egy ekvivalencia osztály egy hely-specifikus lista neve, amiben
az azonos karakterek vannak felsorolva. A nevet egy '[=' és egy
'=]' közé kell zárni. Pl: az 'e' név reprezentálhatja az összes
'e'-t és 'é'-t. Ebben az esetben [[=e=]] egy olyan
kifejezés, ami illeszkedik bármilyen 'e'-re és 'é'-re.
Az egy karakterre illeszkedő reguláris kifejezést követhet egy vagy több ún. ismétlési operátor:
| ? | Az előző elem opcionális és legfeljebb egyszer illeszkedik. |
| * | Az előző elem bármennyiszer illeszkedik (akár 0-szor is). |
| + | Az előző elem egyszer vagy többször illeszkedik. |
| {n} | Az előző elem pontosan 'n' -szer illeszkedik. |
| {n,} | Az előző elem 'n'-szer vagy többször illeszkedik. |
| {,m} | Az előző elem legfeljebb 'm'-szer illeszkedik. |
| {n,m} | Az előző elem legalább 'n'-szer, de legfeljebb 'm'-szer illeszkedik. |
Két reguláris kifejezés összefűzhető, s az eredő kifejezés akkor illeszkedik, ha két összetevő külön-külön illeszkedik.
Két reguláris kifejezés összefűzhető a 'vagy' (|) operátor segítségé- vel. Ekkor az eredő kifejezés akkor illeszkedik, ha az összetevők közül valamelyik illeszkedik.
Precendencia sorrend: ismétlő operátor, összefűzés, változtatás. A kifejezést zárójelbe teheted, hogy a végrehajtási sorrendet megváltoztasd.
Megjegyzés: Ha a belefordítottad a Muttba az 'rx' csomagot, akkor a következő operátorok is használhatók reguláris kifejezésben:
| \y | A szó eleji vagy a szó végi üres sztringre illeszkedik. |
| \B | Egy szóban lévő üres sztringre illeszkedik. |
| \< | A szó eleji üres sztringre illeszkedik. |
| \> | A szó végi üres sztringre illeszkedik. |
| \w | Bármilyen 'szöveges' karakterre illeszkedik (betűk, számok, aláhúzás) |
| \W | Bármilyen 'nem szöveges' karakterre illeszkedik (lásd fent) |
| \` | A buffer (sztring) elején lévő üres sztringre illeszkedik. |
| \' | A buffer végén lévő üres sztringre illeszkedik. |
Megjegyzés: A POSIX szabvány ezeket az operátorokat nem definiálja,
tehát lehet, hogy nem találhatók meg a különböző rendszerek
függvény-könyvtáraiban ('stock library').
4.2. Minták
Sok Mutt parancs megengedi, hogy egy illeszkedő mintát adjál meg
(limit, tag-pattern, delete-pattern, stb).
Levelek kiválasztására több mód van:
| ~A | összes levél |
| ~b EXP | a levél 'EXP' -t tartalmazza a törzsében |
| ~B EXP | a levél 'EXP' -t tartalmazza valahol a teljes levélben |
| ~c USER | a levél cc -zve van USER-nek |
| ~C EXP | a levél 'to:' vagy 'cc:' mezője 'EXP' -re illeszkedik |
| ~D | törölt levelek |
| ~d [MIN]-[MAX] | levelek `date-sent' -el, a megadott időintervallumban |
| ~E | lejárt levelek |
| ~e EXP | a levél 'EXP' -t tartalmazza a 'küldő' mezőben |
| ~F | megjelölt (flagged) levelek |
| ~f USER | a levél USER-től jött |
| ~g | PGP-vel aláírt levelek |
| ~G | PGP-vel kódolt levelek |
| ~h EXP | a levél 'EXP' -t tartalmazza a fejlécben |
| ~k | a levél PGP kulcsot tartalmaz |
| ~i ID | a levél `Message-ID' mezője illeszkedik ID -ra |
| ~L EXP | a levél 'EXP'-től származik, vagy ő kapta |
| ~l | a levél egy ismert levelezőlistának lett címezve |
| ~m [MIN]-[MAX] | a levél MIN és MAX között van *) |
| ~N | új levelek |
| ~O | régi levelek |
| ~p | a levél neked van címezve (lásd $alternates) |
| ~Q | válaszolt levelek |
| ~R | olvasott levelek |
| ~r [MIN]-[MAX] | levelek `date-received' -el a megadott időintervallumban |
| ~S | 'superseded' levelek |
| ~s SUBJECT | levél 'SUBJECT' -el a `Subject' mezőben |
| ~T | kijelölt levelek |
| ~t USER | 'USER' -nek címzett levelek |
| ~U | még nem olvasott levelek |
| ~v | a levél egy összehajtott téma része |
| ~x EXP | levél ami 'EXP' -t tartalmazza a `References' mezőben |
| ~z [MIN]-[MAX] | levelek mérete a [MIN]-[MAX] tartományban *) |
A USER, EXP, ID és SUBJECT reguláris kifejezések.
*) Lehetséges a >[MIN], <[MAX], [MIN]- és -[MAX] formákat is
használni.
4.2.1. Minta módosítók
Olyan mintáknál, amiknél címek 'listája' szerepel ( c,C,p,P és t),
akkor illeszkedik, ha legalább az egyikre illeszkedik az egész
listából. Ha biztosítani akarod, hogy a lista összes elemére illesz-
kedjen, akkor a '^' prefixet kell használnod.
Ez a példa illeszkedik az összes, Németországból érkezett levélre:
Logikai ÉS kapcsolat lehetséges több megadott feltétel között.
pl:
Ez a feltétel azokat a leveleket választja ki, amiknek a címzettjei között szerepel a 'mutt' és a 'From' mezőben pedig az 'elkins' található.
A következő operátorokkal még összetettebb keresést tudsz írni:
| ! | logikai nem |
| | | logikai vagy |
| () | logikai csoportosító operátor |
A következő példa egy ilyen összetett mintát illusztrál. Ez ki- választja azokat az üzeneteket, amelyek nem tartalmazzák a 'mutt' szót a 'To' vagy a 'Cc' mezőben és 'elkins' -től jöttek.
A Mutt két dátum-típust ismer, ezek: abszolút és relatív.
Abszolút: A dátum NN/HH/ÉÉ formában van.
(a hónap és az év elhagyása esetén az aktuális hónapot és évet
veszi).
Egy példa dátum-intervallumra:
Ha elhagyod az első dátumot, és csak '-NN/HH/ÉÉ' -t adsz meg, akkor az összes, a megadott dátumnál _korábbi_ levél ki lesz választva. Ha elhagyod a második dátumot, és csak 'NN/HH/ÉÉ-' -t adsz meg az összes, a megadott dátumnál _későbbi_ levél ki lesz választva. Ha csak egy dátumot adsz meg kötőjel ('-') nélkül, akkor csak a megadott napon küldött levelek lesznek kiválasztva.
Relatív: Ez a dátum-típus egy relatív dátum az aktuális dátumhoz képest, s a következőképpen lehet megadni:
>offset (a levél régebbi, mint offset egység)
<offset (a levél újabb, mint offset egység)
=offset (a levél pontosan offset egységnyi régi)
Az offset egy pozitív szám a következő egységekkel:
Pl: Egy hónapnál fiatalabb levelek kiválasztásához a következőt használhatod:
Megjegyzés: A kereséskor használt mindenféle dátum a helyi időzónától
függ, így ha nem változtatod meg az "$index_format" változót, hogy
benne legyen a %[...] formátum, akkor az itt használt dátumok és az
index által mutatott dátum nem lesz azonos.
4.3. Kijelölés használata
Néha kívánatos egy műveletet egy egész csoport levélen elvégezni, s
nem egyszerre csak egyen. Ilyen lehet például, ha egy levelezőlista
leveleit különböző levelesládákba akarod menteni, vagy pedig egy meg-
adott témájú leveleket akarsz törölni. Egy mintára illeszkedő levelek
kiválasztása a 'tag-pattern' (alapban: 'Control-T') utasítással tör-
ténik. Egyenként a leveleket a 'tag-message' (alapban: 't') utasítás-
sal tudod megjelölni.
A pontos szintaxishoz lásd a Minták fejezetet.
Miután kiválasztottad a leveleket, a 'tag-prefix' operátort hasz-
nálhatod (alapban ';'), hogy a következő utasítás az összes, a tag -gal
jelölt levélre végrehajtódjon. Persze ez csak akkor működik, ha több
levélre is végre lehet hajtani az adott utasítást. Ha az "$auto_tag"
változó be van állítva, akkor a következő utasítás automatikusan végre
lesz hajtva a kijelölt levelekre, így nem lesz szükség a
'tag-prefix' -re.
4.4. 'Hook' -ok használata
A 'hook' (kampó) egy, az Emacs-tól kölcsönzött funkció, ami lehetővé teszi különböző parancsok végrehajtását, megadott dolgok előtt. Például ez lehetővé teszi, hogy feladó vagy levelesláda alapján szabd át a beállításokat. A Mutt világában a 'hook' egy reguláris kifejezés- ből vagy mintából és egy beállító opcióból/utasításból áll. Részletesen lásd a következők leírásánál:
Levelekre alkalmazott 'hook'-ok (send-hook, save-hook, fcc-hook) kiértékelésükben eltérnek a többiektől. A különbség a reguláris kifejezések megadásában rejlik, ugyanis levelek kezelésénél finomabb keresésre is szükség van.
A Mutt megengedi a Minták részben említett nyelv használatát a 'hook' parancsoknál. Ez pontosan úgy működik, mint a keresésnél, kivéve, hogy csak azokat használhatod, amik a levél 'borítékján' keresnek. ('from', 'to', 'cc', 'date', 'subject', stb).
Például, ha a címedet meg akarod változtatni, ha egy megadott címre küldesz levelet, akkor a következőt használhatod:
send-hook '~t ^me@cs\.hmc\.edu$' 'my_hdr From: Mutt User
Ez a megadott parancsot (my_hdr From: Mutt User
A minták megadásánál nem kötelező a teljes 'keresési' nyelvet
használni, megadhatsz egyszerű reguláris kifejezést is, mint a többi
'hook' -nál. Ebben az esetben a Mutt lefordítja a mintádat a 'teljes'
nyelvre, a "$default_hook" változó által megadott módon.
A minta a 'hook' megadásakor lesz lefordítva, az éppen aktuális
"$default_hook" tartalma szerint.
A Mutt támogatja olyan külső adatbázisokhoz való kapcsolódást, mint
pl: LDAP, ph/qi, bbdb vagy NIS. Ez a kapcsolattermetés egy szkripten
keresztül történik egy egyszerű interface -t használva. A
"$query_command" változóval tudod megadni, hogy milyen scriptet
használjon.
A szkriptnek a kérést (query) a parancssorban kell fogadnia.
Visszatérnie egy egysoros üzenettel kell, majd minden válaszra egy
sorral, ahol a cím, a név és a többi információ tabbal van
elválasztva. Hiba esetén, vagy ha nincs találat, akkor egy nem
nulla exit státusszal kell visszatérnie egy egysoros hibaüzenet
kíséretében.
Egy példa a több válaszos kimenetre:
Kétféle módon érheted el ezt a lekérdező funkciót a Muttban. Az
egyik, hogy a lekérdezést az index menüben indítod (alapban: Q). Ez
bekéri a lekérdezést és megjeleníti a találatokat a query menüben.
A query menüben címeket választhatsz ki, aliasok készítésre vagy
levélíráshoz. A levélíráshoz több címzettet is kijelölhetsz. Egy új
lekérdezést is csinálhatsz, s ennek az eredményét hozzáfűzheted a
már meglévőkhöz.
A másik mód a query funkció elérésre: címkiegészítés hasonlóan az
aliasok esetében. Bármikor, amikor címet kell beadnod, használhatod
a complete-query funkciót (alapban: ^T), hogy elindíts egy le-
kérdezést a már begépelt cím alapján. Mint az aliasoknál, a Mutt
az első szóközig vagy vesszőig nézi vissza a begépelt címet. Ha
csak egy válasz van, a Mutt kiegészíti helyben a címet. Több válasz
esetén megjelenik a query menü. A query menüben kiválaszthatsz egy
vagy több címet is.
A Mutt négyfajta formátumú levelesládát tud írni, olvasni: mbox,
MMDF, MH és Maildir. A mailbox típusát automatikusan felismeri, nem
kell külön jelölni a különböző formátumokat. Új levelesláda
létrehozásakor a Mutt az "$mbox_type" változó szerinti típusút
hozza létre.
mbox: Ez a UNIX világban legszélesebb körben alkalmazott formátum.
Az összes levél egy fájlban van tárolva. Minden levélben van egy sor:
ami egy új levél kezdetét jelzi (ezt gyakran hívják 'From_' sornak)
MMDF: Ez az mbox egyik változata. Minden egyes levél '^A^A^A^A' (négy
control-A) -t tartalmazó sorral van körülvéve.
MH: Egy radikálisan új megoldás az mbox és az MMDF -hez képest. A
levelesláda egy könyvtárból áll, ahol minden levél külön fájlban
van tárolva. A fájlnevek a levél számát mutatják (ezek nem azok,
amiket a Mutt kijelez). A törölt levelek egy vesszőt (,) kapnak a
fájlnév elé. A Mutt ezt a fajta mailboxot az .mh_sequences vagy az
.xmhcache fájl megtalálásával azonosítja be (ezzel tudja az MH
könyvtárat a 'normál' könyvtártól megkülönböztetni). A Mutt jelenleg
még nem frissíti ezeket a fájlokat.
Maildir: A legújabb levelesláda-formátum, amit a Qmail MTA (a
sendmail egy alternatívája) használ. Hasonló az MH-hoz, csak ad még
három alkönyvtárat a mailboxhoz: ezek 'tmp', 'new' és 'cur'. A fájl-
nevekeket úgy választja meg, hogy egyediek legyenek, még akkor is ha
két program írja a levelesládát NFS -en keresztül, ami azt jelenti,
hogy file zárolásra (locking) nincs szükség.
Számos beépített rövidítés létezik, amivel különböző levelesládákra
tudsz hivatkozni. Ezeket bárhol használhatod, ahol fájl vagy mailbox
neve kell.
A Mutt-nak van néhány funkciója, ami megkönnyíti nagy mennyiségű
levelek kezelését. Az első dolog, hogy tudasd a Mutt-tal, milyen
címek tartoznak a levelező listákhoz (persze ennek nem kötelező
levelezőlistának lennie, de általában erre szokták használni). Ezt
a 'lists' paranccsal tudod megtenni a muttrc-ben.
Most, hogy a Mutt tudja, milyen címek tartoznak a levelező
listákhoz, számos szolgáltatást tud nyújtani; először is mutatja a
levelező lista nevét az index menüben. Ez arra jó, hogy
megkülönböztesd a személyes és a listás leveleket. Az
"$index_format" változóban az escape '%L' visszatér 'To <list>'
sztringgel, ha 'list' szerepel a 'To' mezőben, és 'Cc <list>'
sztringgel, ha 'Cc' mezőben szerepel (egyébként a feladó nevével
tér vissza).
A listás levelek 'To' és 'Cc' mezői gyakran nagyon hosszúak.
A legtöbb ember nem törődik vele, hogy kitörölje a levél feladóját,
akinek válaszol a listáról, ami azt eredményezi, hogy az illető két
vagy több másolatot kap ugyanabból a levélből. A 'list-reply'
funkció (alapban: L) az index és pager menüben megpróbálja
kikerülni ezt a problémát úgy, hogy a választ csak a levelezőlistára
küldi, s nem az összes feladónak.
A másik megoldás, amit néhány levlista admin használ, hogy egy
'Reply-To' mezőt ad a fejlécbe, ami a levlista címére mutat, s nem
az eredeti feladóra. Ez akkor okoz problémát, ha az eredeti
feladónak akarsz magánlevelet írni, mivel a legtöbb levelezőprogram
automatikusan a 'Reply-To' mezőben lévő címre küldi el a választ. A
Mutt-ban a "$reply_to" változóval tudod meghatározni, hogy melyik
címet használja. Ha 'igaz', akkor rákérdez, hogy a 'Reply-To'
mezőben lévő címre, vagy a 'From' mezőben lévő címre akarod-e a
levelet küldeni. Ha 'hamis', akkor 'Reply-To' mezőt használja, ha
van.
Végül a Mutt képes a leveleket téma szerint rendezni. Egy témába
olyan levelek csoportja kerül, amik ugyanarra a 'Subject' -re
hivatkoznak. Ezeket rendszerint egy fa-stuktúrába rendezi, ahol a
levél és a hozzátartozó összes válasz grafikusan látszik. Ugyanaz a
koncepció, mint egy 'threaded news' kliens esetén. Ez könnyűvé
teszi nagy mennyiségű levelezőlistás levél kezelését, mert könnyen
tudod törölni a számodra érdektelen témákat, és gyorsan meg tudod
találni a számodra értékeseket is.
Az RFC1894 definiál egy adag MIME tartalom típust a megbízható
email státusz jelzésére. Ezt fel lehet fogni nyugtázásnak is.
A Berkeley sendmail 8.8.x -nek van néhány kapcsolója, amivel a
levelező program kérést küldhet arról, hogy milyen tipusú
visszajelzést igényel.
Két változóval tudod ezt kihasználni: "$dsn_notify" -t arra lehet
használni, hogy 'nyugtát' kérjen a különböző eredményekhez
(pl: 'failed message' (ha a levelet nem sikerült elküldeni),
'message delivered' (levél továbbítva), stb). A "$dsn_return"
megadja, hogy a leveled mennyi részének kell visszatérnie nyugtával.
Részletesebben a DSN -ről a sendmail manual oldalban (man sendmail)
olvashatsz.
Ha a Mutt POP3 támogatással lett lefordítva (a 'configure' parancsot
az '--enable-pop3' kapcsolóval indítottad), akkor képes arra, hogy
távoli szerverről letöltse a leveleidet. Amikor elindítod a
'fetch-mail' funkciót (alapban: G), a Mutt megpróbál bejelentkezni
a "$pop_host"-ra mint "$pop_user". Miután ez sikerült, a Mutt bekéri
a távoli gépen lévő POP3 jelszavadat.
Miután beengedtek, a Mutt leszedi az összes új leveledet, és egy
helyi "$spoolfile" -ba rakja. Ezután minden úgy történik, mintha
helyi leveleket olvasnál.
Megjegyzés: a POP3 támogatás csak kényelmi funció, kevés
szolgáltatása van. Speciális igényekhez érdemes egy erre
kihegyezett programot, mint pl: fetchmail -t használni.
Ha a Mutt az IMAP támogatással lett fordítva (a 'configure'szkriptet
az --enable-imap kapcsolóval indítottad), akkor képes egy távoli
IMAP szerveren lévő levelesládákkal dolgozni.
A távoli levelesládát az {imapserver}inbox levelesláda kiválasz-
tásával tudod elérni, ahol az imapserver az IMAP szerver neve, az
inbox a beérkező leveleidet tartalmazó levelesláda neve.
Ha más mailboxot akarsz elérni, akkor {imapserver}path/to/folder
formátumot kell használnod, ahol a path/to/folder a home könyvtárad-
ból nyíló útvonal a kívánt mailboxhoz.
Megjegyzés: Az IMAP támogatás most még eléggé kezdetleges és
instabil. Ha biztosabb módon akarod elérni az IMAP levelesládádat,
használj egy erre specializált programot, pl. fetchmail-t.
Ha a levél URL-eket tartalmaz (Unified Resource Locator = egységes
erőforrás mutató, mint például egy ilyen cím: http://www.mutt.org),
hatékony szolgáltatás egy menü megjelenítése az összes URL-el és
az a lehetőség, hogy egy WWW böngészőt tudsz indítani az egyikre.
Ezt a funkciót egy külső 'urlview' program valósítja meg, amit
az ftp://ftp.guug.de/pub/mutt/contrib/ helyről lehet letölteni,
és a következő konfigurációs parancsokkal lehet beizzítani:
4.5. Külső címadatbázisok elérése
Pl:
set query_command = "mutt_ldap_query.pl '%s'"
Searching database ... 20 entries ... 3 matching:
me@cs.hmc.edu Michael Elkins mutt dude
blong@fiction.net Brandon Long mutt and more
roessler@guug.de Thomas Roessler mutt pgp
4.6. Levelesláda formátumok
pl.
From me@cs.hmc.edu Fri, 11 Apr 1997 11:44:56 PST
4.7. Levelesláda rövidítések
!
a "$spool" (bejövő leveleket tartalmazó) mailboxra utal
>
az "$mbox" fájlra utal
<
a "$record" fájlra utal
-
a legutóbb nézett fájlra utal
~
a 'home' könyvtáradra utal
= vagy +
a "$folder" könyvtárra utal
@alias
az alapbeállítás szerinti mentési levelesládára utal, amit az alias címéből határoz meg a Mutt
4.8. Levelezőlisták kezelése
4.9. 'Delivery Status Notification' (DSN) (Levélküldés visszajelzése) támogatás
4.10. POP3 támogatás (opcionális)
4.11 IMAP támogatás (opcionális)
4.12 WWW böngésző indítása URL-re (külső)
macro index \cb |urlview\n
macro pager \cb |urlview\n