LINUX: Alles ist eine Datei
Unter Linux werden alle Ausgaben als Datei betrachtet.
Linux ist ein Betriebssystem, das für seine Flexibilität, Stabilität und die engagierte Open-Source-Community bekannt ist. Im Vergleich zu Windows erleben viele Nutzer, dass Linux einfach Spaß macht, während Windows oft Frustration verursacht, da man seine Arbeitsweise nach den Vorgaben von Microsoft gestalten muss. In diesem Artikel werde ich die Besonderheiten von Linux beleuchten und zeigen, warum es eine bevorzugte Wahl für viele Technik-Enthusiasten ist.
Das Konzept "Alles ist eine Datei" in Linux
Ein zentrales Konzept von Linux ist, dass alles im System als Datei behandelt wird. Dieses Prinzip vereinfacht den Zugriff und die Verwaltung von Systemressourcen erheblich.
Beispiel
Geräte wie Festplatten (/dev/sda), Eingabegeräte (/dev/input/mice) oder Mikrofone und Webcams (z.B. /dev/dsp) werden als Dateien behandelt, was die Interaktion mit ihnen erleichtert. Man könnte quasi die Datei Mikrofon
in die Datei Lautsprecher
kopieren und somit direkt ausgeben, was das Mikrofon hört. Über das Netz vielleicht? Dazu später mehr.
Grundlegender Umgang mit Dateien
- Pipes (
|
) ermöglichen das Verbinden von Programmen und Datenströmen. Dies bedeutet, dass Daten wie Dateien behandelt und flexibel zwischen Anwendungen übertragen werden können. Die Ausgabe eines Befehls wird so zur Eingabe eines anderen Befehls. - Umleitungen (
>
) leiten die Ausgabe eines Befehls in eine Datei auf dem Datenträger um.
Flexibilität von Linux
Linux bietet zahlreiche Anpassungsmöglichkeiten, die dieses Vorgehen äußerst flexibel machen.
Beispiel: Erstellen eines ISO-Images
cat /dev/sr0 > /home/user/cdrom.iso
Hier wird das CD-Laufwerk (/dev/sr0) wie eine Datei gelesen und die Daten werden in einer Datei gespeichert. Wer braucht also noch ein extra Programm, wie unter Windows, wenn man das Image einer CD auch einfach so abspeichern kann. Es gibt natürlich auch fehlerkorrigierende Alternativen zu cat, wie z.B. ddrescue...
Beispiel: Image auf einen USB-Stick schreiben
cat image.iso > /dev/sdb
Hier wird das Image für einen Boot-Stick (image.iso) wie eine Datei gelesen und die Daten werden auf den Stick (/dev/sdb) geschrieben. Wer braucht Etcher oder vergleichbare Windows-Programme.
Beispiel: Clonen einer Festplatte
dd if=/dev/sda status=progress of=/dev/sdb
Die Festplatte (/dev/sda) wird gelesen und auf eine andere Festplatte (/dev/sdb) geschrieben. Dabei wird auch gleich der Fortschritt der Aktion angezeigt.
Beispiel: Mit tar ganze Verzeichnisse über das Netz kopieren
tar czf - /home/user | ssh user@remotehost 'tar xzf - -C /home/user'
Das Verzeichnis /home/user wird durch tar komprimiert und die Daten werden direkt durch eine Pipe über ssh an einen anderen Rechner gesendet, wo sie direkt wieder entpackt werden. So kann die verfügbare Bandbreite im Netz optimal ausgenutzt werden. Wie würde ich diesen Einzeiler unter Windows umsetzen?
Beispiel: Das Mikrofon eines Rechners per ssh auf einem anderen Rechner wiedergeben
ssh user@remotehost 'cat /dev/dsp' | aplay
Dieser Befehl loggt sich per ssh auf einem fremden Rechner ein und gibt die Datei Mikrofon (/dev/dsp)
aus. Diese Ausgabe wird auf den eigenen Rechner gepiped und dort zur Eingabedatei von aplay. Somit hat man den remotehost
in eine Wanze umfunktioniert - eine Methode, die sich Spionagedienste gerne zunutze machen.
Beispiel: Die Webcam eines Rechners per ssh auf ein lokal laufendes VLC umleiten
ssh user@remotehost 'cat /dev/video0' | vlc -
Hier wird die Webcam (/dev/video0)
auf dem remotehost
ausgegeben. Dieser Stream wird auf das lokal laufende vlc umgeleitet. Auf diese Weise kann man durch die Webcam eines entfernten Rechners schauen.
Fazit
Dank des Konzepts "Alles ist eine Datei" bietet Linux tolle Möglichkeiten, beliebige Datenquellen mit beliebigen Tools weiterzuverarbeiten - und das alles in einem einzigen Befehl auf der Kommandozeile. Für viele Anwender stellt Linux daher eine bessere Wahl im Vergleich zu Windows dar. Die Möglichkeit, Aufgaben mithilfe von Pipes wie Legosteine zu verbinden, erlaubt es, Abläufe viel schneller und effizienter zu erledigen. Dies erspart die Installation zahlreicher Einzelprogramme und die mühsame Arbeit mit individuellen Lösungen.