Command Line Interface-Befehle (Debian)

Aus MattWiki

Allgemein

pwd                    # Print Working Directory
cat                    # Dateiausgabe
less                   # Dateianzeige
nano                   # Einfacher Texteditor
ls                     # Verzeichnisinhalt anzeigen
ls -l                  # Verzeichnisinhalt anzeigen, Langversion
ls -a                  # Alle Dateien anzeigen (auch versteckte)
file <file>            # Dateiinhalt analysieren
stat <file>            # Status einer Datei anzeigen (Änderungszeit, Zugriffsrechte, etc.)
cal -y                 # Textkalender: Monatlich aktuelles Jahr anzeigen
cal -B1 -A1            # Textkalender: Aktuellen Monat, einen Monat davor, einen danach anzeigen
export VAR=value       # Umgebungsvariable VAR mit Wert value setzen
env                    # Umgebungsvariablen anzeigen
env | grep -i 'hallo'  # In der Ausgabe von env nach eine Zeile suchen, die 'hallo' enthält
watch -n 1 <command>   # Programm <command> im Intervall von 1 Sekunde ausführen
ln -s foo.txt .        # Symbolische Verknüpfung auf foo.txt im lokalen Pfad erstellen
cd -                   # Ins vorherige Verzeichnis wechseln

Befehlshistorie

history                # Letzte Befehle ausgeben
history -c             # Historie löschen
!123                   # Befehl mit Nummer 123 in Historie ausführen
!xyz                   # Letzten Befehl, der mit xyz begann, ausführen
!?xyz                  # Letzten Befehl, der mit xyz endete, ausführen
!?xyz?                 # Letzten Befehl, der xyz enthielt, ausführen

Viewer und Editoren

cat xxx                # Datei xxx ausgeben
less xxx               # Datei im Dateibetrachter Less öffnen
zless file.gz          # Datei file.gz mit Dateibetrachter Less öffnen
nano xxx               # Datei xxx im Texteditor Nano öffnen
vim xxx                # Datei xxx im Texteditor VIM öffnen
emacs xxx              # Datei xxx im Texteditor EMACS öffnen

Datum und Uhrzeit

date                   # Datum und Systemzeit anzeigen
watch -n 1 date        # Im Intervall von einer Sekunde Datum und Uhrzeit ausgeben
hwclock                # Uhrzeit der Hardware-Uhr anzeigen
hwclock --show --utc   # Uhrzeit der Hardware-Uhr in UTC anzeigen
cat /etc/timezone      # Zeitzone anzeigen

date +%T -s "10:00:00" # Uhrzeit auf 10:00:00 Uhr setzen hwlock -w # Uhrzeit auf aktuelle Systemzeit setzen

Dienstverwaltung

service --status-all               # Status aller Dienste anzeigen
service xxx status                 # Status von Dienst xxx anzeigen
service xxx start|stop|restart     # Dienst xxx starten/stoppen/neustarten
/etc/init.d/xxx start|stop|restart # Dienst xxx starten/stoppen/neustarten
systemctl start|stop|status xxx    # SystemD-Dienst xxx starten/stoppen/status
    

Shutdown und Reboot (Sofort)

shutdown -h now
shutdown -r now


Suchen und Finden

grep -i 'hello world' file.txt          # In file.txt zeilenweise nach 'Hello World' nicht
                                        # case-sensitiv suchen
cat file.txt | grep -i 'hello world'    # Gleiches Ergebnis wie in der vorangegangenen Zeile

locate file.foo # Speicherort von Datei file.foo suchen
find | grep -i 'file.txt' # Alle Dateien im und unterhalb vom aktuellen Verzeichnis # suchen, und im Suchergebnis die Zeichnenkette file.txt # nicht case-sensitiv suchen find -name '*filename*' # Nach filename im und unterhalb vom aktuellen Verzeichnis # case-sensitiv suchen find -iname '*filename*' # Nach filename im und unterhalb vom aktuellen Verzeichnis # nicht case-sensitiv suchen find -iname '*filename*' -exec rm {} + # Nach filename im und unterhalb vom aktuellen Verzeichnis # nicht case-sensitiv suchen und mit dem Suchergebnis rm # ausführen
find . -mtime +30 -delete # Dateien im akt. Verzeichnis suchen, die älter als 30 Tage # sind, und löschen find . -maxdepth 1 -mtime +30 -type d -exec rm -r {} + # Verzeichnisse im akt. Verzeichnis suchen, # die älter als 30 Tage sind, # und diese inkl. aller Unterverzeichnisse löschen

Suchen und ersetzen

sed -i 's/jessie/stretch/g' filename    # In Filename "jessie" finden und durch "stretch" ersetzen

Informationen

Ressourcen und Statistiken

free                   # RAM-Speicher Auslastung
top                    # CPU-Nutzung, Uptime, RAM-Verbrauch
htop                   # Top mit Balkendarstellung von Ressourcen

Betriebssystem

uptime                        # Onlinezeit des Betriebssystems
uname -a                      # Kernelversion, Bezeichnung und Hostname
uname -r                      # Kernelname / Version
cat /proc/version             # Kernelversion
cat /etc/issue                # Name und Version der Distribution
cat /etc/debian_version       # Debian Versionsnummer
cat /etc/os-release           # Versionsnummer des Betriebssystemreleases
hostnamectl                   # Kerlen-Version, Architektur, Systemname 
screenfetch                   # Betriebssystemversion Uptime, Kernelversion, CPU, RAM (Paket muss manuell installiert werden)

Die Datei /etc/debian_version ist im Paket base-files enthalten. Daher kann die installierte Debian-Version (und eine möglicherweise zur Verfügung stehende neuere Version) aus der Version des Pakets abgeleitet werden.

Speicherplatz / Festplatte

df                     # Freier und belegter Plattenplatz in 1K-Blöcken
df -h                  # Menschenlesbar in Potenzen von 1024
df -H                  # Menschenlesbar in Potenzen von 1000 (Entspricht Gnome-Anzeigen)
df -T                  # Dateisystemtyp ausgeben

Speicherplatz / Verzeichnisse

du                          # Speicherverbrauch / Größe von Verzeichnissen
du -h                       # Größe von Verzeichnissen, Menschenlesbar
du -hs                      # Größe von Verzeichnissen, Menschenlesbar, Summarize (=Ohne Unterverzeichnisse)
du -h -d 1                  # Größe von Verzeichnissen, Menschenlesbar, Depth = 1
du -hd 1
du --si -d 1                # Wie -h, jedoch mit Potenzen von 1000 statt 1024
find <dir> -type f | wc -l  # Anzahl Dateien im Verzeichnis <dir>

CPU

Damit Intel Turbo Boost in Linux funktioniert, muss es im BIOS aktiviert sein.

cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq       # Maximale CPU-Taktgeschwindigkeit inkl. Intel Turbo Boost
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq       # Minimale CPU-Taktgeschwindigkeit inkl. Intel Turbo Boost
cat /proc/cpuinfo                                               # Infos zur CPU und aller Kerne anzeigen
cat /proc/cpuinfo | grep -i 'cpu mhz'                           # Aktuelle CPU-Geschwindigkeit und aller Kerne anzeigen

Laufwerke

less /etc/fstab        # Gemountete Laufwerke
fsck -N /dev/xxx       # ???
fdisk -l               # Gerätenamen rausfinden, z. B. /dev/sdc1
lsblk                  # Gerätenamen und Mountpunkte rausfinden
lsblk -l               # Gerätenamen rausfinden
                       # Auflistung von Labels und UUIDs ausgeben:
lsblk -o NAME,TYPE,SIZE,FSTYPE,LABEL,UUID
hdparm -tT /dev/sdx    # Laufwerksgeschwindigkeit feststellen

Dateilisten

ls -ogRh dir1                # Liste von Dateien von dir1 ausgeben ohne User/Gruppe in menschenlesbarer Form
ls -lh | cut -d" " -f5-      # Von der Liste nur alle Spalten ab der 5. Spalte ausgeben (Trennzeichen/Delimiter = " ")
ls -ogRh dir1 >  file1.txt   # Wie oben, aber Inhalt in Datei file1.txt schreiben (bestehende überschreiben)
ls -ogRh dir1 >> file1.txt   # Wie oben, aber Inhalt an Datei file1.txt anhängen

Packen

Siehe Packen und Entpacken (Linux)

Entpacken

Siehe Packen und Entpacken (Linux)

Integrität prüfen

MD5 sollte nicht mehr genutzt werden. SHA256 geht auch:

sha256sum xxx          # SHA256 Prüfsumme für Datei xxx erstellen.
cat xxx.sha256         # Prüfusumme aus Datei xxx.sha256 ausgeben

Netzwerk

hostname                  # Hostname des Computers
hostname -I               # IP-Adresse des Computers
ip addr                   # * IP-Adressen der Netzwerkadapter auflisten
ifconfig -a               # Alle Netzwerkadapter auflisten (auch inaktive)
ifconfig eth1 up|down     # Netzwerkadapter ein- oder ausschalten
ifconfig eth1 -multicast  # Multicast auf Adapter eth1 deaktivieren
ifconfig eth1 multicast   # Multicast auf Adapter eth1 aktivieren
netstat -tulpe            # Liste der offenen Ports mit Anwendungen und Usern anzeigen
netstat -tulpen           # * Liste der offenen Ports mit Anwendungen und Usern anzeigen, Ports und User numerisch anzeigen
netstat -l                # Listening Ports anzeigen
netstat -l --inet 	  # Listening Ports anzeigen
netstat -ln --tcp 	  # Listening TCP Ports (numeric) anzeigen
netstat -i                # Netzwerk Schnittstellentabelle anzeigen
netstat -g                # Multicast Gruppenzugehörigkeiten anzeigen
netstat -a 	          # Alle offenen Ports anzeigen
netstat -napt             # Alle offenen Ports und welche Prozess-IDs und Programmnamen diese nutzen / belegen
nmap -v -A <host>         # Offene Ports auf <host> anzeigen (langsam)

Secure Shell / SSH

ssh <server>              # Mit <server> verbinden
ssh -p<port> <server>     # Mit <server> über <port> verbinden
ssh -p<port> -L <localport>:localhost:<remoteport> <server>
                          # Mit <server> über <port> verbinden, und dabei <remoteport> durch den SSH Tunnel an localhost auf den <localport> umleiten

Kopieren via SSH

scp user@server:/from/remote/dir/* /to/local/dir
scp -P PORT user@server:/from/remote/dir/* /to/local/dir   # Use PORT for SSH
rsync -rt user@server:/from/remote/dir/* /to/local/dir/     # Recursive, preserve times
rsync -rt --progress user@server:/from/remote/dir/* /to/local/dir/     # Recursive, preserve times, show progress bar
rsync -rtv --progress user@server:/from/remote/dir/* /to/local/dir/     # Recursive, preserve times, verbose, show progress bar
rsync -rtv --progress -e "ssh -p PORT" user@server:/from/remote/dir/* /to/local/dir/     # Recursive, preserve times, verbose, show progress bar, use PORT for SSH

Paketmanager und Programminstallation

apt-get update                   # Paketlisten aktualisieren
apt-get upgrade                  # Installierte Programme aktualisieren → Gefährlich!
apt-get install xxx              # Programm xxx installieren
apt-get install xxx -t yyy       # Programm xxx aus Release yyy installieren (Z. B. aus Backports)
dpkg -l                          # Liste installierter Programme anzeigen
dpkg -l xxx                      # Ein paar Details zum installierten Programm xxx anzeigen
dpkg -i xxx.deb                  # Paket xxx.deb installieren
dpkg -s xxx                      # Status und mehr Details zum installierten Programm xxx anzeigen
dpkg -L xxx                      # Welche Dateien gehören zum Paket xxx?
dpkg -S xxx                      # Zu welchem Paket gehört die Datei xxx?
dpkg -C                          # Konsistenzprüfungen der Datenbank
aptitude                         # Programm zur Paketverwaltung mit CLI-Interface
aptitude search xxx              # Pakete suchen, deren Name dem Suchstring xxx entspricht
aptitude search '~o'             # Obsolete Pakete suchen

Upgrade einer Debian-Distribution wird beschrieben in Distributions-Upgrade (Debian)

Welche Unterverzeichnisse nutzt ein Programm?

whereis xxx

USB-Stick mit ISO-Image als Boot-Medium erstellen

Zuerst Laufwerksnamen herausfinden:

lsblk -o NAME,TYPE,SIZE,FSTYPE,LABEL,UUID    # Variante 1
fdisk -l                                     # Variante 2

Beispiel für Kopieren eines Debian-Installations-Hybrid-ISO-Images auf einen USB-Stick

cp foo.iso /dev/sdX  ← WICHTIG: nur das Gerät sdX verwenden, nicht die Partition sdXX
sync

Alternative:

dd if=foo.iso of=/dev/sdX bs=4M ← WICHTIG: nur das Gerät sdX verwenden, nicht die Partition sdXX
sync

Kernelbefehle

rmmod nvidia                    # Kernelmodul nvidia ohne Reboot entladen
modprobe nouveau                # Kernelmodul nouveau laden
dmesg                           # Auflistung des Kerneloutputs beim Bootvorgang
dmesg | grep -i 'test'          # Im Kerneloutput nach 'test' suchen
lsmod | grep 'asdf'             # Geladene Module ausgeben, Filtern nach 'asdf'

Energieverwaltung

$ xset dpms force on            # Monitor ausschalten / Standby
$ xset dpms force off           # Monitor einschalten / Wakeup
$ xset -q                       # Monitor Status abfragen (?)