====== Linux Best Practices ====== Auf dieser Seite findest du eine Reihe von Tipps und Tools rund um den Gebrauch von Linux. ===== Tipps ===== ==== Allgemeines ==== === Tutorial und Cheat Sheets === Für blutige Anfänger sind dieses [[https://linuxsurvival.com|interaktive Linux-Tutorial]] und dieses [[https://www.guru99.com/linux-commands-cheat-sheet.html|Linux Cheat Sheet]] eine hilfeiche Unterstützung. === Installation === Im Normalfall ist zur Installation zusätzlicher Software immer die Verwendung des **Paketmanagers** des jeweiligen Betriebssystems zu bevorzugen. Dieser kümmert sich - anders als bei einer Installation aus einem beliebigen Download - immer um die Auflösung eventueller Abhängigkeiten und ermöglicht eine problemlose Entfernung nicht mehr benötigter Pakete. Bei dem von uns verwendeten Ubuntu-Linux hört der Paketmanager auf den Befehl **apt** bzw. **apt-get**. Beispiele: * Lokalen Katalog der verfügbaren Pakete aktualisieren: ''apt update'' * Installierte Pakete upgraden: ''apt upgrade'' * Pakete zur Installation von nmap suchen: ''apt search nmap'' * Paket nmap installieren: ''apt install nmap'' * Paket nmap wieder entfernen: * ''apt remove nmap'' (Konfiguration behalten) oder * ''apt purge nmap'' (Konfiguration auch entfernen) * Nicht mehr benötigte Pakete entfernen: ''apt autoremove'' ---- ==== Schreibarbeit auf der Kommandozeile sparen ==== === Tabulatorergänzung === Verwende die Tabulatorergänzung. Viele Befehle und Pfade lassen sich durch das Drücken der Tabulatortaste vervollständigen oder du erhältst zumindest eine Auflistung verschiedener Ergänzungsmöglichkeiten. Die häufige Verwendung von Tabulatorergänzung hilft auch dabei Tippfehler zu vermeiden. ---- === Pfeiltasten === Verwende die Pfeil-nach-oben- und Pfeil-nach-unten-Tasten um durch bereits verwendete Befehle zu scrollen und spare dadurch Schreibarbeit. ---- === Befehlssuche === Wenn du einen Befehl vor längerer Zeit eingegeben hast und der Weg mit der Pfeil-nach-oben-Taste zu mühsam ist, dann drücke ''Strg''+''r''. Dadurch öffnet sich der interaktive Suchmodus der Kommandozeile. Wenn du jetzt ein Stück Text eingibst, dass du früher schon mal in einem Befehl verwendet hast, dann wird der ganze Befehl automatisch eingefügt. Mit ''Enter'' kannst du ihn dann verwenden. Mit den Pfeil-nach-links- und Pfeil-nach-rechts-Tasten kannst du den Befehl zuvor noch bearbeiten. Wenn der gefundene Befehl nicht der richtige ist und der gesuchte noch länger her ist, kannst du durch erneutes Drücken von ''Strg''+''r'' nach und nach alle Fundstellen durchsuchen. ---- ===== Tools ===== ==== Screen ==== [[linux_screen|Screen]] ermöglicht es dir mit mehreren virtuellen Fenstern auf der Kommandozeile zu arbeiten und auch bei instabilen Verbindungen Programme zuverlässig weiterlaufen zu lassen. ==== Nano ==== [[https://linuxize.com/post/how-to-use-nano-text-editor/|Nano]] ist einer der Standard-Texteditoren unter Linux. Er ist für alle Windows-Umsteiger vermutlich die am einfachsten zu bedienende Variante. Um eine Datei zu bearbeiten braucht man nur ''nano /pfad/zur/datei.txt'' eingeben und der Editor öffnet sich. Die Steuerung erfolgt über Tastaturkürzel, welche in Kombination mit der Steuerungstaste eingeleitet werden. Die wichtigsten davon werden am unteren Bildschirmrand angezeigt. Beispielsweise bedeutet die Angabe ''^X'', dass ''Strg'' und ''X'' zu drücken sind um den Editor zu beenden. Wie immer ist es hilfreich, die Ausgaben des Editors zu lesen, bevor man weitere Tastenkombinationen drückt. ==== VIM ==== Der Texteditor [[https://wiki.ubuntuusers.de/VIM/|VIM]] ist eine mächtige Alternative zu Nano. Er ist am Anfang etwas gewöhnungsbedürftig, weil er ein etwas eigenwilliges Bedienkonzept verfolgt. Hat man sich aber erst einmal daran gewöhnt, arbeitet man mit VIM auf der Kommandozeile extrem schnell und effizient. Markantestes Merkmal ist die Unterscheidung von Kommandomodus und Einfügemodus. Solange man nicht in den Einfügemodus gewechselt hat, werden alle Tastenanschläge als Kommandos interpretiert. Hat man als ungeübter Anwender einmal eine Datei beim Bearbeiten beschädigt, kommt man durch - mehrmaliges Drücken der ''Escape''-Taste - Eingabe von '':q!'' - und Abschließendes Drücken der ''Enter''-Taste wieder aus der Datei heraus ohne die Änderungen zu speichern. ==== SSH ==== Der Umgang mit SSH als entfernte interaktive Kommandozeile wird vorausgesetzt. Bei Bedarf kann diese [[ssh_root_login|Anleitung für Root-Login per SSH mit Passwort]] zu Hilfe genommen werden. ---- === SCP === SSH kann man auch dazu verwenden, um über eine SSH-Verbindungen Dateien zu kopieren. Die Angaben für Quelle oder Ziel folgen dabei einem vorgegebenen Schema. Möchte man z. B. die Datei ''/etc/ssh/sshd_config'' als Nutzer ''root'' von dem entfernten Host ''10.2.3.4'' in das Unterverzeichnis ''myconf'' im lokalen Verzeichnis kopieren, dann lautet der Befehl dazu: scp root@10.2.3.4:/etc/ssh/sshd_config ./myconf/ Um die Datei ''notizen.txt'' aus dem lokalen Verzeichnis auf den entfernten Host ''10.2.3.4'' ins Verzeichnis ''/var/www/html/'' zu kopieren, lautet der Befehl: scp notizen.txt root@10.2.3.4:/var/www/html/ ---- === SSH-Tunnel === SSH kann nicht nur dazu verwendet werden um Kommandozeilenbefehle auf einem entfernten Host anzugeben. Ebenfalls sehr praktisch ist die Verwendung eines **SSH-Tunnels**, über den Netzwerkverkehr durch eine SSH-Verbindung in andere Netzwerke übertragen werden kann, die ansonsten nicht erreichbar wären. Genauere Ausführungen zum [[ssh-tunnel|SSH-Tunnel]] gibt es [[ssh-tunnel|hier]]. ---- ===== Netzwerkkonfiguration ===== Zur Anzeige der aktuellen Netzwerkeinstellungen sowie zur temporären Veränderung der Netzwerkkonfiguration können Kommandozeilenbefehle direkt eingesetzt werden. Unter Ubuntu ist das **ip**-Kommando (z. B. ''ip address'' bzw. ''ip ad'' oder ''ip route'') der aktuelle Standard. Das ältere **ifconfig**-Kommando gilt als **veraltet**. Ebenso gelten **/etc/network/interfaces** und verwandte Dateien als **veraltet**. Stattdessen wird unter Ubuntu mittlerweile auf **netplan** gesetzt. ==== Netplan ==== Seit einiger Zeit ist die Netzwerkkonfiguration via Netplan bei Ubuntu zum Standard geworden. Die Konfiguration erfolgt über YAML-Dateien, welche sich im Verzeichnis ''/etc/netplan/'' befinden. Veränderungen an den Konfigurationsdateien werden mit dem Befehl ''netplan apply'' angewendet. Hier findest du ein Beispiel für eine ''/etc/netplan/config.yaml'' mit statischer IPv4-Adresse und dynamischer IPv6-Adresskonfiguration. network: version: 2 renderer: networkd ethernets: eth0: addresses: - 10.0.123.4/16 routes: - to: default via: 10.0.0.1 nameservers: addresses: - 9.9.9.9 - 2620:fe::fe dhcp6: yes accept-ra: yes