# Nützliche Bash-Einzeiler

#### Logausgabe verfolgen und gleichzeitig nach einem bestimmten String suchen

```shell
tail -f file | grep --line-buffered my_pattern
```

<div id="bkmrk-"></div>#### SSH Keys von Github importieren

```shell
ssh-import-id-gh <username>

ODER falls auf dem System dieses Tool nicht vorinstalliert ist

mkdir -m 700 ~/.ssh; curl https://github.com/<username>.keys >> ~/.ssh/authorized_keys
```

<div id="bkmrk--0"></div>#### Inhalte in Dateien ersetzen

```shell
sed -i 's/old-text/new-text/g' input.txt
```

<div id="bkmrk--1"></div>#### Passwort generieren

```shell
date +%s | sha256sum | base64 | head -c 32 ; echo
```

<div id="bkmrk--2"></div>#### String hashen

```shell
echo -n "yourstring" | shasum -a 512
```

<div id="bkmrk--3"></div>#### Timestamp zu Datum konvertieren

```shell
date -d @<TIMESTAMP>

ex. 
date -d @1616934873
Sun 28 Mar 2021 02:34:33 PM CEST
```

#### Datum zu Timestamp konvertieren

##### Linux

```shell
date -d '06/12/2012 07:21:22' +"%s"
```

**Beachte:** Amerikanisches Datumsformat, sprich *MM/DD/YYYY*

##### Mac OS

```shell
date -j -u -f "%a %b %d %T %Z %Y" "Tue Sep 28 19:35:15 EDT 2010" "+%s"
```

<div id="bkmrk--4"></div>#### Dateien von Gerät A zu Gerät C über Gerät B kopieren (Jumphost-like)

```shell
scp -oProxyCommand="ssh -W %h:%p user@host_jumphost" quelldatei user@host_ziel:zielverzeichnis
```

#### Backup des gesamten Systems anfertigen

```shell
rsync -aAXHv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /path/to/backup
```

#### Alle Dateien aus Unterordnern in das aktuelle Verzeichnis verschieben

```shell
find . -mindepth 2 -type f -print -exec mv {} . \;
```

#### Alle selber erstellten User auflisten

```shell
awk -F'[/:]' '{if ($3 >= 1000 && $3 != 65534) print $1}' /etc/passwd
```

<p class="callout info">Es werden keine Systemuser aufgeführt (welche i.d.R. eine UserID &lt; 1000 haben)</p>

#### IP Adressen in Webserver-Zugriffslogs auszählen

```shell
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
```