Hallo, Gast |
Du musst dich registrieren bevor du auf unserer Seite Beiträge schreiben kannst.
|
Foren-Statistiken |
» Mitglieder: 1
» Neuestes Mitglied: Joopi
» Foren-Themen: 488
» Foren-Beiträge: 668
Komplettstatistiken
|
Benutzer Online |
Momentan sind 14 Benutzer online » 0 Mitglieder » 7 Gäste AhrefsBot, Bytespider, Crawl, DotBot, Google, MJ12bot, bot
|
|
|
Shell Verzeichnistiefe |
Geschrieben von: Joopi - 06-01-2023, 10:26 - Forum: Programmieren
- Keine Antworten
|
|
Für meine weiteren Arbeiten im AMC oder im freien Mediencenter ist es wichtig zu wissen, welche Verzeichnistiefe vorliegt. Bei der Suche nach einem entsprechenden Befehl habe ich auch die Möglichkeit gefunden, alle Unterordner zu zählen. Das kann ggfs. hilfreich sein. Wichtig war mir aber die Tiefe.
Mit folgendem Befehl kann die Anzahl der Ordner ermittelt werden, wobei der Startordner, hier ist es ./test, mitgezählt wird:
Code: find ./test -type d | wc -l
Die Anzahl der Ordner ist aber nicht ausreichend, um die Tiefe der Struktur zu erkennen. Dafür ist folgender Befehl geeignet, wobei der Startordner, hier ist es ./test, **nicht** mitgezählt wird:
Code: find ./test -type d -printf '%d\n' | sort -rn | head -1
Um alle Dateien für eine Umbenennung oder Konvertierung zu erreichen, ist die Kenntnis über die Ordnertiefe sehr wichtig.
|
|
|
Zahlen formatiert ausgeben |
Geschrieben von: Joopi - 06-01-2023, 10:24 - Forum: Programmieren
- Keine Antworten
|
|
Um das Ergebnis einer SQLite3-Abfrage, wenn es sich um Zahlen handelt, formatiert auszugeben, kann folgende Schreibweise genutzt werden:
Code: select printf("%,d", sum(datsize)) from bildinfo;
Das Ergebnis sieht dann wie folgt aus:
Zitat:253,921,248,502
|
|
|
Tabelle leeren |
Geschrieben von: Joopi - 06-01-2023, 10:23 - Forum: Programmieren
- Keine Antworten
|
|
Um eine Tabelle komplett zu leeren, ist folgender Befehl erforderlich:
Code: DELETE FROM tabelle;
Dieser Befehl ist gleichzusetzen mit truncate aus MySQL.
|
|
|
neue Datenbank anlegen / öffnen |
Geschrieben von: Joopi - 06-01-2023, 10:22 - Forum: Programmieren
- Keine Antworten
|
|
Um eine neue Datenbank anzulegen, ist folgendes auf der Konsole einzugeben:
Code: sqlite3 datenbank.db
Sollte die Datenbank (Datei) bereits existieren, wird sie geöffnet.
|
|
|
Feldnamen anzeigen |
Geschrieben von: Joopi - 06-01-2023, 10:20 - Forum: Programmieren
- Keine Antworten
|
|
Um in der Konsole bei einem SELECT-Statement die Feldnamen als Überschriften zu sehen, ist vorher folgendes einzugeben:
Damit werden die Feldnamen angezeigt. Mit *off* wird die Anzeige wieder ausgeschaltet.
|
|
|
chmod - Dateiberechtigung feststellen |
Geschrieben von: Joopi - 06-01-2023, 10:14 - Forum: Programmieren
- Keine Antworten
|
|
Es macht schonmal Sinn herauszufinden, welche Dateiberechtigungen vorliegen. Mit dem LS-Befehl lassen sich die momentanen Berechigungen anzeigen:
Code: user@rechner:/temp# ls -l playliste.txt -rw-r–r– 1 user user 217 Mai 16 23:31 playliste.txt
Diese Lesart ist etwas problematisch und (immer noch) nicht in meinem tagtäglichen Fokus. Um ggfs. andere Berechtigungen zu vergeben, macht es Sinn die Zahlen-Werte zu nutzen (644 oder 755 oder 777 oder oder).
Mit dem folgenden Befehl lässt sich dieser Zahlenwert feststellen:
Code: stat -c %a playliste.txt
Das Ergebnis ist:
Zitat:644
|
|
|
date - die Ausgabe des Datums |
Geschrieben von: Joopi - 06-01-2023, 10:13 - Forum: Programmieren
- Keine Antworten
|
|
Da ich nicht jeden Tag wie ein Administrator auf der Konsole alle möglichen Dinge zu erledigen habe, entfallen mir mit der Zeit sehr viele gute und nützliche Befehle. Heute habe ich nach einer Möglichkeit gesucht, um ein Datum incl. Uhrzeit in einer für mich passenden Form darstellen zu können. Als ich dann die Lösung hatte, war es wieder einfach.
Auf der Konsole kann man ein Datum in der Syntax **yyyy-mm-dd hh:mms** wie folgt erzeugen und ausgeben (das aktuelle Datum ist hier gemeint).
Code: echo $(date '+%Y-%m-%d %H:%M:%S')
Die Ausgabe ist dann wie folgt gewesen.
Zitat:2022-02-12 17:34:46
Das ist die Schreibweise, mit der ein einer MySQL-Datenbank die Datumsangaben mit *datetime* und *current_timestamp* eingetragen werden. Damit musste ich umgehen und mir in einem Script das Datum in der gleichen Weise erstellen, um es vergleichbar zu machen.
Es hat hervorragend funktioniert.
|
|
|
Debian - installierte Pakete ermitteln |
Geschrieben von: Joopi - 06-01-2023, 10:12 - Forum: Programmieren
- Keine Antworten
|
|
Auf meinem Desktop-PC habe ich jede Menge Programme installiert, die teilweise nicht im Repository liegen, sondern von mir manuell durch deb-Pakete installiert wurden.
Zu wissen, welche Pakete installiert sind, ist immer dann hilfreich, wenn man vielleicht einen neuen Rechner bekommt oder eine neue Linux-Distribution installieren will, um eben diese Programme nachinstallieren zu können.
Es gibt verschiedene Möglichkeiten, um festzustellen, welche Programme installiert sind.
Eine Pakteliste lässt sich wie folgt aufrufen:
Code: dpkg -l > installierte_programme_20200511.txt
Aus dieser Datei lässt sich leider nicht so ohne weiteres entnehmen, welches Programm ich manuell installiert hatte, weil es im Standard nicht enthalten ist.
Eine ganz gute Möglichkeit bietet der folgende Befehl:
Hier scheinen dann tatsächlich die mir bekannten und nachinstallierten Programme angezeigt zuu werden. Allerdings werden auch die wegen der Abhängigkeiten mitinstallierten Programme und Dateien aufgelistet. Das ist aber besser als nichts.
Möchte man nach einer Neuinstallation die gleiche Konfiguration haben wie vorher, so kann man sich mit folgendem Befehl eine Paketliste erstellen lassen:
Code: dpkg --get-selections
…die dann mit folgendem Befehl im neuen System wiederhergestellt werden kann:
Code: dpkg --set-selections
Dieser Befehl ist natürlich mit Vorsicht zu genießen.
Alle Listen müssen, um sie dauerhaft zu haben, in eine Datei umgeleitet werden.
In einer virtuellen Maschine lässt sich das Umgehen mit den Befehlen durchaus testen. Interessant wird es dann, wenn die Linuxversionen nicht mehr übereinstimmen. Debian 10 als Quelle, Debian 11 als Ziel. Problematisch wird es dann, wenn Pakete nicht mehr im Ziel enthalten sind. Eigentlich sollte *dpkg* diese Umstand abfangen und mit einer Fehlermeldung dokumentieren. Ein Absturz oder ähnliches sollte nicht passieren.
|
|
|
mail - auf der Konsole intern versenden |
Geschrieben von: Joopi - 06-01-2023, 10:09 - Forum: Programmieren
- Keine Antworten
|
|
Auf der Konsole lässt sich eine Mail versehen, z.B. für einen internen Nutzern. Der Befehl sieht wie folgt aus:
Code: echo "Das ist der Mailtext" | mail -s 'Betreff' user@localhost
Das macht im Grunde genommen kaum Sinn, aber diesen Befehl kann man auch in einem Script einsetzen, welches z.B. Daten, die während der Scriptausführung erzeugt werden, an einen User gesendet werden. Es kann auch eine einfache Erledigungsmail sein. Oder sonst was.
Es ist auch möglich, die Mailbestandteile in eine Datei zu setzen, die dann entsprechend ausgewertet wird.
|
|
|
|