Benutzer-Werkzeuge

Webseiten-Werkzeuge


sammlung:kommandozeile_aufbau

Dies ist eine alte Version des Dokuments!


Aufbau der Linux-Kommandozeile

Die Kommandozeile (Terminal, Shell, CLI) ist das textbasierte Interface zur Steuerung von Linux-Systemen. Das Verständnis ihres Aufbaus ist grundlegend für die effektive Arbeit mit Linux.

Der Shell-Prompt

Der Prompt ist die Eingabeaufforderung der Shell und zeigt an, dass das System auf Eingaben wartet.

Typischer Aufbau

user@hostname:~/dokumente$
Element Bedeutung Beispiel
user Angemeldeter Benutzername root, admin, max
@ Trennsymbol @
hostname Name des Computers server1, laptop, webserver
: Trennsymbol :
~/dokumente Aktuelles Arbeitsverzeichnis /, /var/www, ~
$ Benutzer-Typ (User) $
# Benutzer-Typ (Root) #

Praktische Beispiele

# Normaler Benutzer im Home-Verzeichnis
max@laptop:~$

# Normaler Benutzer in /var/log
max@laptop:/var/log$

# Root-Benutzer im Home-Verzeichnis
root@server:/root#

# Root-Benutzer in /etc
root@server:/etc#

# Benutzer in tiefem Verzeichnis
user@host:/usr/local/share/applications$

# Minimaler Prompt (nur Symbol)
$

# Nur Verzeichnis
~/projects$

Prompt-Symbole und ihre Bedeutung

Symbol Bedeutung Warnung
$ Normaler Benutzer Standard-Rechte
# Root-Benutzer Vorsicht! Volle Admin-Rechte
~ Home-Verzeichnis /home/benutzername
/ Root-Verzeichnis Wurzel des Dateisystems

Wichtig: Das #-Symbol bedeutet, dass Sie als Root arbeiten und jeden Befehl ohne Rückfrage ausführen können - höchste Vorsicht!

Arbeitsverzeichnis im Prompt

Pfad-Darstellung

# Tilde (~) steht für das Home-Verzeichnis
user@host:~$           # Ist in /home/user/

# Absoluter Pfad
user@host:/var/www/html$

# Unterverzeichnis im Home
user@host:~/projekte/python$

# Root-Verzeichnis
user@host:/$

Pfad-Abkürzungen

Symbol Bedeutung Expandiert zu
~ Home des aktuellen Users /home/username
~username Home eines anderen Users /home/username
. Aktuelles Verzeichnis (aktueller Pfad)
.. Übergeordnetes Verzeichnis (eine Ebene höher)
/ Root-Verzeichnis /
- Vorheriges Verzeichnis (letzter Pfad)

Verzeichnis wechseln

# Ins Home-Verzeichnis
cd ~
cd        # Auch ohne ~

# Ein Verzeichnis hoch
cd ..

# Zwei Verzeichnisse hoch
cd ../..

# Absoluter Pfad
cd /var/log

# Relativer Pfad
cd dokumente/projekt1

# Zum vorherigen Verzeichnis
cd -

# Aktuelles Verzeichnis anzeigen
pwd

Aufbau eines Kommandos

Ein vollständiger Befehl besteht aus mehreren Komponenten:

Grundstruktur

kommando [optionen] [argumente]
ls -la /home/user
│  │  └─ Argument (Pfad)
│  └─ Optionen (Flags)
└─ Kommando

Komponenten im Detail

1. Kommando

Das Programm, das ausgeführt werden soll.

ls        # Verzeichnis auflisten
cd        # Verzeichnis wechseln
cat       # Dateiinhalt anzeigen
cp        # Kopieren
mv        # Verschieben/Umbenennen
rm        # Löschen

2. Optionen (Flags)

Modifizieren das Verhalten des Kommandos.

# Kurze Form (ein Buchstabe)
ls -l         # Lange Listenform
ls -a         # Alle Dateien (auch versteckte)
ls -h         # Human-readable (lesbare Größen)

# Kombiniert
ls -lah       # Alle drei Optionen zusammen

# Lange Form (Wörter)
ls --all      # Entspricht -a
ls --human-readable  # Entspricht -h

# Mit Wert
tar -f datei.tar      # -f erwartet Dateinamen
grep -n "text" datei  # -n für Zeilennummern

3. Argumente

Angaben, mit denen das Kommando arbeiten soll (Dateien, Verzeichnisse, Text).

cat datei.txt           # datei.txt ist das Argument
cp quelle.txt ziel.txt  # Zwei Argumente
mkdir neuer_ordner      # neuer_ordner ist das Argument
rm -rf /tmp/alt/*       # /tmp/alt/* ist das Argument

Vollständige Beispiele

# Einfach: Nur Kommando
pwd
date
uptime

# Kommando + Argument
cd /var/log
cat datei.txt
mkdir projektordner

# Kommando + Option
ls -l
ps -a
df -h

# Kommando + Option + Argument
ls -l /home
cat -n datei.txt
rm -r ordner/

# Kommando + mehrere Optionen + mehrere Argumente
cp -rv /quelle/* /ziel/
tar -czvf backup.tar.gz /home /etc /var
find /home -name "*.txt" -type f

Sonderzeichen in der Kommandozeile

Wichtige Sonderzeichen

Zeichen Name Bedeutung Beispiel
$ Dollar Variablen, Prompt echo $HOME
# Hash Root-Prompt, Kommentar # Dies ist ein Kommentar
* Stern Wildcard (beliebig viele Zeichen) ls *.txt
? Fragezeichen Wildcard (ein Zeichen) ls file?.txt
~ Tilde Home-Verzeichnis cd ~
. Punkt Aktuelles Verzeichnis, versteckte Dateien .bashrc
.. Doppelpunkt Übergeordnetes Verzeichnis cd ..
/ Slash Verzeichnistrenner, Root /home/user
\ Backslash Escape-Zeichen echo \$HOME
Pipe Ausgabe weiterleiten ls │ grep txt
> Größer Ausgabe umleiten echo „test“ > datei.txt
< Kleiner Eingabe umleiten wc < datei.txt
& Ampersand Im Hintergrund ausführen command &
; Semikolon Befehle trennen cd /tmp; ls
&& Doppel-Ampersand UND-Verknüpfung mkdir dir && cd dir
││ Doppel-Pipe ODER-Verknüpfung command ││ echo „Fehler“

Wildcards (Platzhalter)

# Stern (*) - Beliebig viele Zeichen
ls *.txt              # Alle .txt Dateien
rm /tmp/*             # Alles in /tmp
cp *.jpg backup/      # Alle JPG-Dateien

# Fragezeichen (?) - Genau ein Zeichen
ls file?.txt          # file1.txt, fileA.txt, aber nicht file10.txt
cp dokument?.pdf /backup/

# Eckige Klammern [] - Zeichen aus Liste
ls [abc]*             # Dateien die mit a, b oder c beginnen
ls file[0-9].txt      # file0.txt bis file9.txt
ls *[A-Z].txt         # Dateien die mit Großbuchstaben enden

# Geschweifte Klammern {} - Alternativen
cp datei.{txt,pdf,doc} backup/
mkdir -p projekt/{src,bin,doc,test}

Mehrzeilige Befehle

Fortsetzungszeichen (Backslash)

# Langer Befehl auf mehrere Zeilen verteilen
cp -r \
   /sehr/langer/pfad/zu/quelle/* \
   /sehr/langer/pfad/zu/ziel/

# Übersichtlicher bei vielen Optionen
docker run \
   --name container1 \
   -p 8080:80 \
   -v /host/path:/container/path \
   -d \
   nginx:latest

Der Prompt ändert sich zu > für Fortsetzungszeilen:

user@host:~$ echo "Dies ist ein \
> sehr langer \
> Text"

Befehlsketten

# Sequenziell (immer ausführen)
command1 ; command2 ; command3

# Nur bei Erfolg (AND)
command1 && command2 && command3

# Bei Fehler Alternative (OR)
command1 || command2

# Kombiniert
mkdir projekt && cd projekt && echo "Bereit"

# Im Hintergrund
command1 &
command2 &
wait  # Auf beide warten

Prompt-Anpassung

Der Prompt kann individuell konfiguriert werden über die Variable PS1.

Standard-Prompt anzeigen

echo $PS1
# Typische Ausgabe: \u@\h:\w\$

Prompt-Variablen

Variable Bedeutung
\u Benutzername
\h Hostname (kurz)
\H Hostname (voll)
\w Aktueller Pfad (voll)
\W Aktueller Pfad (nur letzter Teil)
\$ $ für User, # für Root
\t Uhrzeit (HH:MM:SS)
\d Datum
\n Neue Zeile

Prompt temporär ändern

# Einfacher Prompt
PS1="$ "

# Mit Benutzer
PS1="\u $ "

# Standard-Form
PS1="\u@\h:\w\$ "

# Mit Zeit
PS1="[\t] \u@\h:\w\$ "

# Zweizeilig
PS1="\u@\h:\w\n\$ "

# Farben (Grün für User)
PS1="\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "

Prompt permanent ändern

In der Datei ~/.bashrc:

# Bearbeiten
nano ~/.bashrc

# Am Ende hinzufügen
PS1="\u@\h:\w\$ "

# Aktivieren
source ~/.bashrc

Spezielle Prompt-Situationen

Verschiedene Prompt-Zustände

# Normaler Prompt
user@host:~$

# Fortsetzungszeile (mehrzeiliger Befehl)
user@host:~$ echo "Start
> Fortsetzung
> Ende"

# Root-Shell
root@host:~#

# Subshell
user@host:~$ bash
user@host:~$

# Vi-Modus (wenn aktiviert)
user@host:~$  # Einfüge-Modus
user@host:~:  # Kommando-Modus

# Python-Interpreter
user@host:~$ python3
>>>

# MySQL-Konsole
user@host:~$ mysql
mysql>

Besondere Umgebungen

# SSH-Verbindung (oft anderer Hostname)
user@remoteserver:~$

# Docker-Container
root@containerid:/#

# Chroot-Umgebung
(chroot)root@host:/#

# Screen/Tmux Session
[0] user@host:~$

# Git-Branch im Prompt (mit Plugin)
user@host:~/projekt (main)$

Best Practices

  • Prompt beachten: Prüfen Sie immer $ vs # - Root-Rechte mit Vorsicht!
  • Aktuelles Verzeichnis: pwd zeigt immer den vollständigen Pfad
  • Tab-Vervollständigung: Nutzen Sie TAB zur automatischen Vervollständigung
  • Befehlshistorie: Pfeiltaste hoch/runter für vorherige Befehle
  • Leerzeichen wichtig: ls-l funktioniert nicht, ls -l schon
  • Groß-/Kleinschreibung: Linux unterscheidet! File.txtfile.txt
  • Root sparsam nutzen: Nur wenn wirklich nötig mit #-Prompt arbeiten

Häufige Prompt-Probleme

Problem: Kein Prompt sichtbar

# PS1 wurde gelöscht
export PS1="\u@\h:\w\$ "

# Oder Terminal neu starten
exit

Problem: Falscher Pfad im Prompt

# Aktuellen Pfad prüfen
pwd

# Shell neu laden
exec bash

Problem: Prompt zeigt falschen User

# Aktuellen User prüfen
whoami
id

# Überprüfen ob in Subshell
echo $SHLVL  # > 1 bedeutet Subshell

Tastaturkürzel im Terminal

Tastenkürzel Aktion
Strg + C Laufenden Befehl abbrechen
Strg + D EOF senden, Terminal beenden
Strg + L Bildschirm löschen (wie clear)
Strg + A Zum Zeilenanfang
Strg + E Zum Zeilenende
Strg + U Zeile bis Cursor löschen
Strg + K Ab Cursor bis Zeilenende löschen
Strg + W Wort vor Cursor löschen
Strg + R Befehlshistorie durchsuchen
Tab Automatische Vervollständigung
↑ / ↓ Durch Befehlshistorie navigieren

Siehe auch

Weiterführende Informationen

man bash
man readline
help cd
info coreutils


sammlung/kommandozeile_aufbau.1767780010.txt.gz · Zuletzt geändert: von Branislav Zeljak