© Mai 2021, Letzte Änderung 31.03.26
Ich habe lange darüber nachgedacht, wie man sich diesem Thema nähert
ohne gleich jemanden abzuschrecken.
Ich denke erst mit ein wenig praktischen Grundlagen und Lösungsansätzen anzufangen.
Wenn es nicht so läuft wie erwartet, hilft es meiner Meinung nach am Meisten.
Die Liste ist mit Sicherheit nicht vollständig und ist mehr ein Index,
wo ich welchen Befehl einigermaßen beschrieben und verwendet habe.
Zum Anfang
Trotz aller Grafikoberflächen (GUI - graphical user interface) ist vieles unter Linux
im Terminal-Fenster, (also dem Command line Interface - CLI) eleganter lösbar.
Sogenannte "Headless"-Systeme, wie z.B. ein Datei- oder Web-Server
benötigen keine graphische Oberfläche, wollen aber trotzdem konfiguriert werden.
Dies geschieht häufig aus der Ferne (remote)
über eine verschlüsselte Verbindung (z.B. via ssh) mit einen Terminal.
Im Falle eines Terminals ist die Eingabe gewöhnlich die Tastatur
und die Ausgabe der Bildschirm. Das kann man aber alles nach belieben ändern.
Die Eingabe via Terminal enthält meist mehr Optionen als die Bedienung
über eine graphische Benutzeroberfläche,
welche teilweise remote, aus Sicherheitsgründen, nicht erreichbar ist.
Die Eingaben im Terminal oder Befehle eines Shell-Scripts werden
über einen als Shell bezeichneten Befehlsinterpreter abgearbeitet.
Die eine Shell gibt es im Grunde gar nicht, sondern verschiedene.
Diese Dialekte sind aber, wenn ich Debian verwende, nicht so wichtig,
da als Standard die bash-Shell eingestellt ist. Zsh, Fish, Dash und weitere haben jeweils unter 12% Verbreitung.
Über ein Terminal-Fenster kann ich im einfachsten Fall unter xfce über Anwendungen > Terminal aufrufen.
Es erscheint dann im Terminal-Fenster z.B. folgendes, welches aber auch beliebig geändert werden kann.
a1@desk3:~$
Der Aufbau ist z.B. wie folgt: <Benutzername>@<Rechnername>:<Pfad>Promt
Also hier:
/home/a1
Mit Ctrl-D oder den Befehl exit schließe ich das Terminal-Fenster wieder.
Mit exit verlasse ich auch den Benutzer z.B. auf einem remote eingeloggten Rechner.
Am Anfang macht es Sinn sich ein paar Befehle zusammen zu kopieren oder
nach erfolgreicher Ausführung zu kopieren.
Bitte aber daran denke, nicht jeden Code aus dem Internet einfach zu kopieren.
Stattdessen macht es vor Verwendung Sinn, die Funktion zu verstehen und deren Konsequenzen zu kennen.
Da Ctrl-C in vielen Fällen für Abbruch steht, steht zum Kopieren vom Terminal Ctrl-Shift-C
und zum Einfügen ins Terminal Ctrl-Shift-V zur Verfügung.
Fast alles was ich eingebe wird gespeichert und läßt sich mit der Hoch ↑-Taste wieder hervor holen.
Beispielsweise sehen die vergangenen Eingaben wie folgt aus und
dummerweise habe ich bei der 209'ten Eingabe nicht aufgepasst und das Passwort mit eingegeben.
Da die Shell ergänzen kann, kann ich z.B. his gefolgt von TAB eingeben und erhalte history.
Diese Ergänzung funktioniert z.B. auch bei Datei-Pfaden, sofern es eindeutig ist.
history 7 zeige die letzten 7 Eingaben 204 sudo /usr/sbin/fdisk -l 205 sudo apt update 206 sudo apt upgrade 207 exit 208 ssh -X m@n11.fritz.box 209 su geheim 210 history 7 history -d 209 löscht den unerwünschten Eintrag !205 zum gezielten Aufruf vergangenes sudo apt update … !206 sudo apt upgrade … ls -la das erste Leerzeichen vor ls bewirkt keine Aufnahme insgesamt 680 drwx------ 11 a1 a1 4096 14. Apr 22:57 . drwxr-xr-x 6 root root 4096 5. Okt 2025 .. lrwxrwxrwx 1 a1 a1 12 11. Okt 2025 a0 -> /mnt/sda3/a0 -rw------- 1 a1 a1 4097 13. Apr 23:00 .bash_history -rw-r--r-- 1 a1 a1 220 5. Okt 2025 .bash_logout -rw-r--r-- 1 a1 a1 3526 5. Okt 2025 .bashrc … history 4 zeige die letzten 4 Eingaben 209 history 7 220 sudo apt update 221 sudo apt upgrade 222 history 4 ls -la fehlt
Ich persönlich kann am besten lernen, indem ich versuche konkrete Beispiele nachzuvollziehen.
Daher habe ich versucht immer Beispiele zu finden.
Wie im obigen Beispiel erkennbar, befindet sich die Geschichte aller Eingaben und der Konfiguration
in Dateien, welche im Verzeichnis des Benutzers sind.
cat ~/.bash_history hier finde ich die letzten Eingaben … nach dem Schließen des Terminals nano ~/.bashrc die Konfiguration …
Als normal sterblicher Benutzer sollte ich nicht jeden Befehl aufrufen und nicht auf jeden Bereich zugreifen.
Das ist dafür um mich selbst vor Schaden zu bewahren.
Der Benutzer root darf jedoch alles und ist Systemadministratoren vorbehalten.
Entsprechend ist bei dem Passwort und bei der Benutzung Vorsicht geboten.
Um den "Super user" Status zu erhalten sind die Befehle
su und
sudo gedacht.
wilivm.com
Linux-History-Befehl
alexhost.com
Der Befehl history in Linux (Bash History)
debian-handbook.info
8.6. Shell-Umgebung
Zum Anfang
< Eingabeumleitung statt der Tastatur z.B. Quelle aus einer Datei. > Ausgabeumleitung z.B. in eine neue erzeugte leere Datei schreiben. | Ausgabe-Ergebnis des vorherigen Befehls >> Ausgabe wird an bestehende Ausgabe angehängt. 2> nur Fehler-Ausgaben werden umgeleitet z.B. in eine neue leere Datei. 2>> nur Fehler-Ausgaben werden umgeleitet und angehängt. ; sequentielle Abarbeitung mehrerer Befehle. & parallele Ausführung mehrerer Befehle. && Fortsetzung nur bei Fehlerfreier Ausführung des ersten Befehls. || Alternativer Befehl, falls erster Fehl schlägt.
Anbei ein paar konkrete Beispiele wie Datenströme umgeleitet werden können
oder wie Befehle aneinandergereiht werden können.
cd nichtVorhanden/ || cd Downloads/ cd - change directory mit alternativen Befehl
bash: cd: nichtVorhanden/: No such file or directory
pwd pwd - print working directory zur Überprüfung
/home/a1/Downloads ~/Downloads war der richtige Ordner
ls -la ls - listet Dateien mit extra Parameter "la" = long-list + all
total 20
drwxr-xr-x 2 a1 a 4096 May 13 17:59 .
drwxr-xr-x 4 a1 a 16384 May 13 17:59 .. zuzeit leerer Ordner, input.txt existiert noch nicht
sha256sum input.txt 2> check.txt Fehlermeldungen in die Datei check.txt schreiben.
md5sum input.txt 2>> check.txt weil input.txt noch nicht existiert
cat check.txt Ausgabe der Fehlermeldungen
sha256sum: input.txt: Datei oder Verzeichnis nicht gefunden
md5sum: input.txt: Datei oder Verzeichnis nicht gefunden
ls > input.txt Bildschirmausgabe umleiten, dabei Datei input.txt neu erzeugen.
interessanterweise wird input.txt angelegt und dann ls ausgeführt
cat input.txt cat - concatenate; Inhalt der Datei ausgeben
check.txt
input.txt
Dateiliste erzeugen | filtern > Ausgabe überschreibend in Datei input.txt
ls -la | grep "txt" > input.txt aus Dateiliste Zeilen raussuchen, welche "txt" enthalten
cat input.txt vorheriger Inhalt ist überschrieben
-rw-r--r-- 1 a1 a 48 May 13 21:45 check.txt
-rw-r--r-- 1 a1 a 0 May 14 02:06 input.txt
md5sum input.txt 2> check.txt da input.txt existiert, gibt nun eine Checksumme auf dem Bildschirm
177727ddd4b735ec4f43cc601433812a input.txt
cat check.txt da der 2. Fall fehlerfrei ist, ist check.txt nun leer
echo "ls -l" > input.txt; ls -l >> input.txt
cat input.txt
ls -l erst den Befehl
insgesamt 4 dann das Ergebnis angehängt
-rw-r--r-- 1 m m 0 6. Apr 20:21 check.txt
-rw-r--r-- 1 m m 6 6. Apr 20:27 input.txt
sort < input.txt sortiert die Zeilen aus input.txt
insgesamt 4
ls -l
-rw-r--r-- 1 m m 0 6. Apr 20:21 check.txt
-rw-r--r-- 1 m m 6 6. Apr 20:27 input.txt
Und noch weitere Beispiele:
su apt update && apt upgrade wenn update Fehlerfrei, dann Fortsetzung mit upgrade zip zipped.zip check.txt & nano während er zippt, wird der Editor geöffnet dd if=/dev/urand of=/dev/null & top parallele Ausführung chown a:a input.txt ; chmod 664 check.txt sequentielle Ausführung
Zum Anfang
Wenn man eine Beschreibung benötigt, hilft in den meisten Fällen man weiter.
Einen Einstieg (zum Paket Ersteller ;-) findet man auch auf
debian.org
Dem Rest ist wahrscheinlich schon das
debiananwenderhandbuch.de
harte Kost.
Ein paar Grundlagen zur Konsole findet man unter
debian.org
Da Debian häufig Grundlage von anderen Linux-Derivaten ist, kann ich auf eine Fülle von Hilfen zugreifen.
Hier nur eine kleine Auswahl in alphabetischer Reihenfolge.
Als Ergänzung kann man noch tldr installieren und steht für 'Too Long; Didn’t Read'.
Hier findet man konkrete Beispiele. Siehe tldr.sh.
sudo apt search tldr tealdeer/stable 1.7.2-1+deb13u1 amd64 simplified, example based and community-driven man pages… sudo apt install tealdeer tldr -v tealdeer 1.7.2 tldr --update Successfully created cache directory path `/home/a1/.cache/tealdeer`. Successfully updated cache. tldr -l > list Erstellt Liste der beschriebenen Befehle tldr apt search Warning: Page `apt-search` not found in cache. Try updating with `tldr --update`, or submit a pull request to: https://github.com/tldr-pages/tldr
Da es unter DEB 13 allerdings noch eine ältere Version ist und es ein relativ junges Projekt ist,
ist es zur Zeit noch lange nicht vollständig.
Alternativ gibt es noch eine Web-basierte Version tldr.inbrowser.app.
Und Mitarbeit ist natürlich stets willkommen auf dem von Microsoft gekauften github.com.
Zum Anfang
Manchmal kann es vorkommen dass man einen Befehl eingibt, er aber nicht gefunden wird.
Dann ist es nötig den kompletten Pfad einzugeben, den man wie folgt heraus bekommt.
fdisk bash: fdisk: Kommando nicht gefunden. whereis fdisk fdisk: /usr/sbin/fdisk /usr/share/man/man8/fdisk.8.gz sudo /usr/sbin/fdisk -l …
Zum Anfang
Speziell bei der Virtualisierung wird man gefragt welches Betriebssystem verwendet wird,
um Optimierungen durchführen zu können.
name -a Linux desk3 6.12.73+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.73-1 (2026-02-17) x86_64 GNU/Linux uname -m amd64 = 64 Bit Architektur x86_64 uname -r zeigt die Kernel-Version 6.12.73+deb13-amd64 uname -v Kernel-Version etwas detaillierter #1 SMP PREEMPT_DYNAMIC Debian 6.12.73-1 (2026-02-17)
Beim Parameter -a sehe ich alles.
Hätte da statt 'amd64' z.B. '386/486' gestanden, hätte das auf einen 32 bit Kernel hingewiesen.
Zum Anfang
Die Befehle, welche ich direkt ins Terminal eingebe, kann ich auch in eine Text-Datei schreiben.
Damit die Datei der richtigen Shell zugeordnet wird, schreibe ich in die erste Zeile einen bestimmtem Kommentar.
Um aus der Text-Datei einen ausführbaren Befehl zu generieren kann ich ein bestimmtes Flag setzen.
Als Alternative kann ich den Befehl sh für die Bourne shell verwenden.
Bei DEB hat man den Uralt-Standard Bourne shell ersetzt durch die dash Debain Almquist Shell.
sh b_a0.sh start über shich wurde gestartet um 2026-06-06 17:09:35 cat b_a0.sh Inhalt der Test-Datei #!/bin/sh DATUM=`date "+%F %T"` echo "ich wurde gestartet um\n $DATUM " ls -la b_* Rechte der Datei -rw-rw-r-- 1 a1 a1 73 6. Jun 17:09 b_a0.sh chmod u+x b_a0.sh gibt Benutzer der Datei Rechte zum Ausführen ls -la b_* -rwxrw-r-- 1 a1 a1 73 6. Jun 17:09 b_a0.sh ./b_a0.sh Aufruf ohne sh ich wurde gestartet um 2026-06-06 17:16:07
Bin ich im Thunar, kann ich auch mit rechter Maustaste Eigenschaften > Zugriffrechte wählen.
Über eine Checkbox kann ich dann die Ausführung erlauben. Die Ausführung an sich, ist via Thunar nicht möglich.
Ein Doppelklick öffnet aus Sicherheitsgründen nur den Editor Mousepad.
Wer dennoch eine riskante Lösung sucht, findet sie unter xfce.org.
Zum Anfang
xargs eigent sich besonders wenn man einen bestimmten Befehl mehrere Male (je Zeile) aufrufen möchte.
grep -rw sc/* -e id= > id_list erzeugt eine Liste mit Dateien, wo id= enthalten ist … sc/android/stockROM/vorinstalliert.html:Bereits installierte Programme auf einem Zenfone 4 Max
Zum Anfang
Zum Anfang
Zum Anfang
Zum Anfang
nano input.txt nano - kleiner Editor eazy* Ctrl-O speichert Datei, Ctrl-X beendet nano li -la < input.txt dd if=~/Downloadds/debian.iso count=512 >> check.txt smartctl -i /dev/sda bis deb 9 bash: smartctl: command not found ab deb 10 whereis smartctl ab deb 10 smartctl: /usr/sbin/smartctl /usr/share/man/man8/smartctl.8.gz apt-file search "/netstat " munin-plugins-core: /usr/share/munin/plugins/netstat net-tools: /bin/netstat das scheint das Gesuchte zu sein recap: /usr/lib/recap/core/netstat apt-get install net-tools
Zum Anfang
helmbold.de
Linux auf einem Blatt
archlinux.de
Shell-Spickzettel
bitblokes.de
Bash: Zeichen aus Zeichenkette (String)
bitblokes.de
Malware: Befehle von Websites kopieren und dann im Terminal einfügen
ist keine gute Idee
profi-tutorials.de
Eingabe- / Ausgabe-Umleitungen (I/O-Redirections)
manurevah.com
basic commands
Zum Anfang