aslain.dev
0%
01 Hizmetler 02 Hakkımda 03 Projeler 04 Stack 05 Blog 06 İletişim
← Tüm makaleler Tools & DevOps

Linux-Befehle: Grundlagen der Kommandozeile (CLI)

Der blinkende Cursor, der dir beim ersten SSH-Login auf einem Server begegnet, kann einschüchternd wirken, doch die grundlegenden Linux-Befehle laufen in Wirklichkeit darauf hinaus, eine Handvoll Muster immer wieder zu verwenden. Egal ob du einen VPS verwaltest, einen Game-Server aufsetzt oder eine Laravel-Anwendung deployst: durch Dateien navigieren, sie kopieren, Rechte korrigieren und Prozesse steuern – all das stützt sich auf denselben kleinen Satz an Befehlen. In dieser Anleitung bauen wir Schritt für Schritt das tägliche Gerüst der Kommandozeile auf, mit echten, funktionierenden Beispielen.

Wissen, wo du im Terminal stehst

Alles beginnt damit, dein aktuelles Verzeichnis zu verstehen. Drei Befehle vervollständigen dieses Bild: pwd zeigt an, in welchem Ordner du dich befindest, ls listet den Inhalt auf, und cd bewegt dich zwischen den Ordnern.

pwd                 # zeigt den vollständigen Pfad, z. B. /home/aslain
ls -la              # detaillierte Liste, inklusive versteckter Dateien
cd /var/www         # zu einem absoluten Pfad wechseln
cd ..               # ein Verzeichnis nach oben gehen
cd ~                # zurück ins Home-Verzeichnis

Die erste Spalte der ls -la-Ausgabe (wie drwxr-xr-x) zeigt die Rechte; das führende d kennzeichnet ein Verzeichnis, während - eine gewöhnliche Datei markiert. ~ ist immer eine Abkürzung für das Home-Verzeichnis des Benutzers, absolute Pfade beginnen mit /, und relative Pfade werden von dort interpretiert, wo du gerade stehst.

Dateien und Verzeichnisse verwalten

Die Befehle zum Erstellen, Verschieben und Löschen von Inhalten sind klein, aber mächtig. Der Befehl, mit dem du vorsichtig umgehen solltest, ist rm: Es gibt keinen Papierkorb, und gelöscht heißt weg.

mkdir -p projekt/app/src      # verschachtelte Ordner auf einmal erstellen
touch index.php               # eine leere Datei erstellen oder den Zeitstempel aktualisieren
cp quelle.txt backup.txt      # eine Datei kopieren
cp -r dist/ build/            # einen Ordner mit Inhalt kopieren (-r = rekursiv)
mv alt.txt neu.txt            # umbenennen oder verschieben
rm temp.log                   # eine Datei löschen
rm -r build/                  # einen Ordner löschen
rmdir leerer_ordner           # nur einen leeren Ordner löschen

Die Kombination rm -rf ist mächtig, aber gefährlich: Ein falscher Pfad kann Daten löschen, die du nie anrühren wolltest. Den Befehl vor dem Löschen mit ls zu proben, ist eine gute Angewohnheit. Beachte, dass mv sowohl das Umbenennen als auch das Verschieben erledigt; es gibt keinen separaten „rename"-Befehl.

Dateiinhalte lesen und durchsuchen

Logdateien zu inspizieren, eine Konfigurationszeile zu finden oder eine Ausgabe zu filtern, gehört zur täglichen Routine. Im Zentrum davon stehen cat, less und grep.

cat .env                      # die ganze Datei auf den Bildschirm ausgeben
less storage/logs/laravel.log # eine lange Datei seitenweise durchblättern (q zum Beenden)
head -n 20 access.log         # die ersten 20 Zeilen
tail -n 50 access.log         # die letzten 50 Zeilen
tail -f access.log            # die Datei live verfolgen (neue Zeilen laufen ein)
grep "ERROR" laravel.log      # Zeilen finden, die ERROR enthalten
grep -ri "database" config/   # ohne Groß-/Kleinschreibung in einem Ordner suchen

tail -f ist Gold wert, wenn du einen Bug einfangen willst: Du siehst die Logs in Echtzeit einlaufen, während du die App benutzt. grep wird in Kombination mit Pipes deutlich mächtiger; zum Beispiel zeigt ps aux | grep php nur die PHP-Prozesse.

Pipes, Umleitung und Verkettung

Das Herz der Linux-Philosophie ist es, kleine Werkzeuge miteinander zu verbinden. Eine Pipe (|) macht die Ausgabe eines Befehls zur Eingabe des nächsten; die Umleitung (>, >>) schreibt die Ausgabe in eine Datei.

ls -la | grep ".php"          # nur .php-Dateien anzeigen
cat access.log | wc -l        # Zeilen zählen (wie viele Requests?)
du -sh * | sort -h            # Ordnergrößen sortiert auflisten
echo "hallo" > notiz.txt       # in eine Datei schreiben (überschreibt sie)
echo "zweite Zeile" >> notiz.txt # an das Ende der Datei anhängen
php artisan migrate && php artisan db:seed   # den zweiten nur ausführen, wenn der erste erfolgreich ist

Der Operator && führt den zweiten Befehl nur aus, wenn der erste erfolgreich beendet wurde (Exit-Code 0); ideal, um Deploy-Schritte sicher zu verketten. Verwechsle > nicht mit >>: Ein einzelner Pfeil löscht den Inhalt der Datei, ein doppelter Pfeil hängt an.

Prozesse und das System verwalten

Wenn auf einem Server etwas hängt, musst du sehen, welcher Prozess läuft und wie viel er verbraucht. Hier kommen die Prozessbefehle ins Spiel.

ps aux                        # alle laufenden Prozesse
ps aux | grep nginx           # nur nginx-Prozesse
top                           # Ressourcennutzung live (q zum Beenden)
htop                          # eine besser lesbare Version (falls installiert)
kill 4821                     # den Prozess mit PID 4821 beenden
kill -9 4821                  # erzwungenes Beenden (wenn er nicht reagiert)
df -h                         # Festplattenbelegung
free -h                       # Speichernutzung (RAM)

Versuche beim Schließen eines Prozesses zuerst ein einfaches kill; es gibt der App die Chance, sich sauber zu beenden. Verwende kill -9 nur, wenn er wirklich nicht reagiert, denn das bedeutet „den Stecker ziehen" und der Prozess stirbt, bevor er irgendetwas speichern kann. df -h und free -h sind die ersten Stellen, an denen du nachschaust, wenn du dich fragst „Warum ist die Festplatte voll?" oder „Warum ist der Server langsam?".

Rechte und sichere Gewohnheiten

Die häufigsten „Permission denied"-Fehler auf Webservern kommen von den Rechten. chmod ändert die Rechte, während chown den Eigentümer ändert.

chmod 644 index.php           # Eigentümer liest/schreibt, andere lesen
chmod 755 deploy.sh           # alle können ausführen, der Eigentümer kann schreiben
chmod -R 775 storage/         # auf einen Ordner und seinen Inhalt anwenden
chown -R www-data:www-data .  # das Eigentum dem Web-Benutzer geben
sudo systemctl restart nginx  # einen Dienst mit erhöhten Rechten neu starten

Ein paar praktische Gewohnheiten ersparen dir Ärger: Bestätige deinen Standort mit pwd vor gefährlichen Befehlen, nutze die Tab-Taste, um Dateinamen automatisch zu vervollständigen (das verhindert Tippfehler), rufe frühere Befehle mit der Pfeil-nach-oben-Taste ab, und lies das Handbuch jedes Befehls mit man ls. Verwende sudo nur, wenn es wirklich nötig ist; Root-Rechte machen aus jedem Fehler einen dauerhaften.

Häufige Fragen

Wie komme ich aus einem im Terminal hängenden Befehl heraus?

Strg + C stoppt einen laufenden Befehl. Um Vollbild-Werkzeuge wie top, less oder man zu verlassen, drücke q. Um die Terminal-Sitzung ganz zu schließen, tippe exit.

Was ist der Unterschied zwischen chmod 755 und 644?

Die Zahlen sind Summen der Lese- (4), Schreib- (2) und Ausführungsrechte (1) für Eigentümer/Gruppe/andere. 644 ist für gewöhnliche Dateien (nicht ausführbar), während 755 für Skripte und Ordner ist, weil diese Ausführungs-/Zugriffsrechte benötigen.

Kann ich eine mit rm gelöschte Datei wiederherstellen?

Nein, rm löscht die Datei direkt und dauerhaft, ohne Papierkorb. Deshalb ist es entscheidend, wichtige Daten zu sichern und den Befehl vor dem Löschen mit ls zu proben.

Brauchst du Hilfe bei Serveradministration, Deployment oder VPS-Einrichtung? Wenn du beim Konfigurieren eines Linux-basierten Systems oder beim Aufbau eines Game-/Webservers von Grund auf feststeckst, nimm Kontakt mit mir auf — lass uns gemeinsam eine solide Installation aufbauen.

Bu kategorideki tüm yazılar →

Devamı için