Die Textkodierung einer Datei ändern (macOS)

Mit dem Kommandozeilentool iconv kann mit im macOS Terminal die Kodierung von Dateien ändern. Wenn man zum Beispiel die Kodierung einer Datei von iso-8859-1 auf utf-8 ändern möchte, geht das ungefähr so:

iconv -f iso-8859-1 -t utf-8 datei_iso.txt > datei_utf8.txt

In OS-X ist das Tool iconv standardmäßig enthalten, es sollte aber so ähnlich auch unter anderen Unixen und Linux funktionieren.

Der Terminal-Fenstermanager Screen

In letzter Zeit lerne ich immer mehr das Programm Screen schätzen. Es macht die Verwaltung von Server-Systemen wesentlich angenehmer, da es mehrere virtuelle Terminals bzw. „Fenster“ über einen Login erlaubt.

Eine sehr praktische Eigenschaft an Screen ist, dass die Screen-Sessions unabhängig von der bestehenden Server-Verbindung erhalten bleiben. Das heisst, man kann ein Script gefahrlos innerhalb einer Screen-Session starten, ohne Angst haben zu müssen, dass es durch einen Verbindungsabbruch gestoppt wird.

Im folgenden die wichtigsten Kommandozeilen-Parameter und Tastenkürzel nach dem Aufruf von Screen.

Eine neue Screen-Session startet man mit dem Kommando „screen“.

screen

Optional kann man der Session mit dem Parameter -S einen Namen geben.

screen -S SessionName

Wenn man mehrere Screen-Sessions mit verschiedenen Namen gestartet hat, kann man sich mit dem Parameter -ls eine Liste der bestehenden Screen-Sessions anzeigen lassen.

screen -ls

Wie gesagt, bleibt eine Screen-Session nach Beendigung des Terminals erhalten, vorausgesetzt, auf dem Server wurde kein Reboot durchgeführt.

Eine früher gestartet Screen-Session lässt sich mit dem Parameter -r wieder reaktivieren. Der SessionName ist nur dann notwendig, wenn mehrere screen-Sessions gestartet wurden.

screen -r SessionName

Im Folgenden, die Kürzel zur Steuerung innerhalb der Screen-Session. Screen-Kommandos werden im Allgemeinen mit ctrl-a und einer weiteren Taste ausgeführt.

ctrl-a d 	Screen Session in den Hintergrund setzen (detach)
ctrl-a ? 	Hilfe anzeigen

ctrl-a c 	Eine neues Fenster erstellen
ctrl-a 1-n 	Auf Fenster Nr. 1-n schalten 
ctrl-a "	Liste der Fenster anzeigen
ctrl-a A	Das aktuelle Fenster umbenennen
exit		Das aktuelle Fenster schliessen

Screen-Fenster lassen sich teilen um so mehr Informationen gleichzeitig im Terminal anzuzeigen.

ctrl-a S	Das aktuelle Fenster horizontal teilen
ctrl-a |	Das aktuelle Fenster vertikal teilen
ctrl-a tab	Zur nächsten Fensterregion springen
ctrl-a X	Die aktuelle Fensterregion entfernen
ctrl-a Q	Alle Regionen ausser der aktiven entfernen

Mit Python schnell mal einen HTTP- oder SMTP-Server starten

In Python ist so einiges nützliches eingebaut. Wir finden in Python beispielsweise einen kleinen HTTP-Server und auch einen SMTP-Server. Auf Systemen mit installiertem Python lassen sich so Dateien schnell und unproblematisch zum Download durch andere Computer freigeben oder man kann mal eben einen Mail-Server zum Testen der selbst programmierten E-Mail-Versende-Funktion starten.

Mit dem HTTP-Server Verzeichnisse freigeben

Um Dateien per HTTP freizugeben, einfach mit dem Terminal in den Ordner wechseln, den man freigeben möchte und dann den Python-HTTP-Server mit

python -m SimpleHTTPServer

starten.

Der Server ist danach auf Port 8000 erreichbar, also unter http://MEIN_COMPUTER:8000/.

Mit dem Python-SMTP-Server E-Mail-Versendung testen

Sehr nützlich für die Software-Entwicklung ist der Python-SMTP-Debug-Server, der alle empfangenen E-Mails lediglich direkt auf der Kommandozeile ausgibt. Einen solchen SMTP-Server kann man auf Port 1025 mit dem Befehl

python -m smtpd -n -c DebuggingServer localhost:1025

starten.

Weitere Informationen:

Der Befehl „cp -r *“ kopiert keine versteckten Dateien

Wenn man mit beispielsweise

cp -r * /zu/diesem/verzeichnis/

den Inhalt eines Verzeichnisses in ein anderes kopieren will, so werden keine versteckten Dateien kopiert. Der bash-Wildcard ‚*‘ gilt nämlich nicht für versteckte Dateien, also Dateien, die mit einem Punkt anfangen, wie z.B. „.htaccess“. Mit

cp -r * .[!.]* /zu/diesem/verzeichnis/

kopiert man auch die versteckten Dateien.

  • * kopiert „normale“ Dateien
  • .[!.]* kopiert Dateien, die mit einem ‚.‘ beginnen, ohne das übergeordnete Verzeichnis ‚..‘ zu kopieren

Siehe hierzu auch: Bash Wildcards