next up previous index
Következő: 15.70.9 NEMZETI KARAKTERKÉSZLETEK Fel: 15.70 less(1) Előző: 15.70.7 BILLENTYŰHOZZÁRENDELÉSEK   Index

15.70.8 BEMENETI ELŐFELDOLGOZÓ (INPUT PREPROCESSOR)

A less-hez definiálható bemeneti előfeldolgozó program. Mielőtt a less megnyit egy fájlt, először lehetőséget ad a bemeneti előfeldolgozónak a kijelzendő fájl tartalmának megváltoztatására. Ilyen előfeldolgozó egyszerűen bármilyen végrehajtható program (vagy shell szkript) lehet, mely a fájl tartalmát egy másik fájlba, az ún. helyettesítő fájlba írja. A helyettesítő fájl tartalma kerül valójában kijelzésre az eredeti helyett, habár ez a felhasználó felé úgy látszik, hogy az eredeti fájlt mutatja a program. A bemeneti előfeldolgozó egyetlen argumentumot kell fogadjon, az eredeti fájl nevét, ahogy azt a felhasználó megadta. Ezután létrehozza a helyettesítő fájt, és ennek nevét a standard kimenetre kell írja. Ha az előfeldolgozó nem adja meg a helyettesítő fájl nevét, a less az eredeti fáljt használja. A bemeneti előfeldolgozó nem kerül meghívásra a standard bemenet nézésekor. A bemeneti előfeldolgozó beállítására a `LESSOPEN' környezeti változó használható, amely az előfeldolgozó meghívásának parancssorát kell tartalmazza. Ezen parancssornak tartalmaznia a kell a ,,%s'' stringet, melyet a less az eredeti fájlnévvel helyettesít, amikor az előfeldolgozót meghívja.

Amikor a less olyan fájlt zár be, amely megnézéséhez bemeneti előfeldolgozó lett használva, egy bemeneti utófeldolgozó (postprocessor) is meghívásra kerül, amely feltehetően néhány kívánatos takarítási műveletet (mint pl. az előbbi helyettesítő fájl törlése) végez. Ez az utófeldolgozó két argumentumot kap: az eredeti és a helyettesítő fájl nevét. Utófeldolgozó beállításához a `LESSCLOSE' környezeti változónak kell értéket adni, mely az utófeldolgozót meghívó parancssort definiálja. Ez a parancssor kétszer tartalmazhatja a ,,%s'' stringet, melyek közül az első az eredeti, a második a helyettesítő fájl nevével lesz helyettesítve.

Például a legtöbb Unix rendszeren a következő két szkript megengedi, hogy a fájlokat tömörített formában tárolhassuk, de a less közvetlenül megmutassa őket:

lessopen.sh:
#! /bin/sh
case ,,$1'' in
*.Z) uncompress -c $1 >/tmp/less.$$ 2>/dev/null
if [ -s /tmp/less.$$ ]; then
echo /tmp/less.$$
else
rm -f /tmp/less.$$
fi
;;
esac
lessclose.sh:
#! /bin/sh
rm $2
Ezen szkriptek használatához olyan helyre kell őket tenni, ahol végrehajthatók, és alkalmazni kell a LESSOPEN=,,lessopen.sh %s'' illetve LESSCLOSE=,,lessclose.sh %s %s'' beállításokat. Ehhez hasonlóan persze bonyolultabb szkriptek is írhatók pl. más típusú tömörített fájlok kezelésére. A bemeneti előfeldolgozót úgy is beállíthatjuk, hogy a fájl adatait átcsövezze a less-nek ahelyett, hogy az adatokat egy helyettesítő fájlba tenné le. Ez például megóvhat attól, hogy a teljes fájl kitömörítését megvárjuk, mielőtt a fájl elejét megláthatnánk. Az ilyen bemeneti előfeldolgozót bemeneti csőnek nevezzük. A bemeneti cső a helyettesítő fájl nevének standard kimenetre írása helyett a helyettesítő fájl teljes tartalmát írja ki a standard kimenetére. Ha a bemeneti cső nem ír egyetlen karaktert sem a standard kimenetére, akkor a less az eredeti fájlt mutatja meg.

A bemeneti cső használatához a LESSOPEN tartalmának első karaktere a függőleges vonal (`|' jel) kell legyen. Például a legtöbb Unix rendszeren a következő szkript az előző példához hasonlóan fog működni:

lesspipe.sh:
!# /bin/sh
case ,,$1'' in
*.Z) uncompress -c $1 2>/dev/null
;;
esac
Ezen szkript használatához a szkriptet olyan helyre kell tenni, ahol végrehajtható és a LESSOPEN=,,|lesspipe.sh %s'' beállítást kell használni. Bemeneti cső használata esetén értelemszeűen nem szükséges az utófeldolgozó használata, hisz nincs helyettesítő fájl. Ebben az esetben a LESSCLOSE által megadott utófeldolgozónak ,,-'' lesz átadva, mint a helyettesítő fájl neve.


next up previous index
Következő: 15.70.9 NEMZETI KARAKTERKÉSZLETEK Fel: 15.70 less(1) Előző: 15.70.7 BILLENTYŰHOZZÁRENDELÉSEK   Index

1999-09-17