Distribution
Hinweis
 - Live-Versionen
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 12
xfce.iso ~2,3 GB

 - Eingesteckte Laufwerke werden eigenständig erkannt

- Fehlende Pakete
   * curl  sudo apt install curl
   * gparted

 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
- Kein pigz (paralleles Packen) daher langsames packen!

- Deutsch voreingestellt   Aus / Nein
Per Teamviewer
Fedora  - Ladezeit ~36 Sek.
- kein deutsches Tastaturlayout

Settings > System > Secure Shell
enable
Authenticate

Settings > System >Users Add Enterprise Login

Live System User
Passwort anlegen

 
Gentoo

 - Ladezeit ~24 Sek.      
GParted Live
(Debian) ~390 MB

- Kein automatisches Mounten
sudo su
part=sdc1
mkdir /media/$part

mount /dev/$part /media/$part

 

Sprachauswahl zu Beginn
Blue Screen
 Select keymap from arch list >
   quertz > German > Standard > Prog.
 10 (German) > 0 X


sudo su
dpkg-reconfigure locales
Runterscrollen bis [*] de_DE.UTF-8
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
systemctl enable ssh
systemctl start ssh
Koppix 9.1 DVD

(Debian)
~4,4 GB

- Eingesteckte Laufwerke werden eigenständig erkannt
- Ventoy -> Boot im grub2 mode

 - Deutsch voreingestellt  microknoppix

 knoppix / (keins)

 
Nicht gestartet
sudo /etc/init.d/ssh start
sudo echo "knoppix:knoppix"|chpasswd
Manjaro  - Ladezeit ~30 Sek.  

Settings > Manjora Settings > User Accounts
Passwort: vergeben
Terminal:
user: manjora
passwort: manjora

sudo su
pacman -Sy openssh --noconfirm
systemctl enable --now sshd
Mint

(Ubuntu)
2,9 GB

 

 

 Settings > Language Settings >
  Language Support (Install) >
  Add.. > German, Germany > Install
  Language u. Region u.
  Time Format > anpassen

Settings > Keyboard Tab: Layouts
  Use systen defauts > aus
 + Add > ger (German)
Englisch entfernen!

ggf. Relogin

 mint


Live session user / (keins)


System / Adminisrtation > Users und Groups >
Add Users Type Administrator: user
Change password:

 

sudo su
apt install openssh-server -y
systemctl enable ssh
systemctl start ssh
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)
~1,7 GB

- 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
Server ~2, GB 
Desktop ~ 4,7 GB

- 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

sudo su
apt update
apt install openssh-server -y
systemctl enable ssh
systemctl start ssh

NixOS

~1,4 GB

  - Ladezeit ~60 Sek.  Settings > Systemsettings
  Input Devices > Keyboard >
   Tab: Layouts
 + Add > ger (German)
Englisch entfernen!

 nixos


nixos / (keins)


Passwort ändern:
sudo su
echo "nixos:nixos"|chpassword

 Nicht aktiv
sudo 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="Guten Morgen wenn nicht gar toller Morgen zusammen"
string1="Morgen"
string2="Abend"
echo "${string//$string1/$string2}"
         
 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    
filename=${string##*/}
           
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="Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein." such="."
teilstring1=${string%%$such*}
teilstring2=${string%$such*}
   

name@www
Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.
       
echo $[${#teilstring1}+1]    
echo $[${#teilstring2}+1]
  9
13
       InStr()
             
Enthält Zeichenkette            
string="Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein."            
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
string=$string; echo "$string"

   ein paar worte   Bestimme Buchstaben    
Umwandeln in Großbuchstaben            
string="ein paar worte"            
echo "${string^}"   Ein paar worte        
echo "${string^^}"   EIN PAAR WORTE        

echo "${string^^[aeiou]}"

   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        

echo $int|numfmt --to=iec
numfmt --to=iec $int

  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 ausgeben
for t in ${array[@]}; do
   echo $t 

done

 

Alle Elemente eines Array über den Index
for i in ${!array[@]}; do
  echo ${array[$i]}

done

 
Array to String
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    
         

Mehrdimensionale ArraysAssoziative Arrays
In der Bash gibt es eigentlich keine mehrdimensionale Arrays. Durch ein assoziatives Array (Namen) lässt es sich doch realisieren.
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 erforderlich
function 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 Funktion
function test2 () {
  echo $1
  echo $2               
}

test2 "hallo" 7

Rüchgabe aus einer Funktion
Zahlen
function zahl_zurueck () {
    return 1
}

Zeichen
function zeichenkette_zurueck () {
    echo "hallo"
}

Ausgabe auf Terminal
zahl_zurueck
Ausgabe in eine Variable
info=$(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

dd.sh

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.

  1. Distributionen bei denen nichts nachinstalliert werden muss:
    arch (Terminal), EndevourOS, Guardia Linux, InstantOS, Parted Magic, Rescuzilla
  2. Netzwerk Sicherung per SSH und NFS erfordert nachzuinstallation
    AlmaLinux, BookwormPup64, CentOS, Fedora, Gparted, Knoppix, Manjaro, openSUSE Leap
  3. 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.
  4. 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

bash color

Folgende Schritte im (Linux) Terminal ausführen.

  1. sudo service mysql stop
  2. sudo mysqld_safe --skip-grant-tables
  3. sudo service mysql start
  4. sudo mysql -u root
  5. use mysql;
  6. show tables;
  7. describe user;
  8. update user set authentication_string=password('1111') where user='root';
  9. FLUSH PRIVILEGES;

Das 'neue' Passwort wäre dann -> 11111