Archiv der Kategorie: Shell

Shell: Debian/Raspian booten zur Console

Wer Raspberry OS (ehemals Raspian) installiert hat, landet nach dem Boot-Vorgang auf dem Desktop. In diesem Fall kann eine Console geöffnet werden und mit „sudo raspi-config“ das Konfigurationsprogramm aufgerufen werden (1 System Options > S5 Boot / Auto Login). Dort lässt sich einstellen, dass nach dem Booten die Console und nicht der Desktop angezeigt wird.

In Debian gibt es kein „sudo raspi-config“, wohl aber eine Möglichkeit das Booten zur Console als Standart einzustellen:

sudo systemctl set-default multi-user.target

Von der Console kann mit „startx“ X-Windows gestartet werden. Den aktuellen Zustand erhält man mit:

systemctl get-default

Um zurück zum grafischen Modus (Desktop) zu gelangen wird folgendes eingegeben:

sudo systemctl set-default graphical.target

Shell: Rekursiv nach verschiedenen Dateitypen suchen

find ./ -type f \( -name \*.gz -o -name \*.tgz -o -name \*.tar -o -name \*.zip \)

Hier werden verschiedene Archiv-Typen in einem find-Durchgang gesucht.
Damit mehrere Extensions gefunden werden können, werden sie mit „-o“ (ODER) verknüpft und in einer runden Klammer (escaped und mit Leerzeichen nach/vor der Klammer) zusammengefasst. Statt dem Parameter „-name“ kann auch „-iname“ verwendet werden, der dann Groß- und Kleinschreibung abdeckt (zB -iname \.jpg)

Shell: Rekursiv Dateitypen ermitteln und zählen

Manchmal möchte man wissen, welche Dateitypen und wieviele davon in einem Ordner (mit Unterordnern) abgelegt sind.

Lösung:

find . -type f -name '*.*' | sed 's/.*\.//' | sort | uniq -c

Die Ausgabe sieht dann in etwa so aus:

32 doc
49 docx
3 gif
147 jpg
61 mp4
562 pdf
60 png

Sollen nur die unterschiedlichen Extensions ermittelt werden reicht:

find . -type f -name '*.*' | sed 's/.*\.//' | sort -u

Ausgabe:
doc
docx
gif

Wenn Endungen in Groß- und Kleinbuchstaben vorliegen (.PNG, .png) hilft ein Filter vor dem sort-Befehl ( tr ‚[A-Z]‘ ‚[a-z]‘ für lowercase):

find . -type f -name '*.*' | sed 's/.*\.//' | tr '[A-Z]' '[a-z]' | sort -u

Postgres: Alter table SET WITHOUT OIDS für alle Datenbanken und Tabellen

Spätestens bei Upgrade auf die Version 12 gibt es Probleme mit den OIDS in Postgresql.

Dieses seit 2005 als „deprecated“ gekennzeichnete Feature wird ab Version 12 nicht mehr unterstützt und führt zu Fehlern (vorher: Warnungen).

Wenn man sich sicher ist, dass OIDs in Datentabellen nicht mehr gebraucht werden, dann hilft ein kleines Script, daß die Arbeit ohne großen Aufwand übernimmt.

https://pastebin.com/3JZLM5YT

Hier werden erst alle Datenbanken aus der pg_database-Tabelle (DB: postgres) ausgelesen und dann über jede Datenbank die Tabellen iteriert, um die OIDS abzustellen.

Aufruf des Scriptes als User „postgres“:

sudo su postgres

Shell: Lokaler Webserver ohne Apache2/nginx mit Python, PHP oder node js

manchmal soll auf die Schnelle eine HTML- oder Javascript-Datei getestet werden, ohne das ein Webserver im System installiert ist (zB Apache2 oder nginx). Abhilfe können hier Python, PHP oder node js als installierte Skript-Sprachen bieten.

PHP (muss installiert sein):
In den Ordner wechseln, in dem die ausführbaren Datein liegen (zB index.php oder index.html). Hier wird der eingebaute Server (-S, grosses „s“) für Port 8000 aufgerufen.

php -S localhost:8000

Python (muss installiert sein, Annahme: Python3):
In den Ordner wechseln, ind em die ausführbaren Datein liegen (zB main.py oder index.html).

python -m http.server 8000 --bind 127.0.0.1

Python ruft hier das http.server Modul auf, verbindet es mit Port 8000 und bindet es an die lokale IP 127.0.0.1 (sonst wären auch Zugriffe mit anderen IP’s möglich)

node js (muss installiert sein):

npm install -g http-server
http-server

Npm ist der Paket-Amanager von node js und wird mit diesem installiert. Die Zeile „npm install ..“ muss natürlich nur beim ersten Mal aufgerufen werden, um das http-server Paket zu installieren. Danach wird in den ordenr mit den auszuführenden Dateien gewechselt und „http-server“ aufgerufen.