107.3 Lektion 1
Zertifikat: |
LPIC-1 |
---|---|
Version: |
5.0 |
Thema: |
107 Administrative Aufgaben |
Lernziel: |
107.3 Lokalisierung und Internationalisierung |
Lernziel: |
1 von 1 |
Einführung
Alle gängigen Linux-Distributionen lassen sich mit benutzerdefinierten Lokalisierungseinstellungen konfigurieren. Diese Einstellungen umfassen regionale und sprachbezogene Definitionen wie die Zeitzone, die Sprache der Benutzeroberfläche oder die Zeichenkodierung und können während der Installation des Betriebssystems oder zu einem späteren Zeitpunkt geändert werden.
Anwendungen verlassen sich auf Umgebungsvariablen, Systemkonfigurationsdateien und Befehle, um über die richtige Zeit und Sprache zu entscheiden; daher verfügen die meisten Linux-Distributionen über eine standardisierte Methode zur Anpassung der Zeit- und Lokalisierungseinstellungen. Diese Anpassungen sind nicht nur für die Benutzerfreundlichkeit wichtig, sondern stellen auch sicher, dass der Zeitpunkt von Systemereignissen — wichtig z.B. für die Meldung sicherheitsrelevanter Probleme — korrekt berechnet wird.
Um jeden Text, unabhängig von der gesprochenen Sprache, darstellen zu können, benötigen moderne Betriebssysteme einen Referenzstandard zur Zeichenkodierung, auch Linux-Systeme. Da Computer nur mit Zahlen umgehen können, ist ein Textzeichen nichts anderes als eine Zahl, die einem grafischen Symbol zugeordnet ist. Verschiedene Computerplattformen könnten demselben Zeichen unterschiedliche Zahlenwerte zuordnen — daher bedarf es eines gemeinsamen Standards zur Zeichenkodierung, um sie kompatibel zu machen. Ein Textdokument, das in einem System erstellt wurde, ist nur dann in einem anderen System lesbar, wenn beide sich über das Kodierungsformat einig sind und darüber, welche Zahl mit welchem Zeichen verbunden ist — oder wenn sie zumindest wissen, wie sie zwischen zwei Standards konvertieren.
Die uneinheitlichen Lokalisierungseinstellungen in Linux-basierten Systemen führen zu subtilen Unterschieden zwischen den Distributionen. Doch trotz dieser Unterschiede haben alle Distributionen die gleichen Basiswerkzeuge und Konzepte zur Einrichtung der Internationalisierungsparameter eines Systems.
Zeitzonen
Zeitzonen sind grob proportionale, diskrete Bänder der Erdoberfläche, die einer Stunde entsprechen, d.h. Regionen der Welt, die zu jedem Zeitpunkt dieselbe Stunde des Tages haben. Da es nicht einen Längengrad gibt, der den Tagesbeginn für die ganze Welt markieren kann, sind die Zeitzonen relativ zum Primär- oder Nullmeridian, dessen Längengradwinkel der Erde als 0 definiert ist. Die Zeit am Nullmeridian wird als Koordinierte Universalzeit (Universal Time Coordinated) bezeichnet, kurz UTC. Aus praktischen Gründen folgen die Zeitzonen nicht exakten Abständen vom Bezugspunkt (dem Nullmeridian), sondern sind Ländergrenzen oder anderen politischen oder geographischen Gegebenheiten angepasst.
Politische Grenzen sind so relevant, dass Zeitzonen oft nach größeren Ländern oder Städten innerhalb der jeweiligen Zone benannt sind. Die Zeitzonen werden jedoch nach ihrem Zeitversatz relativ zu UTC unterteilt, und dieser Versatz dient auch der Bezeichnung der jeweiligen Zone. Die Zeitzone GMT-5 gibt z.B. die Region an, für die die UTC-Zeit fünf Stunden voraus ist; die Region liegt also 5 Stunden hinter UTC. Ebenso zeigt die Zeitzone GMT+3 eine Region an, in der es drei Stunden später ist als in der UTC-Zone. GMT, die Abkürzung von Greenwich Mean Time, wird als Synonym für UTC in den offsetbasierten Zonennamen verwendet.
Auf einen vernetzten Rechner kann von verschiedenen Teilen der Welt aus zugegriffen werden, daher ist es gute Praxis, die Hardware-Uhr auf UTC (die Zeitzone GMT+0) einzustellen und die Wahl der Zeitzone dem jeweiligen Einzelfall zu überlassen. Clouddienste bespielsweise werden üblicherweise so konfiguriert, dass sie UTC verwenden, um gelegentliche Inkonsistenzen zwischen der lokalen Zeit und der Zeit auf den Clients oder auf anderen Servern abzumildern. Im Gegensatz dazu möchten Benutzer, die eine Remotesitzung auf dem Server öffnen, möglicherweise ihre lokale Zeitzone verwenden. Es liegt also am Betriebssystem, die richtige Zeitzone für den jeweiligen Fall einzurichten.
Neben dem aktuellen Datum und der Uhrzeit gibt der Befehl date
auch die aktuell konfigurierte Zeitzone aus:
$ date Mon Oct 21 10:45:21 -03 2019
Der Offset relativ zu UTC ist mit -03
angegeben — die angezeigte Zeit liegt also drei Stunden hinter UTC. Oder anders: Die UTC-Zeit ist drei Stunden voraus, weshalb GMT-3 die entsprechende Zeitzone darstellt. Der Befehl timedatectl
, der in Distributionen mit systemd verfügbar ist, zeigt weitere Details über die Systemzeit und das Datum an:
$ 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
Wie im Eintrag Time zone
(Zeitzone) zu sehen, werden Zeitzonennamen auch auf der Basis von Orten — wie America/Sao_Paulo
— akzeptiert. Die Standardzeitzone für das System ist in der Datei /etc/timezone
definiert, entweder durch den vollständigen beschreibenden Namen der Zone oder den Offset. Generische Zeitzonennamen, die durch den UTC-Offset angegeben werden, müssen Etc
als ersten Teil des Namens enthalten. Um also die Standardzeitzone auf GMT+3 zu setzen, lautet der Name der Zeitzone Etc/GMT+3
:
$ cat /etc/timezone Etc/GMT+3
Obwohl Zeitzonennamen, die auf Ortsnamen basieren, keinen Offset-Angabe benötigen, um zu funktionieren, ist die Auswahl nicht so einfach. Dieselbe Zone kann mehr als einen Namen haben, was es schwierig machen kann, sie sich zu merken. Bei diesem Problem hilft der Befehl tzselect
, der den Benutzer interaktiv zur richtigen Zeitzonendefinition führt. tzselect
ist in den meisten Linux-Distributionen standardmäßig verfügbar, da er Teil des Pakets ist, das die notwendigen Hilfsprogramme zur GNU C Bibliothek enthält.
Der Befehl tzselect
ist z.B. für einen Benutzer nützlich, der die Zeitzone für “São Paulo City” in “Brasilien” ermitteln möchte. tzselect
beginnt mit der Abfrage der Makroregion des gewünschten Ortes:
$ 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
Option 2
ist für (nord- und süd-)amerikanische Standorte, die nicht unbedingt in derselben Zeitzone liegen. Es ist auch möglich, die Zeitzone mit geografischen Koordinaten oder mit der Offset-Notation, auch bekannt als das Posix TZ-Format, anzugeben. Der nächste Schritt ist die Auswahl des Landes:
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
Brasilien erstreckt sich über vier Zeitzonen, daher reicht die Länderinformation allein nicht aus, um die Zeitzone einzustellen. Im nächsten Schritt verlangt tzselect
vom Benutzer daher die Angabe der Region:
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
Es sind nicht alle Ortsnamen verfügbar, aber die Auswahl der nächstgelegenen Region ist genau genug. Die angegebenen Informationen nutzt tzselect
dann, um die entsprechende Zeitzone anzuzeigen:
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
Sie können den resultierenden Namen der Zeitzone, America/Sao_Paulo
, auch als Inhalt der Datei /etc/timezone
nutzen, um die Standardzeitzone für das System zu bestimmen:
$ cat /etc/timezone America/Sao_Paulo
Wie die Ausgabe von tzselect
zeigt, definiert die Umgebungsvariable TZ
die Zeitzone für die Shell-Sitzung, unabhängig von der Standardzeitzone des Systems. Durch Hinzufügen der Zeile TZ='America/Sao_Paulo'; export TZ
in die Datei ~/.profile
wird America/Sao_Paulo
zur Zeitzone für künftige Sitzungen des Benutzers. Sie können die Variable TZ
auch während der aktuellen Sitzung vorübergehend ändern, um die Uhrzeit in einer anderen Zeitzone anzuzeigen:
$ env TZ='Africa/Cairo' date Mon Oct 21 15:45:21 EET 2019
Im Beispiel führt der Befehl env
den angegebenen Befehl in einer neuen Subshell-Sitzung mit denselben Umgebungsvariablen der aktuellen Sitzung aus, mit Ausnahme der Variable TZ
, die durch das Argument TZ='Afrika/Kairo'
geändert wird.
Sommerzeit
In vielen Regionen gilt für einen Teil des Jahres die Sommerzeit, was dazu führen kann, dass ein falsch konfiguriertes System während dieser Periode die falsche Zeit meldet.
Die Datei /etc/localtime
enthält die Daten, anhand derer das Betriebssystem seine Uhr einstellt. Standard-Linux-Systeme haben Dateien für alle Zeitzonen im Verzeichnis /usr/share/zoneinfo/
, so dass /etc/localtime
nur ein symbolischer Link auf die passende Datei in diesem Verzeichnis ist. Die Dateien in /usr/share/zoneinfo/
sind nach dem Namen der entsprechenden Zeitzone organisiert — die Datei für die Zeitzone America/Sao_Paulo
heißt folglich /usr/share/zoneinfo/America/Sao_Paulo
.
Da sich die Definitionen für die Sommerzeit ändern können, ist es wichtig, die Dateien in /usr/share/zoneinfo/
auf dem neuesten Stand zu halten. Der Upgrade-Befehl des von der Distribution bereitgestellten Paketverwaltungswerkzeugs sollte diese stets aktuell halten.
Sprache und Zeichenkodierung
Linux-Systeme können mit einer Vielzahl von Sprachen und nicht westlichen Zeichenkodierungen arbeiten, sogenannten Locales. Die grundlegendste Gebietsschemakonfiguration ist die Definition der Umgebungsvariablen LANG
, anhand derer die meisten Shellprogramme die zu verwendende Sprache identifizieren.
Der Inhalt der Variablen LANG
folgt dem Format ab_CD
, wobei ab
für den Sprachcode und CD
für den Regionalcode steht. Der Sprachcode sollte dem ISO-639-Standard und der Regionalcode dem ISO-3166-Standard folgen. Bei einem System, das für brasilianisches Portugiesisch konfiguriert ist, sollte die Variable LANG
beispielsweise auf pt_BR.UTF-8
gesetzt sein:
$ echo $LANG pt_BR.UTF-8
Wie in der Beispielausgabe zu sehen, enthält die Variable LANG
auch die für das System vorgesehene Zeichenkodierung. ASCII, kurz für American Standard Code for Information Interchange, war der erste weit verbreitete Zeichenkodierungsstandard für die elektronische Kommunikation. Da ASCII jedoch einen sehr begrenzten Bereich verfügbarer numerischer Werte hat und auf dem englischen Alphabet basiert, enthält es keine Zeichen, die von anderen Sprachen verwendet werden, oder einen erweiterten Satz nicht-alphabetischer Symbole. Die UTF-8-Kodierung ist ein Unicode-Standard für die üblichen westlichen Zeichen sowie viele andere nicht-konventionelle Symbole. Wie vom Unicode Consortium, dem verantwortlichen Gremium für den Unicode-Standards, angegeben, sollte er standardmäßig übernommen werden, um die Kompatibilität zwischen Computerplattformen zu gewährleisten:
Der Unicode-Standard bietet eine eindeutige Nummer für jedes Zeichen, unabhängig von Plattform, Gerät, Anwendung oder Sprache. Er wurde von allen modernen Softwareanbietern übernommen und ermöglicht es nun, dass Daten unverfälscht über viele verschiedene Plattformen, Geräte und Anwendungen übertragen werden können. Die Unterstützung von Unicode bildet die Grundlage für die Darstellung von Sprachen und Symbolen in allen wichtigen Betriebssystemen, Suchmaschinen, Browsern, Laptops und Smartphones — sowie im Internet und World Wide Web (URLs, HTML, XML, CSS, JSON, etc.). (…) der Unicode-Standard und die Verfügbarkeit von Werkzeugen, die ihn unterstützen, gehören zu den bedeutendsten jüngsten globalen Trends der Softwaretechnologie.
What is Unicode?
Einige Systeme mögen immer noch ISO-definierte Standards — wie den Standard ISO-8859-1 — für die Kodierung von Nicht-ASCII-Zeichen verwenden. Solche Zeichenkodierungsstandards sollten jedoch zu Gunsten des Unicode-Kodierungsstandards abgelehnt werden. Alle größeren Betriebssysteme tendieren dazu, den Unicode-Standard per Default zu übernehmen.
Systemweite Locale-Einstellungen definieren Sie in der Datei /etc/locale.conf
. Die Variable LANG
und andere ortsabhängige Variablen werden in dieser Datei wie gewöhnliche Shellvariable zugewiesen, zum Beispiel:
$ cat /etc/locale.conf LANG=pt_BR.UTF-8
Benutzer können Ihre Gebietsschemakonfiguration anpassen, indem sie die Umgebungsvariable LANG
neu definieren. Dies ist nur für die aktuelle Sitzung oder auch für künftige Sitzungen möglich, indem die neue Definition im Bash-Profil des Benutzers in ~/.bash_profile
oder ~/.profile
ergänzt wird. Bis sich der Benutzer anmeldet, wird die Standardsystemsprache jedoch weiterhin von benutzerunabhängigen Programmen verwendet, wie z.B. dem Anmeldebildschirm des Displaymanagers.
Tip
|
Sie können den Befehl |
Neben der Variable LANG
wirken sich auch andere Umgebungsvariablen auf bestimmte Aspekte des Gebietsschemas aus, wie z.B. das zu verwendende Währungssymbol oder das Tausendertrennzeichen für Zahlen:
LC_COLLATE
-
Legt die alphabetische Reihenfolge fest, z.B. von Dateien und Verzeichnisse bei Auflistungen.
LC_CTYPE
-
Legt fest, wie das System bestimmte Gruppen von Zeichen behandelt, z.B. welche Zeichen als Großbuchstaben oder Kleinbuchstaben gelten.
LC_MESSAGES
-
Legt die Sprache für die Anzeige von Programmmeldungen fest (meist GNU-Programme).
LC_MONETARY
-
Legt die Währung und das Währungsformat fest.
LC_NUMERIC
-
Legt das numerische Format für nicht-monetäre Werte fest, insbesondere Tausender- und Dezimaltrennzeichen festzulegen.
LC_TIME
-
Legt das Zeit- und Datumsformat fest.
LC_PAPER
-
Legt das Standardpapierformat fest.
LC_ALL
-
Hat Vorrang vor allen anderen Variablen, einschließlich
LANG
.
Der Befehl locale
zeigt alle definierten Variablen in der aktuellen Gebietsschemakonfiguration an:
$ 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=
Die einzige nicht definierte Variable ist LC_ALL
, die dazu dient, alle anderen Gebietsschemaeinstellungen vorübergehend außer Kraft zu setzen. Das folgende Beispiel zeigt, wie der Befehl date
— der in einem System ausgeführt wird, das für das Gebietsschema pt_BR.UTF-8
konfiguriert ist — seine Ausgabe so ändert, dass die Ausgabe der neuen Variable LC_ALL
entspricht:
$ 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
Die Änderung der Variable LC_ALL
sorgt dafür, dass die beiden Abkürzungen für den Wochentag und den Monatsnamen in amerikanischem Englisch (en_US
) erscheinen. Es ist jedoch nicht zwingend erforderlich, für alle Variablen das gleiche Gebietsschema einzustellen. Sie können z.B. die Sprache auf pt_BR
und das Zahlenformat (LC_NUMERIC
) auf den amerikanischen Standard einstellen.
Einige Lokalisierungseinstellungen beeinflussen, wie Programme mit alphabetischer Anordnung und Zahlenformaten umgehen. Während herkömmliche Programme in der Regel darauf ausgelegt sind, in solchen Situationen ein gemeinsames Gebietsschema korrekt zu wählen, verhalten sich Skripte oft unerwartet, wenn sie z.B. versuchen, eine Liste von Einträgen alphabetisch zu ordnen. Aus diesem Grund empfiehlt es sich, die Umgebungsvariable LANG
auf das gemeinsame C
-Gebietsschema zu setzen, wie in LANG=C
, damit das Skript eindeutige Ergebnisse liefert, unabhängig von den Lokalisierungsdefinitionen, die in dem System verwendet werden, in dem es ausgeführt wird. Das C-Gebietsschema führt nur einen einfachen byteweisen Vergleich durch, daher wird es auch besser abschneiden als die anderen.
Kodierungsumwandlung
Text kann mit unverständlichen Zeichen erscheinen, wenn er auf einem System mit einer anderen Zeichenkodierungskonfiguration angezeigt wird als auf dem System, auf dem er erstellt wurde. Der Befehl iconv
kann dieses Problem lösen, indem er die Datei von ihrer ursprünglichen Zeichenkodierung in die gewünschte konvertiert. Um z.B. eine Datei original.txt
von der ISO-8859-1-Kodierung in die Datei mit dem Namen converted.txt
mit UTF-8-Kodierung zu konvertieren, nutzen Sie den folgenden Befehl:
$ iconv -f ISO-8859-1 -t UTF-8 original.txt > converted.txt
Die Option -f ISO-8859-1
(oder --from-code=ISO-8859-1
) setzt die Kodierung der Originaldatei und die Option -t UTF-8
(oder --to-code=UTF-8
) die für die konvertierte Datei. Alle vom Befehl iconv
unterstützten Kodierungen zeigt der Befehl iconv -l
oder iconv --list
. Statt der Ausgabeumleitung, wie im Beispiel, könnte Sie auch die Option -o converted.txt
oder --output converted.txt
verwenden.
Geführte Übungen
-
Basierend auf der folgenden Ausgabe des Befehls
date
, was ist die Zeitzone des Systems in GMT-Notation?$ date Mon Oct 21 18:45:21 +05 2019
-
Auf welche Datei sollte der symbolische Link
/etc/localtime
zeigen, umEurope/Brussels
zur Standardortszeit des Systems zu machen? -
Zeichen in Textdateien werden auf einem System mit einer anderen Zeichenkodierung als der im Textdokument verwendeten möglicherweise nicht korrekt wiedergegeben. Wie nutzen Sie
iconv
, um die WINDOWS-1252-kodierte Dateiold.txt
in die Dateinew.txt
mit UTF-8-Kodierung zu konvertieren?
Offene Übungen
-
Welcher Befehl macht
Pacific/Auckland
zur Standardzeitzone für die aktuelle Shellsitzung? -
Der Befehl
uptime
zeigt u.a. den Lastdurchschnitt des Systems in Kommazahlen an. Er verwendet die aktuellen Gebietsschemaeinstellungen, um zu entscheiden, ob das Dezimaltrennzeichen ein Punkt oder ein Komma ist. Wenn zum Beispiel das aktuelle Gebietsschema aufde_DE.UTF-8
(das Standardgebietsschema von Deutschland) eingestellt ist, wirduptime
ein Komma als Trennzeichen setzen. Welcher Befehl bewirkt, dassuptime
die Werte für den Rest der aktuellen Sitzung mit einem Punkt statt einem Komma als Trennzeichen darstellt? -
Der Befehl
iconv
ersetzt alle Zeichen außerhalb des Zielzeichensatzes durch ein Fragezeichen. Wenn//TRANSLIT
an die Zielkodierung angehängt wird, werden Zeichen, die nicht im Zielzeichensatz dargestellt sind, durch ein oder mehrere ähnlich aussehende Zeichen ersetzt (transliteriert). Wie könnten Sie diese Methode nutzen, um eine UTF-8-Textdatei namensreadme.txt
in eine einfache ASCII-Datei namensascii.txt
zu konvertieren?
Zusammenfassung
Diese Lektion erläutert, wie Sie ein Linux-System für die Arbeit mit benutzerdefinierten Sprachen und Zeiteinstellungen einrichten. Es werden auch Konzepte und Einstellungen für die Zeichenkodierung behandelt, da diese für die korrekte Darstellung von Textinhalten sehr wichtig sind. In dieser Lektion werden die folgenden Themen behandelt:
-
Wie Linux-Systeme die Sprache für die Anzeige von Shell-Meldungen auswählen.
-
Verstehen, wie Zeitzonen die Ortszeit beeinflussen.
-
Wie Sie die richtige Zeitzone identifizieren und die Systemeinstellungen entsprechend ändern.
-
Was Zeichenkodierungen sind und wie man zwischen ihnen konvertiert.
Die angesprochenen Befehle und Prozeduren sind:
-
Gebietsschema- und zeitbezogene Umgebungsvariablen, wie
LC_ALL
,LANG
undTZ
. -
/etc/timezone
-
/etc/localtime
-
/usr/share/zoneinfo/
-
locale
-
tzselect
-
timedatectl
-
date
-
iconv
Lösungen zu den geführten Übungen
-
Basierend auf der folgenden Ausgabe des Befehls
date
, was ist die Zeitzone des Systems in GMT-Notation?$ date Mon Oct 21 18:45:21 +05 2019
Es handelt sich um die Zeitzone
Etc/GMT+5
. -
Auf welche Datei sollte der symbolische Link
/etc/localtime
zeigen, umEurope/Brussels
zur Standardortszeit des Systems zu machen?Der Link
/etc/localtime
sollte auf/usr/share/zoneinfo/Europe/Brussels
zeigen. -
Zeichen in Textdateien werden auf einem System mit einer anderen Zeichenkodierung als der im Textdokument verwendeten möglicherweise nicht korrekt wiedergegeben. Wie nutzen Sie
iconv
, um die WINDOWS-1252-kodierte Dateiold.txt
in die Dateinew.txt
mit UTF-8-Kodierung zu konvertieren?Der Befehl
iconv -f WINDOWS-1252 -t UTF-8 -o new.txt old.txt
führt die gewünschte Konvertierung durch.
Lösungen zu den offenen Übungen
-
Welcher Befehl macht
Pacific/Auckland
zur Standardzeitzone für die aktuelle Shellsitzung?export TZ=Pacific/Auckland
-
Der Befehl
uptime
zeigt u.a. den Lastdurchschnitt des Systems in Kommazahlen an. Er verwendet die aktuellen Gebietsschemaeinstellungen, um zu entscheiden, ob das Dezimaltrennzeichen ein Punkt oder ein Komma ist. Wenn zum Beispiel das aktuelle Gebietsschema aufde_DE.UTF-8
(das Standardgebietsschema von Deutschland) eingestellt ist, wirduptime
ein Komma als Trennzeichen setzen. Welcher Befehl bewirkt, dassuptime
die Werte für den Rest der aktuellen Sitzung mit einem Punkt statt einem Komma als Trennzeichen darstellt?Der Befehl
export LC_NUMERIC=en_US.UTF-8
oderexport LC_ALL=en_US.UTF-8
. -
Der Befehl
iconv
ersetzt alle Zeichen außerhalb des Zielzeichensatzes durch ein Fragezeichen. Wenn//TRANSLIT
an die Zielkodierung angehängt wird, werden Zeichen, die nicht im Zielzeichensatz dargestellt sind, durch ein oder mehrere ähnlich aussehende Zeichen ersetzt (transliteriert). Wie könnten Sie diese Methode nutzen, um eine UTF-8-Textdatei namensreadme.txt
in eine einfache ASCII-Datei namensascii.txt
zu konvertieren?Der Befehl
iconv -f UTF-8 -t ASCII//TRANSLIT -o ascii.txt readme.txt
führt die gewünschte Konvertierung durch.