107.3 Lecke 1
Tanúsítvány: |
LPIC-1 |
---|---|
Verzió: |
5.0 |
Témakör: |
107 Adminisztrációs feladatok |
Fejezet: |
107.3 Lokalizáció és internacionalizáció |
Lecke: |
1/1 |
Bevezetés
Minden nagyobb Linux-disztribúció konfigurálható az egyéni lokalizációs beállítások használatára. Ezek a beállítások tartalmazzák a régióval és nyelvvel kapcsolatos meghatározásokat, mint például az időzóna, az interfész nyelve, valamint a karakterkódolás, amelyek az operációs rendszer telepítése során vagy azt követően bármikor módosíthatók.
Az alkalmazások a környezeti változókra, a rendszer konfigurációs fájljaira és a parancsokra támaszkodnak a megfelelő idő és nyelv kiválasztásában; ezért a legtöbb Linux-disztribúcióban szabványosított módon lehet beállítani az idő- és lokalizációs beállításokat. Ezek a beállítások nem csak a felhasználói élmény javítása miatt fontosak, hanem azért is, hogy a rendszeresemények időzítése - ami például a biztonsággal kapcsolatos problémák jelentéséhez fontos - helyesen legyen kiszámítva.
Ahhoz, hogy bármilyen írott szöveget képesek legyenek megjeleníteni, függetlenül a beszélt nyelvtől, a modern operációs rendszereknek szükségük van egy referencia karakterkódolási szabványra, és a Linux rendszerek sem különböznek ettől. Mivel a számítógépek csak számokkal tudnak bánni, a szöveges karakter nem más, mint egy grafikus szimbólummal társított szám. A különböző számítógépes platformok különböző számértékeket társíthatnak ugyanahhoz a karakterhez, ezért a kompatibilitásukhoz szükség van egy közös karakterkódolási szabványra. Az egyik rendszerben létrehozott szöveges dokumentum csak akkor lesz olvasható egy másik rendszerben, ha mindkettő egyetért a kódolási formátumban és abban, hogy melyik karakterhez milyen szám tartozik, vagy legalábbis ha tudják, hogyan kell a két szabvány között konvertálni.
A Linux-alapú rendszerek lokalizációs beállításainak heterogén jellege finom különbségeket eredményez a disztribúciók között. E különbségek ellenére minden disztribúció ugyanazokat az alapvető eszközöket és koncepciókat használja a rendszer internacionalizálási szempontjainak beállításához.
Időzónák
Az időzónák a Föld felszínének nagyjából arányos, egy órával egyenértékű, különálló sávjai, azaz a világ azon régiói, amelyek a nap bármelyik órájában ugyanazt az időpontot élik meg. Mivel nem létezik egyetlen olyan hosszúsági fok, amely az egész világ számára a nap kezdetének tekinthető, az időzónákat a nullmeridiánhoz (kezdő hosszúsági kör) viszonyítják, ahol a Föld hosszúsági szöge 0. A nullmeridiánon mért időt nevezzük koordinált világidőnek (Coordinated Universal Time), amelyet egyezményesen UTC-nek rövidítenek. Gyakorlati okokból az időzónák nem követik pontosan a referenciaponttól (a főmeridiántól) mért hosszanti távolságot. Ehelyett az időzónákat mesterségesen úgy alakítják ki, hogy azok az országok vagy más jelentős alegységek határait kövessék.
A politikai felosztás annyira lényeges, hogy az időzónákat az adott terület valamelyik fontos földrajzi tényezőjéről nevezik el, általában az adott zónán belüli nagy ország vagy város neve alapján. Az időzónákat azonban az UTC-hez viszonyított időeltolódásuk szerint is felosztják, és ez az eltolódás az adott zóna megjelölésére is használható. Az GMT-5 időzóna például olyan régiót jelöl, amelynek UTC-ideje öt órával előrébb van, azaz az adott régió 5 órával van az UTC mögött. Hasonlóképpen, a GMT+3 időzóna olyan régiót jelöl, amelynek UTC ideje három órával van lemaradva. A GMT kifejezést — a Greenwich Mean Time kifejezésből — az UTC szinonimájaként használják az eltoláson alapuló zónanevekben.
Egy csatlakoztatott gépet a világ különböző pontjairól lehet elérni, ezért jó gyakorlat, ha a hardver óráját UTC-re (a GMT+0 időzónára) állítjuk, és az időzóna kiválasztását mindig az egyes esetekre hagyjuk. A felhőszolgáltatásokat például általában úgy konfigurálják, hogy UTC-t használjanak, mivel ez segíthet enyhíteni a helyi idő és az ügyfelek vagy más szerverek időzítése közötti alkalmi ellentmondásokat. Ezzel szemben azok a felhasználók, akik távoli munkamenetet nyitnak a szerveren, talán a saját helyi időzónájukat akarják használni. Ennek megoldása az operációs rendszeren múlik, hogy az egyes eseteknek megfelelően állítsa be a megfelelő időzónát.
Az aktuális dátum és idő mellett a date
parancs az aktuálisan beállított időzónát is kiírja:
$ date Mon Oct 21 10:45:21 -03 2019
A UTC-hez viszonyított eltolódást a -03
érték adja meg, ami azt jelenti, hogy a megjelenített idő három órával kevesebb, mint a UTC. Ezért az UTC-idő három órával előrébb van, így az adott időpontnak megfelelő időzóna a GMT-3. A timedatectl
parancs, amely a systemd-t használó disztribúciókban elérhető, további részleteket jelenít meg a rendszer idejéről és dátumáról:
$ timedatectl Local time: Sat 2019-10-19 17:53:18 -03 Universal time: Sat 2019-10-19 20:53:18 UTC RTC time: Sat 2019-10-19 20:53:18 Time zone: America/Sao_Paulo (-03, -0300) System clock synchronized: yes systemd-timesyncd.service active: yes RTC in local TZ: no
Amint az az Time zone
bejegyzésben látható, a helységeken alapuló időzóna nevek — mint például az Amerika/Sao_Paulo
— szintén elfogadottak. A rendszer alapértelmezett időzónáját az /etc/timezone
fájlban tartjuk, a zóna teljes leírónevével vagy az időeltolódással. Az UTC-től való időeltolódással megadott általános időzóna neveknek a név első részeként tartalmazniuk kell az Etc
szót. Tehát, ha az alapértelmezett időzónát GMT+3-ra állítjuk, az időzóna nevének Etc/GMT+3
-nak kell lennie:
$ cat /etc/timezone Etc/GMT+3
Bár a helységeken alapuló időzónanevek nem igénylik az időzónától való eltolódást a működéshez, nem olyan egyszerű kiválasztani a megfelelőt. Ugyanannak a zónának több neve is lehet, ami megnehezíti a megjegyzését. Ennek a problémának az enyhítésére a tzselect
parancs egy interaktív módszert kínál, amely a felhasználót a megfelelő időzóna meghatározásához vezeti. A tzselect
parancsnak alapértelmezés szerint minden Linux disztribúcióban elérhetőnek kell lennie, mivel a GNU C könyvtárhoz kapcsolódó szükséges segédprogramokat tartalmazó csomag tartalmazza.
A tzselect
parancs hasznos lehet például egy olyan felhasználó számára, aki a “Brazil” területen lévő “São Paulo City” időzónáját szeretné meghatározni. A tzselect
a kívánt hely makrorégiójának megkérdezésével kezdődik:
$ tzselect Please identify a location so that time zone rules can be set correctly. Please select a continent, ocean, "coord", or "TZ". 1) Africa 2) Americas 3) Antarctica 4) Asia 5) Atlantic Ocean 6) Australia 7) Europe 8) Indian Ocean 9) Pacific Ocean 10) coord - I want to use geographical coordinates. 11) TZ - I want to specify the time zone using the Posix TZ format. #? 2
A 2
-es opció (észak- és dél-) amerikai helyszínekre vonatkozik, nem feltétlenül ugyanabban az időzónában. Lehetőség van az időzónát földrajzi koordinátákkal vagy az eltolásos jelöléssel, más néven Posix TZ formátummal is megadni. A következő lépés az ország kiválasztása:
Please select a country whose clocks agree with yours. 1) Anguilla 19) Dominican Republic 37) Peru 2) Antigua & Barbuda 20) Ecuador 38) Puerto Rico 3) Argentina 21) El Salvador 39) St Barthelemy 4) Aruba 22) French Guiana 40) St Kitts & Nevis 5) Bahamas 23) Greenland 41) St Lucia 6) Barbados 24) Grenada 42) St Maarten (Dutch) 7) Belize 25) Guadeloupe 43) St Martin (French) 8) Bolivia 26) Guatemala 44) St Pierre & Miquelon 9) Brazil 27) Guyana 45) St Vincent 10) Canada 28) Haiti 46) Suriname 11) Caribbean NL 29) Honduras 47) Trinidad & Tobago 12) Cayman Islands 30) Jamaica 48) Turks & Caicos Is 13) Chile 31) Martinique 49) United States 14) Colombia 32) Mexico 50) Uruguay 15) Costa Rica 33) Montserrat 51) Venezuela 16) Cuba 34) Nicaragua 52) Virgin Islands (UK) 17) Curaçao 35) Panama 53) Virgin Islands (US) 18) Dominica 36) Paraguay #? 9
Brazília területe négy időzónán átível, így az országinformáció önmagában nem elegendő az időzóna beállításához. A következő lépésben a tzselect
a helyi régió megadására kéri a felhasználót:
Please select one of the following time zone regions. 1) Atlantic islands 2) Pará (east); Amapá 3) Brazil (northeast: MA, PI, CE, RN, PB) 4) Pernambuco 5) Tocantins 6) Alagoas, Sergipe 7) Bahia 8) Brazil (southeast: GO, DF, MG, ES, RJ, SP, PR, SC, RS) 9) Mato Grosso do Sul 10) Mato Grosso 11) Pará (west) 12) Rondônia 13) Roraima 14) Amazonas (east) 15) Amazonas (west) 16) Acre #? 8
Nem minden helységnév áll rendelkezésre, de a legközelebbi régió kiválasztása is elegendő. A megadott információt a tzselect
a megfelelő időzóna megjelenítéséhez használja fel:
The following information has been given: Brazil Brazil (southeast: GO, DF, MG, ES, RJ, SP, PR, SC, RS) Therefore TZ='America/Sao_Paulo' will be used. Selected time is now: sex out 18 18:47:07 -03 2019. Universal Time is now: sex out 18 21:47:07 UTC 2019. Is the above information OK? 1) Yes 2) No #? 1 You can make this change permanent for yourself by appending the line TZ='America/Sao_Paulo'; export TZ to the file '.profile' in your home directory; then log out and log in again. Here is that TZ value again, this time on standard output so that you can use the /usr/bin/tzselect command in shell scripts: America/Sao_Paulo
Az így kapott időzóna neve, America/Sao_Paulo
, a /etc/timezone
állomány tartalmaként is használható a rendszer alapértelmezett időzónájának megadására:
$ cat /etc/timezone America/Sao_Paulo
Ahogy a tzselect
kimenete is mutatja, a TZ
környezeti változó határozza meg a shell munkamenet időzónáját, függetlenül attól, hogy a rendszer alapértelmezett időzónája milyen. Ha a ~/.profile
fájlhoz hozzáadjuk a TZ='America/Sao_Paulo'; export TZ
sort, akkor az America/Sao_Paulo
lesz a felhasználó jövőbeli munkameneteinek időzónája. A TZ
változót az aktuális munkamenet alatt ideiglenesen is módosíthatjuk, hogy egy másik időzóna idejét jelenítsük meg:
$ env TZ='Africa/Cairo' date Mon Oct 21 15:45:21 EET 2019
A példában az env
parancs az adott parancsot egy új sub-shell munkamenetben futtatja, az aktuális munkamenet környezeti változóival, kivéve a TZ
változót, amelyet a TZ='Africa/Cairo'
argumentummal módosít.
Nyári időszámítás
Sok régióban az év egy részében nyári időszámítást alkalmaznak — amikor az órákat tipikusan egy órával állítják át --, ami ahhoz vezethet, hogy egy rosszul konfigurált rendszer az évnek ebben az időszakában rossz időt jelent.
Az /etc/localtime
fájl tartalmazza azokat az adatokat, amelyeket az operációs rendszer az óra megfelelő beállításához használ. A szabványos Linux rendszerekben az összes időzóna fájlja az /usr/share/zoneinfo/
mappában található, így az /etc/localtime
csak egy szimbolikus hivatkozás az ebben a mappában található tényleges adatfájlra. Az /usr/share/zoneinfo/
állományok a megfelelő időzóna neve szerint vannak rendezve, így az Amerika/Sao_Paulo
időzóna adatfájlja a /usr/share/zoneinfo/Amerika/Sao_Paulo
lesz.
Mivel a nyári időszámítás definíciói változhatnak, fontos, hogy a /usr/share/zoneinfo/
fájlokat naprakészen tartsuk. A disztribúció által biztosított csomagkezelő eszköz upgrade parancsának frissítenie kell őket minden alkalommal, amikor egy új verzió elérhetővé válik.
Nyelv és karakterkódolás
A Linux-rendszerek számos nyelvet és nem nyugati karakterkódolást is tudnak használni, az úgynevezett locales meghatározásokkal. A legalapvetőbb helyi beállítás a LANG
környezeti változó definiálása, amelyből a legtöbb shell program azonosítja a használandó nyelvet.
A LANG
változó tartalma az ab_CD
formátumot követi, ahol ab
a nyelv kódja és CD
a régió kódja. A nyelvkódnak az ISO-639 szabványt, a régió kódjának pedig az ISO-3166 szabványt kell követnie. Egy brazil portugál nyelv használatára konfigurált rendszer esetén például a LANG
változót pt_BR.UTF-8
-ra kell beállítanunk:
$ echo $LANG pt_BR.UTF-8
Amint a fenti példa kimenetben látható, a LANG
változó tartalmazza a rendszerhez tervezett karakterkódolást is. Az ASCII, az American Standard Code for Information Interchange rövidítése, az első széles körben használt karakterkódolási szabvány volt az elektronikus kommunikációban. Mivel azonban az ASCII az elérhető számértékek nagyon korlátozott tartományával rendelkezik, és az angol ábécén alapult, nem tartalmazza a más nyelvek által használt karaktereket, illetve a nem ábécés szimbólumok kibővített készletét. Az UTF-8 kódolás egy Unicode szabvány a szokásos nyugati karakterek, valamint számos más, nem hagyományos szimbólum számára. Az Unicode Consortium, az Unicode szabvány fenntartója szerint a számítógépes platformok közötti kompatibilitás biztosítása érdekében alapértelmezés szerint ezt kell alkalmazni:
The Unicode Standard provides a unique number for every character, no matter what platform, device, application or language. It has been adopted by all modern software providers and now allows data to be transported through many different platforms, devices and applications without corruption. Support of Unicode forms the foundation for the representation of languages and symbols in all major operating systems, search engines, browsers, laptops, and smart phones — plus the Internet and World Wide Web (URLs, HTML, XML, CSS, JSON, etc.). (…) the Unicode Standard and the availability of tools supporting it are among the most significant recent global software technology trends. (Az Unicode szabvány minden karakterhez egyedi számot biztosít, függetlenül a platformtól, eszköztől, alkalmazástól vagy nyelvtől. Ezt a szabványt minden modern szoftvergyártó elfogadta, és most már lehetővé teszi, hogy az adatokat számos különböző platformon, eszközön és alkalmazáson keresztül lehessen továbbítani, anélkül, hogy azok sérülnének. Az Unicode támogatása képezi az alapját a nyelvek és szimbólumok megjelenítésének az összes főbb operációs rendszeren, keresőmotorban, böngészőben, laptopon és okostelefonon — valamint az interneten és a világhálón (URL-ek, HTML, XML, CSS, JSON stb.). (…) az Unicode-szabvány és az azt támogató eszközök elérhetősége a legjelentősebb legújabb globális szoftvertechnológiai trendek közé tartozik.)
What is Unicode?
Egyes rendszerek továbbra is használhatják az ISO által meghatározott szabványokat — például az ISO-8859-1 szabványt — a nem ASCII karakterek kódolására. Az ilyen karakterkódolási szabványokat azonban az Unicode kódolási szabványok javára el kell törölni. Minden nagyobb operációs rendszer alapértelmezés szerint az Unicode szabványt alkalmazza.
A rendszerszintű nyelvi beállítások a /etc/locale.conf
fájlban vannak megadva. A LANG
változót és más, a nyelvjáráshoz kapcsolódó változókat ebben a fájlban rendeljük hozzá úgy, mint egy egyszerű shell változót:
$ cat /etc/locale.conf LANG=pt_BR.UTF-8
A felhasználók egyéni nyelvi beállításokat használhatnak a LANG
környezeti változó átdefiniálásával. Ez alkalmazható csak az aktuális munkamenetre vagy a jövőbeli munkamenetekre is, ha az új definíciót hozzáadjuk a felhasználó Bash-profiljához a ~/.bash_profile
vagy a ~/.profile
állományban. Amíg azonban a felhasználó be nem jelentkezik, az alapértelmezett rendszer locale-t továbbra is a felhasználó független programok fogják használni, mint például a kijelzőkezelő bejelentkezési képernyője.
Tip
|
A systemd rendszermenedzsert használó rendszereken elérhető |
A LANG
változó mellett más környezeti változók is befolyásolnak bizonyos helyi vonatkozásokat, például azt, hogy milyen pénznem szimbólumot használjunk, vagy a számok helyes ezres elválasztójelét:
LC_COLLATE
-
Az ábécé sorrend beállítása. Egyik célja, hogy meghatározza a fájlok és mappák sorrendjét.
LC_CTYPE
-
Bizonyos karakterkészletek rendszer által történő használatának beállítása. Meghatározza például, hogy mely karaktereket tekintse nagybetűs (uppercase) vagy kisbetűs (lowercase) karaktereknek.
LC_MESSAGES
-
A programüzenetek megjelenítési nyelvének (többnyire GNU programok) beállítása.
LC_MONETARY
-
A pénzegység és a pénznem formátumának beállítása.
LC_NUMERIC
-
A nem monetáris értékek numerikus formátumának beállítása. Fő célja az ezres és a tizedesvessző elválasztójelek meghatározása.
LC_TIME
-
Az idő és dátum formátumának beállítása.
LC_PAPER
-
A szabványos papírméret beállítása.
LC_ALL
-
Minden más változót felülír, beleértve a
LANG
változót is.
A locale
parancs megjeleníti az összes definiált változót az aktuális locale konfigurációban:
$ locale LANG=pt_BR.UTF-8 LC_CTYPE="pt_BR.UTF-8" LC_NUMERIC=pt_BR.UTF-8 LC_TIME=pt_BR.UTF-8 LC_COLLATE="pt_BR.UTF-8" LC_MONETARY=pt_BR.UTF-8 LC_MESSAGES="pt_BR.UTF-8" LC_PAPER=pt_BR.UTF-8 LC_NAME=pt_BR.UTF-8 LC_ADDRESS=pt_BR.UTF-8 LC_TELEPHONE=pt_BR.UTF-8 LC_MEASUREMENT=pt_BR.UTF-8 LC_IDENTIFICATION=pt_BR.UTF-8 LC_ALL=
Az egyetlen nem definiált változó az LC_ALL
, amely az összes többi nyelvi beállítás ideiglenes felülírására használható. A következő példa azt mutatja be, hogy a date
parancs — egy pt_BR.UTF-8
nyelvi beállítású rendszerben futva — hogyan módosítja a kimenetét, hogy megfeleljen az új LC_ALL
változónak:
$ date seg out 21 10:45:21 -03 2019 $ env LC_ALL=en_US.UTF-8 date Mon Oct 21 10:45:21 -03 2019
Az LC_ALL
változó módosítása a hét napjának és a hónap nevének rövidítését amerikai angol nyelven (en_US
) jelenítette meg. Nem kötelező azonban minden változóhoz ugyanazt a nyelvi tartományt beállítani. Lehetséges például, hogy a nyelvet pt_BR
-re, a számformátumot (LC_NUMERIC
) pedig az amerikai szabványra állítsuk be.
Egyes lokalizációs beállítások megváltoztatják, hogy a programok hogyan kezelik az ábécésorrendet és a számformátumokat. Míg a hagyományos programok általában felkészültek arra, hogy ilyen helyzetekben helyesen válasszák ki a közös nyelvterületet, előfordulhat, hogy a scriptek váratlanul viselkednek, például amikor megpróbálnak helyesen ábécérendbe rendezni egy elemlistát. Ezért ajánlott a LANG
környezeti változót a közös C
nyelvterületre állítani, mint például a LANG=C
, így a script egyértelmű eredményeket ad, függetlenül attól, hogy milyen lokalizációs definíciókat használnak a rendszerben, ahol végrehajtják. A C lokalizáció csak egy egyszerű bytewise összehasonlítást végez, így ez jobban is fog teljesíteni, mint a többi lehetőség.
Kódolási konverzió
A szöveg érthetetlen karakterekkel kerülhet ábrázolásra, ha olyan rendszeren jelenik meg, amelynek karakterkódolási konfigurációja eltér attól a rendszertől, ahol a szöveget létrehozták. Az iconv
parancs használható ennek a problémának a megoldására, a fájl eredeti karakterkódolásáról a kívánt karakterkódolásra való átkonvertálásával. Például egy original.txt
nevű fájl ISO-8859-1 kódolásból az UTF-8 kódolást használó converted.txt
nevű fájlba való átalakításához a következő parancs használható:
$ iconv -f ISO-8859-1 -t UTF-8 original.txt > converted.txt
Az -f ISO-8859-1
(vagy --from-code=ISO-8859-1
) kapcsoló az eredeti fájl kódolását, a -t UTF-8
(vagy --to-code=UTF-8
) kapcsoló pedig a konvertált fájl kódolását állítja be. Az iconv
parancs által támogatott összes kódolást az iconv -l
vagy iconv --list
parancs listázza. A példában szereplő kimeneti átirányítás helyett a -o converted.txt
vagy a --output converted.txt
opció is használható.
Gyakorló feladatok
-
A
date
parancs alábbi kimenete alapján mi a rendszer időzónája GMT jelölésben?$ date Mon Oct 21 18:45:21 +05 2019
-
Milyen fájlra kell mutatnia a
/etc/localtime
szimbolikus linknek ahhoz, hogy a rendszer alapértelmezett helyi idejeEurópa/Brüsszel
legyen? -
Előfordulhat, hogy a szövegfájlokban lévő karakterek nem jelennek meg helyesen egy olyan rendszerben, amelynek karakterkódolása eltér a szöveges dokumentumban használt karakterkódolástól. Hogyan lehet az
iconv
segítségével a WINDOWS-1252 kódolásúold.txt
fájlt az UTF-8 kódolásúnew.txt
fájlba konvertálni?
Gondolkodtató feladatok
-
Melyik paranccsal lesz a
Pacific/Auckland
az alapértelmezett időzóna az aktuális shell munkamenethez? -
Az
uptime
parancs többek között a rendszer terhelésének átlagát mutatja meg törtszámokban. Az aktuális helyi beállítások alapján dönti el, hogy a tizedesjel pont vagy vessző legyen-e. Ha például az aktuális nyelvi beállítási területde_DE.UTF-8
(a németországi szabványos nyelvi terület), akkor azuptime
vesszőt használ elválasztóként. Mivel tudjuk, hogy az amerikai angol nyelvben a pont használatos elválasztóként, milyen parancs hatására választja el azuptime
a törtrészeket vessző helyett ponttal az aktuális munkamenet hátralévő részében? -
Az
iconv
parancs a célkarakterkészleten kívüli összes karaktert kérdőjellel helyettesíti. Ha a//TRANSLIT
parancs a célkódoláshoz van csatolva, akkor a célkarakterkészletben nem szereplő karaktereket egy vagy több hasonló kinézetű karakterrel helyettesíti (átírja). Hogyan lehetne ezzel a módszerrel egyreadme.txt
nevű UTF-8 szövegfájlt egyascii.txt
nevű egyszerű ASCII fájlba konvertálni?
Összefoglalás
Ez a lecke azt mutatja be, hogyan állíthatunk be egy Linuxot úgy, hogy egyéni nyelvi és időbeállításokkal dolgozzon. A karakterkódolási fogalmakkal és beállításokkal is foglalkozunk, mivel ezek nagyon fontosak a szöveges tartalmak helyes megjelenítéséhez. A lecke a következő témákat járja körül:
-
Hogyan választják ki a Linux rendszerek a nyelvet a shell üzenetek megjelenítéséhez.
-
Annak megértése, hogy az időzónák hogyan befolyásolják a helyi időt.
-
Hogyan lehet azonosítani a megfelelő időzónát és ennek megfelelően módosítani a rendszerbeállításokat.
-
Melyek a karakterkódolások és hogyan kell konvertálni közöttük.
Az említett parancsok és procedúrák az alábbiak voltak:
-
Lokációval és idővel kapcsolatos környezeti változók, mint például az
LC_ALL
,LANG
ésTZ
. -
/etc/timezone
-
/etc/localtime
-
/usr/share/zoneinfo/
-
locale
-
tzselect
-
timedatectl
-
date
-
iconv
Válaszok a gyakorló feladatokra
-
A
date
parancs alábbi kimenete alapján mi a rendszer időzónája GMT jelölésben?$ date Mon Oct 21 18:45:21 +05 2019
Az
Etc/GMT+5
az időzóna. -
Milyen fájlra kell mutatnia a
/etc/localtime
szimbolikus linknek ahhoz, hogy a rendszer alapértelmezett helyi idejeEurópa/Brüsszel
legyen?Az
/etc/localtime
linknek a/usr/share/zoneinfo/Europe/Brussels
fájlra kell mutatnia. -
Előfordulhat, hogy a szövegfájlokban lévő karakterek nem jelennek meg helyesen egy olyan rendszerben, amelynek karakterkódolása eltér a szöveges dokumentumban használt karakterkódolástól. Hogyan lehet az
iconv
segítségével a WINDOWS-1252 kódolásúold.txt
fájlt az UTF-8 kódolásúnew.txt
fájlba konvertálni?Az
iconv -f WINDOWS-1252 -t UTF-8 -o new.txt old.txt
parancs fogja végrehajtani a kívánt konverziót.
Válaszok a gondolkodtató feladatokra
-
Melyik paranccsal lesz a
Pacific/Auckland
az alapértelmezett időzóna az aktuális shell munkamenethez?export TZ=Pacific/Auckland
-
Az
uptime
parancs többek között a rendszer terhelésének átlagát mutatja meg törtszámokban. Az aktuális helyi beállítások alapján dönti el, hogy a tizedesjel pont vagy vessző legyen-e. Ha például az aktuális nyelvi beállítási területde_DE.UTF-8
(a németországi szabványos nyelvi terület), akkor azuptime
vesszőt használ elválasztóként. Mivel tudjuk, hogy az amerikai angol nyelvben a pont használatos elválasztóként, milyen parancs hatására választja el azuptime
a törtrészeket vessző helyett ponttal az aktuális munkamenet hátralévő részében?Az
export LC_NUMERIC=en_US.UTF-8
vagyexport LC_ALL=en_US.UTF-8
parancsok. -
Az
iconv
parancs a célkarakterkészleten kívüli összes karaktert kérdőjellel helyettesíti. Ha a//TRANSLIT
parancs a célkódoláshoz van csatolva, akkor a célkarakterkészletben nem szereplő karaktereket egy vagy több hasonló kinézetű karakterrel helyettesíti (átírja). Hogyan lehetne ezzel a módszerrel egyreadme.txt
nevű UTF-8 szövegfájlt egyascii.txt
nevű egyszerű ASCII fájlba konvertálni?Az
iconv -f UTF-8 -t ASCII//TRANSLIT -o ascii.txt readme.txt
parancs hajtja végre a kívánt konverziót.