Dateien mit bestimmtem Inhalt finden

Beispiel-Task:
Liste alle Datein vom Typ .htaccess mit dem String “127.0.0.1” rekursiv vom angegebenen Verzeichnis auf. Hierbei soll die Zeilennummer (-n) ebenfalls ausgegeben werden:

grep --include=\.htaccess -rnw '/usr/home/apache/public_html/' -e "127.0.0.1"

Ersetzen von Strings in bestimmten Dateien

Beispiel-Aufgabe:
Ersetze 255.255.255.255 durch 127.0.0.1 in allen .htaccess-Dateien rekursiv vom aktuellen Verzeichnis (.) aus:

find . -type f -name ".htaccess" -print0 | xargs -0 sed -i 's/255.255.255.255/127.0.0.1/g'

Weiteres Beispiel:
Strings, die selbst einen Slash enthalten. Interessant bspw. bei der Ersetzung von IPv6-Präfixen.

Die Raute (#) ersetzt den üblichen Slash (/) bei der Verwendung von sed (Stream EDitor):

find . -type f -name ".htaccess" -print0 | xargs -0 sed -i 's#c0de:cafe:face:b00c::/59#face:b00c:c0de:cafe::/59#g'

Bash-Funktion: Grep History

Datei .bashrc im Home-Verzeichnis mit einem Editor öffen:

nano ~/.bashrc

Folgende Zeile hinzufügen und speichern…

function gh () { history | grep $* ; }

Bash-Konfiguration neu laden…

source ~/.bashrc

Nun ist gh als Shell-Befehl aktiviert und vergangene Kommandos lassen sich komfortabel abrufen und mit der Kurzform (Ausrufezeichen+Zahl) erneut absetzen.

gh update

…liefert bspw. folgendes zurück und kann mit !1337 wiederholt werden:

1337  sudo apt update && sudo apt upgrade -y

Ordnerinhalt rekursiv kopieren

Folgendes Beispiel kopiert den Inhalt des Ordners archive nach LetsEncrypt.

In den Zielordner wird der Inhalt von archive kopiert, nicht archive selbst.

cp -r /etc/letsencrypt/archive/* /var/www/html/LetsEncrypt/

Wenn z. B. archive kopiert werden soll, siehe diesen Beitrag.