Distribution |
Hinweis
|
Sprachauswahl |
Host
User / Passwort | SSH Zugang / Secure FTP |
---|---|---|---|---|
ArchLinux |
- nur Terminal - Ladezeit ~30 Sek. - kein deutsches Tastaturlayout |
archiso root / (keins) |
An / Ja Passwort vergeben z.B. 1 echo "root:1"|chpasswd |
|
BookwormPup64 |
||||
Debian 12xfce.iso ~2,3 GB |
- Eingesteckte Laufwerke werden eigenständig erkannt - Fehlende Pakete |
Sprachauswahl zu Beginn Starten mit: Debian Live with Localisation Support Einstellungen > I-Bus-Einstellungen > Eingabemethode (Register) Englisch entfernen! |
debian user / live |
sudo su apt update apt install openssh-server -y systemctl enable ssh systemctl start ssh |
Debian 11
|
- Ladezeit ~43 Sek. | |||
Debian Standard ohne X11 |
- kein deutsches Tastaturlayout - schnell Ladezeit ~15 Sek. |
|||
Desinfec't(Ubuntu) |
- Von Heise Medien |
- Deutsch voreingestellt | Aus / Nein Per Teamviewer |
|
Fedora | - Ladezeit ~36 Sek. - kein deutsches Tastaturlayout |
Settings > System > Secure Shell |
Settings > System >Users Add Enterprise Login Live System User |
|
Gentoo |
- Ladezeit ~24 Sek. | |||
GParted Live(Debian) ~390 MB |
- Kein automatisches Mounten
|
Sprachauswahl zu Beginn sudo su dpkg-reconfigure locales markieren mit Leerzeichen und als Standard festlegen |
debian user / live |
Nicht aktiv Desktop > Network config starten -> dhcp -> Enter -> Enter Per Terminal rm /etc/hosts.deny |
Koppix 9.1 DVD(Debian) |
- Eingesteckte Laufwerke werden eigenständig erkannt |
- Deutsch voreingestellt | microknoppix knoppix / (keins) |
Nicht gestartetsudo /etc/init.d/ssh start |
Manjaro | - Ladezeit ~30 Sek. |
Settings > Manjora Settings > User Accounts |
sudo su pacman -Sy openssh --noconfirm systemctl enable --now sshd |
|
Mint(Ubuntu) |
|
Settings > Language Settings > Settings > Keyboard Tab: Layouts ggf. Relogin |
mint Live session user / (keins) System / Adminisrtation > Users und Groups >
|
sudo su |
MX (Debian) |
mx1 root /root |
|||
NixOSTerminal Desktop |
- kein deutsches Tastaturlayout - Ladezeit ~18 Sek. - Desktop wird schnell gesperrt. Ohne Passwort -> kein Relogin! |
nixos root / (keins) |
Aus / ja (nach sshd start)systemctl start sshd passwd |
|
openSUSE tumbleweed |
root / linux |
|||
Parted Magic(Slackware) |
- Kostenpflichtig - Läuft im RAM - Eingesteckte Laufwerke werden eigenständig erkannt |
Per Programm: Desktop: Keyboard Layout > quertz > de >OK,OK,OK, Yes |
partedmagic root /partedmagic |
An / Ja |
Porteus |
root / toor |
|||
Ubuntu
|
- Eingesteckte Laufwerke werden eigenständig erkannt |
Sprachauswahl zu Beginn im Desktop de eintippen Desktop (rechte Maustaste) > Einstellungen > Region und Sprache |
ubuntu ubuntu / (keins) sudo su echo "ubuntu:hallo12!"|chpwd |
|
NixOS~1,4 GB |
- Ladezeit ~60 Sek. | Settings > Systemsettings Input Devices > Keyboard > Tab: Layouts + Add > ger (German) Englisch entfernen! |
nixos nixos / (keins) Passwort ändern: |
Nicht aktivsudo nix-env -i openssh |
String
Anzahl Zeichen | Ergebnis | VBA | ||
string="Ein Text" |
||||
echo ${#string} |
8 | len(str) | ||
Zeichen ersetzen | Ergebnis | VBA | Anmerkung | ||
string="Guten Morgen zusammen" string1="Morgen" |
|||||
string2="Abend" |
|||||
echo "${string/$string1/$string2}" |
Guten Abend zusammen | replalce() | Wird nur einmal ersetzt | ||
Zeichen mehrfach ersetzen | |||||
|
|||||
string='Der Geheimcode ist 12345' echo "${string//[0-9]/X}" |
Der Geheimcode ist XXXXX |
Teil einer Zeichenkette | Ergebnis | VBA | ||||
string="1234567890" |
||||||
${string:Start:Länge} |
Start beginnt mit 0. Angabe nicht notwendig | |||||
echo ${string::3} |
123 | Die ersten 3 Zeichen | left(str,3) | |||
echo ${string:2} |
34567890 | ab dem 3. Zeichen | ||||
echo ${string:2:1} |
3 | ab dem 3. Zeichen: nur 1 Zeichen | mid(str,3,1) | |||
${string:Start: -Länge} |
Abzüglich x Zeichen von rechts | |||||
echo ${string:0: -3} |
1234567 | |||||
echo ${string:1: -3} |
234567 | |||||
${string:: -4]} ${string:$[${#string}-4]} |
7890 | letzten 4 Zeichen | right(str,4) | |||
string="c:/Order eins/gesuchter Name.txt" |
||||||
echo ${string%/*} |
c:/Order eins | Pfad aus Datei-Namen (kompletter Pfad) | ||||
path=${string%/*} |
Dateinamen aus kompletten Pfad auslesen | |||||
|
||||||
echo $filename |
gesuchter Name.txt | |||||
string=" ja am Anfang und Ende sind Leerzeichen " |
||||||
echo $(echo $string|xargs) |
ja am Anfang und Ende sind Leerzeichen | Leerzeichen am Anfang und Ende abschneiden | trim(str) | |||
Zeichenposition | ||||||
string=" |
name@www |
|||||
echo $[${#teilstring1}+1] echo $[${#teilstring2}+1] |
9 13 |
InStr() | ||||
Enthält Zeichenkette | ||||||
string=" |
||||||
such="@" |
||||||
if [ -z "${string##*$such*}" ]; then echo "Suchstring '$such' ist enthalten." fi |
||||||
Umwandeln in Kleinbuchstaben | Ergebnis | VBA | ||||
string="EIN PAAR WORTE" |
||||||
echo "${string,,}" |
ein paar worte | LCase(str) | ||||
echo "${string,}" |
eIN PAAR WORTE | 1. Buchstabe klein | ||||
echo "${string,,[AEIUO]}" |
eiN PaaR WoRTe | |||||
declare -l string |
ein paar worte | Bestimme Buchstaben | ||||
Umwandeln in Großbuchstaben | ||||||
string="ein paar worte" |
||||||
echo "${string^}" |
Ein paar worte | |||||
echo "${string^^}" |
EIN PAAR WORTE | |||||
|
EIn pAAr wOrtE | Goßschreiben per RegEx | UCase(str) | |||
string="Ein paar Worte" echo "${string~~}" |
EIN PAAR WORTE | Alle Buchstaben groß | ||||
echo "${string~}" |
Ein paar worte | 1. Buchstabe groß |
Pfad und Dateinamen aus komplettem Datei-Pfad auslesen
Ergebnis als echo | Ergebnis als echo | |||||
string="c:/tmp xc/gesuchter Name.txt" |
||||||
Pfad | ||||||
pfad=${string%/*} |
c:/tmp xc | pfad=${string%/*} |
||||
Position des letzen "/" Slashes | Position des letzen "/" Slashes +1 | |||||
pos=${#pfad} |
9 | pos2=$[${#pfad}+1] |
10 | |||
Dateiname | Dateiname | |||||
dateiname=${string:$[$pos+1]} |
gesuchter Name.txt | dateiname=${string:$pos2} |
gesuchter Name.txt | |||
Dateiname ohne Posistion (2 Schritte) | ||||||
dateiname=${string:$[${#pfad}+1]} |
gesuchter Name.txt |
Bytes umwandeln damit es verständlich für Menschen ist
Ergebnis | ||||
int=139356160 |
||||
|
133M | |||
echo "133M"|numfmt --from=iec numfmt --from=iec "133M" |
139356160 |
Array
arr=() |
Leeres Array erzeugen |
arr=(1 2 3) arr=(a "a b" c) |
Array erstellen |
${arr[2]} |
3. Element auswählen |
${arr[@]} |
Alle Elemente erhalten |
${!arr[@]} |
Array-Indizes erhalten |
${#arr[@]} |
Array Größe |
arr[0]=3 |
1. Element überschreiben |
arr+=(4) arr+=( "newElement1" "newElement2" ) |
Wert anhängen |
str=$(ls) |
ls Ausgabe output als String |
arr=( $(ls /dir) ) |
ls Ausgabe als array von Dateien |
${arr[@]:s:n} |
Anzahl n Elemente. Startet ab Index s |
Alle Elemente eines Array ausgebenfor t in ${array[@]}; do
echo $t
done
Alle Elemente eines Array über den Indexfor i in ${!array[@]}; do
echo ${array[$i]}
done
sting="${array[*]// /}" |
sting="$(echo ${array[*]})" |
Element aus Array löschen | ||||
array=(eins zwei drei) |
||||
echo ${#array[@]} |
3 | |||
Element zwei löschen | ||||
unset 'array[1]' |
||||
echo ${array[@]} |
ein drei | |||
echo ${#array[@]} |
2 | |||
Besteht der Namen aus zwei Zahlen und einem Trennzeichen kann das Array-Element darüber angesprochen werden.
declare -A arr | Deklarieren des Arays | |||
arr[0,0] ="erster_Wert" | ||||
arr[0,1] ="zweiter_Wert" | ||||
i=0 | ||||
j=1 | ||||
echo $arr[$i,$j] | zweiter_Wert |
Überprüfen
Ist Variable eine Zahl ? (Integer) | ||||
case ${var#[-+]} in *[!0-9]* | '') echo "Keine Zahl";; * ) echo "Zahl (Integer)";; esac |
Fall-Variante | |||
if [ -z "${var//[0-9]}" ]; then echo "Zahl (Integer)" else echo "Keine Zahl" fi |
Wenn-Dann Variante |
Rechnen mit Ganzahlen (integer) | ||||
Addition | Subtraktion | Muktipikation | Division | |
i=0 |
||||
i=$[$i+1] let i=${i}+1 |
i=$[$i-1] let i=${i}-1 |
i=$[$i*1] let i=${i}*1 |
i=$[$i/1] let i=${i}/1 |
|
Logische Ausdrücke
Zahlen (Integer) | |||
x=1 y=2 |
|||
[ $x -gt $y ] |
größer | ||
[ $x -ge $y ] |
größer gleich | ||
[ $x -eq $y ] |
gleich | ||
[ $x -ne $y ] |
ungleich | ||
[ $x -lt $y ] |
kleiner | ||
[ $x -le $y ] |
kleiner gleich | ||
a=hallo |
|||
[ $x -le $y -o $a = "hallo" ] [ $x -le $y ] || { $a = "hallo" ] |
oder | ||
[ $x -le $y -a $a = "hallo" ] [ $x -le $y ] && [ $a = "hallo" ] |
und |
Zeichenkette | |||
[ "$x" = "$y "] |
gleich | ||
[ "$x" != "$y" ] |
ungleich | ||
[ -z "$x" ] |
ist leer | ||
[ -n "$x" ] |
ist nicht leer |
Funktionen
Überprüfen ob die korrekte Anzahl an Parametern über geben wurde
# 2 Parameter erforderlichfunction test () {
if [ $# -ne 2 ]; then
echo "Hier sind mindestens 2 Argumente erforderlich"
echo "usage: $0 arg1 arg2 ... [arg_n]"
exit
else
echo "Erforderliche Anzahl Argumente erhalten"
fi
}
übergebene Parameter an Funktionfunction test2 () {
echo $1
echo $2
}
test2 "hallo" 7
Rüchgabe aus einer Funktion
Zahlenfunction zahl_zurueck () {
return 1
}
Zeichenfunction zeichenkette_zurueck () {
echo "hallo"
}
Ausgabe auf Terminalzahl_zurueck
Ausgabe in eine Variableinfo=$(zeichenkette_zurueck)
Rechnen
Ergebnis ist immer eine Ganzzahl (Integer). Es gelten die mathematischen Grundregeln (Klammer vor Punkt vor Strich).
Ergebnis | |||||||
x=100 | |||||||
Addition | y=$[$x+10] | y=$(($x+10)) | echo $y | 110 | |||
Subtraktion | z=$[$x-110] | z=$(($x-110)) | echo $z | -10 | |||
Mutiplikation | a=$[$x*-11] | z=$(($x*-11)) | echo $a | -1100 | |||
Division | b=$[10/9] | b=$((10/9)) | echo $b | 1 (Vorkommazahl) | |||
Mod | b=$[10/8] c=$[10/10] |
c=$((10/8)) c=$((10/10)) |
echo $b echo $c |
2 (Rest. 8 geht in 10 ein mal. Bleibt 2 übrig) 0 |
Funktionen
Ascii Zahlen aus Zeichenkette auslesen
read -p "Enter a string of characters: " input_string
echo "ASCII values of characters in the input string:"
for ((i = 0; i < ${#input_string}; i++)); do
character="${input_string:i:1}"
ascii_value=$(printf "%d" "'$character")
echo "$character: $ascii_value"
done
Für die Sicherung und Wiederherstellung von SSD / Festplatten-Abbildern gibt es einige Programme.
Linux bietet hier ein sehr einfaches Tool für das Terminal an.
dd (convert and copy a file)
Um etwas Übersicht bei der Auswahl von Quelle und Ziel zu erhalten, hilft dieses Script. Download
Das Script bietet 4 Möglichkeit dd zu nutzen:
1. Sicherung einer Festplatte in ein Image. Kann direkt gepackt werden.
2. Wiederherstellung aus einem Image. (Auch direkt aus gepackter Datei)
3. Direkte Kopie eines Datenträgers auf einen 2. Datenträger
4. Löschen / überschreiben eines Datenträgers
Je nach Anschluss-Typ und Datenträger dauert es schon etwas. Gepackt wird mit pigz. Es ist ein Kompromiss zwischen Komprimierungsgrad und Geschwindigkeit.
- Das Script kann via Startparameter angepasst werden.
- Dauerhafte Änderungen auch im Script möglich.
- Um Speicherplatz zu sparen, müssen nicht alle Partitionen gesichert werden. Es können aber nur Partitionen am Ende ausgelassen werden. Nach der Wiederherstellung muss noch per GParted die Partitionstabelle "von Hand" angepasst werden. (Die nicht gesicherten Partitionseinträge löschen)
Am Ende der Auswahl gibt es noch einmal eine Info, über das was durchgeführt wird.
Mögliche Linux live Distributionen welche von einem USB-Stick bzw. DVD gestartet werden können.
- Distributionen bei denen nichts nachinstalliert werden muss:
arch (Terminal), EndevourOS, Guardia Linux, InstantOS, Parted Magic, Rescuzilla - Netzwerk Sicherung per SSH und NFS erfordert nachzuinstallation
AlmaLinux, BookwormPup64, CentOS, Fedora, Gparted, Knoppix, Manjaro, openSUSE Leap - Bei vielen weiteren Distributionen muss pigz nachinstalliert werden.
Netzwerksicherung per SMB klappt bei fast allen. SSH und NFS muss meist nachinstalliert werden.
Alle Distributionen die apt, emerge, yum/|dnf, pacman und zypper als Paketmanager haben, erfolgt das Nachinstallieren während des Scriptablaufs. - Andere Paketmanager machen Probleme wie guix, pmod, slackpkg und snap.
Die Steuerbefehls-Zeichen für das Einfärben der Komanozeile ist hier kurz erklärt.
Die einzelnen Steuerzeichengruppen können kombiniert werden. Wenn also ein echo Befehl mit den Steuerzeichen aufgerufen wird kann die Ausgabe gesteuert werden.
Anmerkung: Wurde ein "Einfärben" gestarten muss am Ende auch ein "Entfärben" aufgerufen werden.
Folgender Befehl mit den Steuersequenzen fett, blau und dann wieder normal und default
echo -e "Guten \e[1m\e[34mMorgen\e[0m liebe Sorgen, seit ihr auch schon wieder da?"
würde dies anzeigen:
Guten Morgen liebe Sorgen, seit ihr auch schon wieder da?"
In einem Shell-Script kann das Ganze auch einer Variablen zugewiesen weden. Es macht jedoch eiinen Unterschied ob das Script per sh scriptname.sh oder ./scriptname.sh (Script muss ausführbar sein) aufgerufen wird. Mit einer if-Abfrage kann das abgefangen werden
if [ -z ${BASH_SOURCE} ]; then
blau=`echo "\e[1m\e[34m"`
normal=`echo "\e[0m"`
else
blau=`echo -e "\e[1m\e[34m"`
normal=`echo -en "\e[0m"`
fi
echo "Guten ${blau}Morgen${normal} liebe Sorgen, seit ihr auch schon wieder da?"
Hier die Syntax: \ Backlsash e mit [ eckiger Klammer auf gefolgt von einer 0 Zahl m schließt das Ganze ab.
Es können auch Angaben kombiniert werden z.B \e[4;36;47m
Steuerzeichen | ||||||
Buchstaben-Farbe | Hintergrundfarbe | |||||
Standard | (default) | \e[39m | \e[49m | |||
schwarz | (black) | \e[30m | \e[40m | |||
rot | (red) | \e[31m | \e[41m | |||
grün | (green) | \e[32m | \e[42m | |||
gelb | (orange) | \e[33m | \e[43m | |||
blau | (blue) | \e[34m | \e[44m | |||
lila | (purple) | \e[35m | \e[45m | |||
grün-blau | (aqua) | \e[36m | \e[46m | |||
grau | (gray) | \e[37m | \e[47m | |||
dunkelgrau | (darkgray) | \e[90m | \e[1;30m | \e[100m | ||
hellrot | (lightred) | \e[91m | \e[1;31m | \e[101m | ||
hellgrün | (lightgreen) | \e[92m | \e[1;32m | \e[102m | ||
hellgelb | (lightyellow) | \e[93m | \e[1;33m | \e[103m | ||
hellblau | (lightblue) | \e[94m | \e[1;34m | \e[104m | ||
helllila | (lightpurple) | \e[95m | \e[1;35m | \e[105m | ||
hell-blau | (lightaqua) | \e[96m | \e[1;36m | \e[106m | ||
weiß | (white) | \e[97m | \e[1;37m | \e[107m |
Buchstaben-Stil | Steuerzeichen | |
normal | (normal) | \e[0m |
heller (fett) | (bold) | \e[1m |
kursiv (gedimmt) | (dim) | \e[2m oder \e[3m |
unterstrich | (underline) | \e[4m |
Text u Hintergrund tauschen die Farbe |
(reverse) | \e[7m |
(ohne Wirkung) | ||
durchgestrichen | (strickthrough) | \e[9m |
blinken | (blink) | \e[5m oder \e[6m |
versteckt | (hidden) | \e[8m |
Alle Farbkombinationen als Bash Kommande
for x in {0..8}; do for i in {30..37}; do for a in {40..47}; do echo -ne "\e[$x;$i;$a""m\\\e[$x;$i;$a""m\e[0;37;40m "; done; echo; done; done; echo ""
Farb-Beispiele
Folgende Schritte im (Linux) Terminal ausführen.
sudo service mysql stop
sudo mysqld_safe --skip-grant-tables
sudo service mysql start
sudo mysql -u root
use mysql;
show tables;
describe user;
update user set authentication_string=password('1111') where user='root';
FLUSH PRIVILEGES;
Das 'neue' Passwort wäre dann -> 11111