# Terminal Befehle

## Übersicht

<div class="page-content" id="bkmrk-befehl-beispiel-besc"><div class="page-content"><div dir="auto"><table id="bkmrk-befehl-beispiel-besc-1" style="width: 100%;"><thead><tr><th style="width: 26.2052%;">Befehl</th><th style="width: 28.6653%;">Beispiel</th><th style="width: 45.1295%;">Beschreibung</th></tr></thead><tbody><tr><td style="width: 26.2052%;">cat</td><td style="width: 28.6653%;">`cat /etc/fstab`</td><td style="width: 45.1295%;">Ausgabe von Text- und Konfigurationsdateien</td></tr><tr><td style="width: 26.2052%;">chmod</td><td style="width: 28.6653%;">`chmod -R 777 ~/Dokumente`</td><td style="width: 45.1295%;">ändert die Berechtigungen einer Datei oder Ordner</td></tr><tr><td style="width: 26.2052%;">  
</td><td style="width: 28.6653%;">`chmod +x dateinahme`</td><td style="width: 45.1295%;">macht eine Datei ausführbar</td></tr><tr><td style="width: 26.2052%;">touch</td><td style="width: 28.6653%;">`touch file1.md`  
</td><td style="width: 45.1295%;">erstellt eine leere Datei</td></tr><tr><td style="width: 26.2052%;">cp</td><td style="width: 28.6653%;">`cp mein.pdf ~/Schreibtisch`</td><td style="width: 45.1295%;">kopieren</td></tr><tr><td style="width: 26.2052%;">mv</td><td style="width: 28.6653%;">`mv datei.txt datei.old`</td><td style="width: 45.1295%;">Benennt eine Datei um</td></tr><tr><td style="width: 26.2052%;">  
</td><td style="width: 28.6653%;">`mv /mnt/transfer/text.txt /ort/text.txt`</td><td style="width: 45.1295%;">Datei verschieben</td></tr><tr><td style="width: 26.2052%;">rm</td><td style="width: 28.6653%;">`rm /home/sepp/*.jpg`</td><td style="width: 45.1295%;">löscht alle jpg dateien in Sepp (löschen)</td></tr><tr><td style="width: 26.2052%;">du</td><td style="width: 28.6653%;">`du /home/sepp/bilder`</td><td style="width: 45.1295%;">ermittelt den Speicherplatz eines Ordners</td></tr><tr><td style="width: 26.2052%;">mkdir</td><td style="width: 28.6653%;">`mkdir /home/sepp/dokumente`</td><td style="width: 45.1295%;">Erstellt einen Ordner</td></tr><tr><td style="width: 26.2052%;">rmdir</td><td style="width: 28.6653%;">`rmdir /media/data/bilder`</td><td style="width: 45.1295%;">löscht Ordner</td></tr><tr><td style="width: 26.2052%;">find</td><td style="width: 28.6653%;">`find / -name logs`

`find / -name logs 2>/dev/null`

</td><td style="width: 45.1295%;">Findet Dateien mit dem namen Logs

Durch die Erweiterung werden Fehlermeldungen die in Ausgabe 2 ausgegeben werden an /dev/null geschickt. Somit werden Fehlermeldungen nicht mehr angezeigt

</td></tr><tr><td style="width: 26.2052%;">  
</td><td style="width: 28.6653%;">find . -user dan

</td><td style="width: 45.1295%;">Sucht alle Dateien die dem User dan gehören

</td></tr><tr><td style="width: 26.2052%;">  
</td><td style="width: 28.6653%;">`find . -executable -type f`

</td><td style="width: 45.1295%;">Findet Dateien, die ausführbar sind

</td></tr><tr><td style="width: 26.2052%;">locate</td><td style="width: 28.6653%;">`locate logs`

</td><td style="width: 45.1295%;">Ähnlich wie find

</td></tr><tr><td style="width: 26.2052%;">grep</td><td style="width: 28.6653%;">`grep 500 access.log`

</td><td style="width: 45.1295%;">Um innerhalb von dateien zu suchen. In dem Beispiel werden in access.log die Einträge mit 500 angezeigt

</td></tr><tr><td style="width: 26.2052%;">  
</td><td style="width: 28.6653%;">`grep -R password`

</td><td style="width: 45.1295%;">Suche im aktuellen Ordner mit allen unterordnern

</td></tr><tr><td style="width: 26.2052%;">less</td><td style="width: 28.6653%;">`less log.txt`

</td><td style="width: 45.1295%;">Damit können Dateien durchsucht werden

Wenn man in Less &amp;404 eingibt werden nur Zeilen mit dme inhalt 404 angezeigt.

Benenden mit !

</td></tr><tr><td style="width: 26.2052%;">man</td><td style="width: 28.6653%;">`man grep`

</td><td style="width: 45.1295%;">Hilfe zu Befehlen

</td></tr><tr><td style="width: 26.2052%;">tree</td><td style="width: 28.6653%;">`tree /home`</td><td style="width: 45.1295%;">Alternative zu ls</td></tr><tr><td style="width: 26.2052%;">rsync</td><td style="width: 28.6653%;">`rsync -au /home/sepp/ /media/USB/Backup`</td><td style="width: 45.1295%;">`kopiert, aktualisiert ("-u"), spiegelt ("--delete") verzeichnise rekursiv ("-a") im lokalen Dateisystem und Netzwerk (ähnlich wie robocopy)`</td></tr><tr><td style="width: 26.2052%;">  
</td><td style="width: 28.6653%;">`rsync -a -r --delete /home/sepp /mnt/paperless_backup`</td><td style="width: 45.1295%;">  
</td></tr><tr><td style="width: 26.2052%;">  
</td><td style="width: 28.6653%;">`rsync -au --delete --dry-run /home/sepp/ /media/sepp/USB/Backup`</td><td style="width: 45.1295%;">-dry-run dient als Simulation und vorabtest</td></tr><tr><td style="width: 26.2052%;">tar</td><td style="width: 28.6653%;">`tar -czf 2022_02_12 /home/sepp/`</td><td style="width: 45.1295%;">`komprimiert Ordner und Dateien. -c steht für create, -z für platzsparende gzip-Komprimierung, -f sorgt für rekursiven Umfang. Der Name des Archivs folgt nach den Schaltern, am Ende der Pfad der Quelldateien.`</td></tr><tr><td style="width: 26.2052%;">  
</td><td style="width: 28.6653%;">`tar -xf 2022-02-12`</td><td style="width: 45.1295%;">schalter -x entpackt Tar-Archive</td></tr><tr><td style="width: 26.2052%;">*System*</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">  
</td></tr><tr><td style="width: 26.2052%;">hostname</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">liefert Servername oder Computername des Systems</td></tr><tr><td style="width: 26.2052%;">shutdown / reboot</td><td style="width: 28.6653%;">`reboot now`</td><td style="width: 45.1295%;">Fährt das system herunter oder Starte neu</td></tr><tr><td style="width: 26.2052%;">  
</td><td style="width: 28.6653%;">`shutdown 22:00`</td><td style="width: 45.1295%;">Herunterfahren zu einem bestimmten Zeitpunkt</td></tr><tr><td style="width: 26.2052%;">which</td><td style="width: 28.6653%;">`which poweroff`</td><td style="width: 45.1295%;">ermittelt den Systempfad eines Programms</td></tr><tr><td style="width: 26.2052%;">whereis</td><td style="width: 28.6653%;">`whereis python3`</td><td style="width: 45.1295%;">liefert auch noch weitere zu Pfade zu Bibliotheken oder Manpages</td></tr><tr><td style="width: 26.2052%;">service</td><td style="width: 28.6653%;">service --status-all</td><td style="width: 45.1295%;">informiert über aktive und inaktive systemdienste und bietet deren Steuerung an.</td></tr><tr><td style="width: 26.2052%;">  
</td><td style="width: 28.6653%;">service docker status</td><td style="width: 45.1295%;">Für den Dienst bestimmte Aktionen (auch stop, restart)</td></tr><tr><td style="width: 26.2052%;">systemd-analyze</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">Es protokolliert detailliert den Bootprozess und kann die Ursache von Bootverzögerungen entlarven.</td></tr><tr><td style="width: 26.2052%;">`python3 -m http.server 4444`</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">`Python Server zum bereitstellen von dateien im aktuellen Ornder`</td></tr><tr><td style="width: 26.2052%;">passwd</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">Passwort ändern</td></tr><tr><td style="width: 26.2052%;">lsblk</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">Festplatten anzeigen lassen </td></tr><tr><td style="width: 26.2052%;">ls</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">zeigt den Inhalt des aktuellen Verzeichnisses an</td></tr><tr><td style="width: 26.2052%;">ls -a</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">zeigt alle Inhalte an, auch die versteckten (beginnen mit einem Punkt)</td></tr><tr><td style="width: 26.2052%;">ls -l</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">zeigt den Inhalt des Verzeichnisses im Detail mit Zusatzinformationen an</td></tr><tr><td style="width: 26.2052%;">ls -la</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">kombiniert die Optionen -l und -a</td></tr><tr><td style="width: 26.2052%;">ls bin</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">zeigt das Unterverzeichnis bin oder eine Datei namens bin im aktuellen Verzeichnis an</td></tr><tr><td style="width: 26.2052%;">pwd</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">zeigt das aktuelle Verzeichnis an</td></tr><tr><td style="width: 26.2052%;">cd /etc</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">wechselt in das Verzeichnis /etc</td></tr><tr><td style="width: 26.2052%;">cd ../bin</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">wechselt eine ebene höher und von dort in das Unterverzeichnis bin</td></tr><tr><td style="width: 26.2052%;">cd -</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">wechselt in das vorhergehende Verzeichnis</td></tr><tr><td style="width: 26.2052%;">cd</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">wechselt in das Homeverzeichnis des aktuellen Benutzers</td></tr><tr><td style="width: 26.2052%;">mkdir bin</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">erstellt ein Unterverzeichnis bin</td></tr><tr><td style="width: 26.2052%;">nano [HelloWorld.py](http://helloworld.py/)</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">ruft den Editor nano mit der angegebenen Datei auf (wird ggf. erstellt)</td></tr><tr><td style="width: 26.2052%;">cat [HelloWorld.py](http://helloworld.py/)</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">zeigt die (Text-)Datei [HelloWorld.py](http://helloworld.py/) an</td></tr><tr><td style="width: 26.2052%;">mv [HelloWorld.py](http://helloworld.py/) [helloworld.py](http://helloworld.py/)</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">benennt die Datei von [HelloWorld.py](http://helloworld.py/) in [helloworld.py](http://helloworld.py/) um</td></tr><tr><td style="width: 26.2052%;">mv [helloworld.py](http://helloworld.py/) ../</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">verschiebt die angegebene Datei in das übergeordnete Verzeichnis</td></tr><tr><td style="width: 26.2052%;">cp [helloworld.py](http://helloworld.py/) bin/HelloWorld.py</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">kopiert die angegebene Datei an die angegebene Stelle</td></tr><tr><td style="width: 26.2052%;">rm [helloworld.py](http://helloworld.py/)</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">löscht die angegebene Datei</td></tr><tr><td style="width: 26.2052%;">which python</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">zeigt den Pfad zum angegebenen Programm</td></tr><tr><td style="width: 26.2052%;">python3 [HelloWorld.py](http://helloworld.py/)</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">ruft [HelloWorld.py](http://helloworld.py/) mit dem Python3-Interpreter auf</td></tr><tr><td style="width: 26.2052%;">chmod +x [HelloWorld.py](http://helloworld.py/)</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">ergänzt das Ausführen-Recht für alle Benutzer für die angegebene Datei</td></tr><tr><td style="width: 26.2052%;">echo $PATH</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">zeigt den Inhalt der Variablen PATH an</td></tr><tr><td style="width: 26.2052%;">PATH='/root/bin':$PATH</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">fügt der Variablen PATH vorn /root/bin an</td></tr><tr><td style="width: 26.2052%;">apt-get install kate</td><td style="width: 28.6653%;">  
</td><td style="width: 45.1295%;">installiert das Paket kate</td></tr></tbody></table>

</div></div></div>### Dateisystem

<table border="1" id="bkmrk-pfad-bezeichnung-%2Fbi" style="border-collapse: collapse; width: 100%; border-width: 1px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td style="border-width: 1px;">Pfad</td><td style="border-width: 1px;">Bezeichnung</td></tr><tr><td style="border-width: 1px;">/bin</td><td style="border-width: 1px;">Enthält Programm des Betriebssystems</td></tr><tr><td style="border-width: 1px;">/home</td><td style="border-width: 1px;">Nutzerverzeichnisse</td></tr><tr><td style="border-width: 1px;">/opt</td><td style="border-width: 1px;">Anwendungen von Drittanwendern (apt…)</td></tr><tr><td style="border-width: 1px;">/usr</td><td style="border-width: 1px;">Enhält Anwendungen die vom Admin auf dem System gebaut wurden und Programmbibliotheken</td></tr><tr><td style="border-width: 1px;">/etc</td><td style="border-width: 1px;">Enhält anwendungszugehörige Dateien zum Konfigurieren</td></tr><tr><td style="border-width: 1px;">/var</td><td style="border-width: 1px;">Enthält häufig veränderte Dateien (Logs/Temp)</td></tr><tr><td style="border-width: 1px;">/dev</td><td style="border-width: 1px;">Seht für Devices. </td></tr><tr><td style="border-width: 1px;">/mnt</td><td style="border-width: 1px;">  
</td></tr></tbody></table>

### Geräte Mounten 

lsblk &gt; Zeigt an welche Festplatten es gibt  
mkdir usbstick &gt; Erstellt einen Ordner in dem die dateien angezeigt werden sollen   
sudo mount /dev/sdb1 usbstick &gt; Mounted den USB-Stick in den Ordner usbstick

# Find

```
## Dateien suchen

### Dateien mit einem bestimmten Namen

find /pfad/zum/ordner -tpye f -iname "*string*.*"

### Dateien mit bestimmten Namen die Zuletzt bearbeitert wurden 

find /pfad/zum/ornder -type f -iname "*string*.*" -exec ls -lt {} +

**Nur die letzten 10**

find /pfad/zum/ordner -type f -iname "*suchstring*.*" -exec ls -lt {} + | head -10

### Inhalt durchsuchen 

find /pfad/zum/ordner -type f -exec grep -l "dein_inhalt" {} +

```

Dateien Suchen

```
find /home/dapelza/Nextcloud -type f -name „*.ods“ -exec stat -c „%y %n“ {} + | sort -r | head -n 10
```

## Texteditor nano

<table border="1" id="bkmrk-befehl-beschreibung-" style="border-collapse: collapse; width: 100%; border-width: 1px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td style="border-width: 1px;">**Befehl**</td><td style="border-width: 1px;">**Beschreibung**</td></tr><tr><td style="border-width: 1px;">Crtl + X</td><td style="border-width: 1px;">Verlassen</td></tr><tr><td style="border-width: 1px;">Crtl + 6</td><td style="border-width: 1px;">Marieren</td></tr><tr><td style="border-width: 1px;">ALT + 6</td><td style="border-width: 1px;">Kopieren</td></tr><tr><td style="border-width: 1px;">Crtl + U</td><td style="border-width: 1px;">Einfügen</td></tr><tr><td style="border-width: 1px;">Crtl + K</td><td style="border-width: 1px;">Ausschneiden</td></tr><tr><td style="border-width: 1px;">Alt + U</td><td style="border-width: 1px;">Rückgängig</td></tr><tr><td style="border-width: 1px;">Alt + E</td><td style="border-width: 1px;">Wiederholen</td></tr><tr><td style="border-width: 1px;">Crtl + W</td><td style="border-width: 1px;">Suchen</td></tr><tr><td style="border-width: 1px;">Esc + B</td><td style="border-width: 1px;">Zum umschalten (Toogle)</td></tr><tr><td style="border-width: 1px;">Crtl + \\</td><td style="border-width: 1px;">Suchen + Ersetzen</td></tr><tr><td style="border-width: 1px;">Crtl + G</td><td style="border-width: 1px;">Hilfe</td></tr><tr><td style="border-width: 1px;">Crtl + R</td><td style="border-width: 1px;">Weitere Datei öffnen (vorher mit Esc - F) Dann würd eine neue Datei geöffnet. Mit Crtl + T Browser öffnen</td></tr><tr><td style="border-width: 1px;">Alt + &lt; oder &gt;</td><td style="border-width: 1px;">Zwischen den geöffneten Dateien wechseln</td></tr><tr><td style="border-width: 1px;">Esc - X </td><td style="border-width: 1px;">Hilfe ein und ausschalten</td></tr><tr><td style="border-width: 1px;">Esc - C </td><td style="border-width: 1px;">Zeilennummer anschauen lassen</td></tr><tr><td style="border-width: 1px;">Esc - P</td><td style="border-width: 1px;">Kontrollmarker anzeigen lassen</td></tr><tr><td style="border-width: 1px;">Esc - O </td><td style="border-width: 1px;">Stellt den Tabulator um </td></tr><tr><td style="border-width: 1px;">Esc - Y</td><td style="border-width: 1px;">Syntaxhighlighting</td></tr><tr><td style="border-width: 1px;">Crtl + T</td><td style="border-width: 1px;">Ausführen</td></tr></tbody></table>

Nano mit der Konfigurationsdatei anpassen

nano /etc/nanorc

z. B. Zeilennummern anzeigen lassen

set linenumbers

## Texteditor vi

<div class="page-content" id="bkmrk-befehl-kommentar-vi-"><div class="page-content"><div dir="auto"><table border="1" id="bkmrk-befehl-kommentar-vi--1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col><col style="width: 33.3333%;"></col></colgroup><tbody><tr><td>Befehl</td><td>  
</td><td>Kommentar</td></tr><tr><td>`vi`  
</td><td>`vi file1.md`  
</td><td>Startet den vi Editor (sofern installiert)</td></tr><tr><td>`i`  
</td><td>  
</td><td>startet den Insert Mode</td></tr><tr><td>`esc`  
</td><td>  
</td><td>Insertmode wird beendet

</td></tr><tr><td>`:wq`  
</td><td>  
</td><td>Datei schreiben und beenden

</td></tr></tbody></table>

</div></div></div>## Bash konfigurieren 

## System

### Informationen anzeigen

```
`cat/etc/*_ver* /ect/*-rel*`

```

## Terminal-Interna

<div class="page-content" id="bkmrk-befehl-beschreibung--1"><div class="page-content"><div dir="auto"><table border="1" id="bkmrk-befehl-beschreibung--2" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 25.6174%;"></col><col style="width: 74.5062%;"></col></colgroup><tbody><tr><td>Befehl</td><td>Beschreibung</td></tr><tr><td>bind

</td><td>Tastenbelegung im Terminal. *Beispiel* `bind '"\C_L":kill-whole-line' "\\C" = Strg, "\\e" = Alt, "\\n" = Enter` `Bind-Befehle können Sie interaktiv ausprobieren. Sie gelten bis zum Schließen des Terminals. Für permanente Gültigkeit benötigen Sie einen Eintrag in der „\~/.bashrc“.`</td></tr><tr><td></td><td>**Dauerhaftes einbinden** `~/.bash_aliases` bearbeiten | Befehle und tastenkombinatinen hinterlegen | `alias checkupdates='sudo apt-get update && sudo apt-get upgrade -y'`</td></tr><tr><td>file

</td><td>**Beschreibung:** ermittelt den Dateityp und die genauen inhaltlichen Dateieigenschaften</td></tr><tr><td>htop

</td><td>**Beschreibung:** Taskmanager für den Terminal</td></tr><tr><td>**Festplatte**

</td><td>  
</td></tr><tr><td>hdparm -c /dev/sda

</td><td>Festplatte überprüfen</td></tr><tr><td>hdparm -Y /dev/sda

</td><td>Festplatte geht in den StandbyModus</td></tr><tr><td>ls -la /dev/disk/by-id/

</td><td>zeigt alle Festplatten mit der ID an.</td></tr><tr><td></td><td> nano /etc/hdparm.conf</td></tr></tbody></table>

</div></div></div>## Weitere Dienste

### Datenträger Klonen

```shell
sudo dd if=/dev/sda of=/dev/sdb  # if = Quelle of = Ziel

# Mit Status: 

sudo dd if=/dev/sda of=/dev/sdb stauts=progress

```

### Datenträger formatieren

```
# Datenträger anzeigen
sudo fdisk -I

# Formatieren in ext4
mkfs.ext4/dev/sdb1 # Damit wir der Datenträger sdb1 in ext4 formatiert. mkfs steht für make filesystem

```

Formatieren mit GParted

```
# GParted installieren
apt install parted

# F
unmount /dev/sdb1


```

### Linux in deutsch

**Systemsprache umstellen**

`sudo dpkg-reconfigure locales`

**Tastatur Layout umstellen**

`sudo dpkg-reconfigure keyboard-configuration`

### Paketdienst installieren

$ sudo apt update &amp;&amp; sudo apt install snapd

Installiert Snap

### Programme mit Snap installieren

sudo snap install onionshare

### Metadaten aus Dateien (PDF) entfernen

```
> exiftool -all:all= datei-print.pdf
Warning: [minor] ExifTool PDF edits are reversible. Deleted tags may be recovered!
   1 image files update

> qpdf --linearize datei-print.pdf datei-clean.pdf

> rm datei-print.pdf


```

Mit dem Befehl kann man die Daten überprüfen:

`exiftool -all:all datei-clean.pdf`

### Administrator

`sudo -s`

### SSH auf Container aktivieren

Datei: `/etc/ssh/sshd_config`

Authentication: `PermitRootLogin yes `