Skip to content

Update deines Scripts #5

@henosch

Description

@henosch

#!/bin/bash

De-Gender Script (v3.0) – Recovery Mode Edition

Endlich wieder normales Deutsch für macOS!

Dieses Skript ist ausschließlich für den Terminal im macOS Recovery Modus gedacht.

Version 3.0 Änderungen

SIP Abfrage mit Ausführung hinzugefügt

Automatisch wird der Festplatten Name ermittelt

scan.sh Abfrage hinzugefügt

echo ""
echo "#######################################################"
echo "### Endlich wieder ein genderfreies Betriebssystem! ###"
echo "#######################################################"
echo ""

Sicherstellen, dass scan.sh vorher lief

echo "📦 Dieses Skript erfordert, dass 'scan.sh' im Live-System ausgeführt wurde, um 'catalog.db' aktuell zu halten."
read -rp "❓ Wurde 'scan.sh' bereits ausgeführt? (ja/nein): " answer
answer=$(echo "$answer" | tr '[:upper:]' '[:lower:]')
if [[ "$answer" != "ja" && "$answer" != "j" ]]; then
echo "⛔ Bitte führe 'scan.sh' zuerst aus."
exit 1
fi

Sicherstellen, dass wir im Recovery-Modus sind

if [ -f /usr/sbin/system_profiler ]; then
echo -e "
🚫 Dieses Skript darf nur im Recovery-Modus ausgeführt werden!"
exit 1
fi

macOS Version prüfen

sys_version=$(sw_vers | grep ProductVersion | sed -E 's/[^0-9]([0-9]+)./\1/')
if [ "$sys_version" -lt 13 ]; then
echo -e "
🚫 Diese macOS Version ($sys_version.x) wird nicht unterstützt."
exit 1
fi

Script-Pfad und Datei-Existenz prüfen

script_path="$(dirname "$(realpath "$0")")"
if [ ! -f "$script_path/catalog.db" ]; then
echo "⛔ Datei 'catalog.db' fehlt im Skriptverzeichnis."
exit 1
fi

echo "🔐 Dieses Script erfordert angepassten SIP-Status:"
echo "- Filesystem Protection muss deaktiviert sein"
echo "- Authenticated Root muss deaktiviert sein"

read -rp "❓ Hast du 'csrutil enable --without fs' und 'csrutil authenticated-root disable' bereits ausgeführt? (ja/nein): " sip_answer
sip_answer_lower=$(echo "$sip_answer" | tr '[:upper:]' '[:lower:]')

if [[ "$sip_answer_lower" != "ja" && "$sip_answer_lower" != "j" ]]; then
echo "⚠️ Konfiguration wird jetzt durchgeführt..."

echo "➡️ Führe: csrutil enable --without fs"
csrutil enable --without fs

echo "➡️ Führe: csrutil authenticated-root disable"
csrutil authenticated-root disable

echo "✅ Änderungen vorgenommen. Bitte starte das System neu und führe das Script erneut aus."
exit 0

else
echo "✅ SIP-Anpassung bestätigt. Fahre mit dem Script fort..."
fi

Volume bestimmen

echo "📁 Ermittle System-Volume..."
sys_part=$(diskutil list |grep "APFS Volume" |sed 's/.*APFS\ Volume\ //g' |grep -v "VM" |grep -v "Recovery" |grep -v "Preboot" |grep -v "macOS Base System" |grep -v "- Data" |grep -v "Data" |awk '{print $1,$2}')

if [ -z "$sys_part" ]; then
echo "⚠️ Macintosh HD nicht gefunden. Liste möglicher Volumes:"
diskutil list |grep "APFS Volume" |sed 's/.*APFS\ Volume\ //g' |grep -v "VM" |grep -v "Recovery" |grep -v "Preboot" |grep -v "macOS Base System" |grep -v "- Data"
read -rp echo -e "\nBitte wähle die System Festplatte aus. '/Volumes/' musst Du nicht mit eintippen, bloß den Volumenamen Z.B 'macOS'\n" sys_part
fi

if [ ! -d /Volumes/"$sys_part" ]; then
echo "⛔ Volume /Volumes/$sys_part nicht gefunden!"
exit 1
fi

mount -uw /Volumes/"$sys_part"

if [ ! -w /Volumes/"$sys_part" ]; then
echo "⛔ Konnte Volume nicht beschreibbar mounten. Prüfe SIP-Status!"
exit 1
fi

Bearbeiten

echo "⚙️ Starte Verarbeitung der Dateien..."
export LC_TYPE=C
export LANG=C

cd /Volumes/"$sys_part"

echo -e "\nBearbeite Dateien ..."

input="$script_path/catalog.db"
count=$( wc -l "$input" | sed 's/\ a.*//g' |xargs )
counter=1

if [ ! -f usr/share/degenderizer_brain.db ]; then
touch usr/share/degenderizer_brain.db
chmod 777 usr/share/degenderizer_brain.db
else
chmod 777 usr/share/degenderizer_brain.db
fi

while IFS= read -r line
do

line=$( echo "$line" | sed 's/^///' )

if [ -f "$line" ]; then

hash_value=$( md5 "$line" | sed 's/.*=//g' | xargs )
binary="0"

if ! grep -x "$line""=""$hash_value" usr/share/degenderizer_brain.db >/dev/null 2>&1; then

if [[ "$line" = *".loctable" ]] || [[ "$line" = *".strings" ]]; then
binary="1"
plutil -convert xml1 "$line" >/dev/null 2>&1
fi

sed -ib
-e 's/:INNEN//g'
-e 's/:IN//g'
-e 's/:innen//g'
-e 's/:in//g'
-e 's/:in|/|/g'
-e 's/:r|/r|/g'
-e 's/Aktuelle:r/Aktueller/g'
-e 's/aktuelle:n/aktuellen/g'
-e 's/Aktuelle:n/Aktuellen/g'
-e 's/ältere:r/älterer/g'
-e 's/ANDERE:R/ANDERER/g'
-e 's/angegebene:n/angegebenen/g'
-e 's/ausgewählte:r/ausgewählter/g'
-e 's/Beliebige:r/Beliebiger/g'
-e 's/Benutzer:in/Benutzer/g'
-e 's/Dein:e/Dein/g'
-e 's/dein:e/dein/g'
-e 's/deinem:deiner/deinem/g'
-e 's/deine:n/deinen/g'
-e 's/Delegierte:r/Delegierter/g'
-e 's/DEM:DER/DEM/g'
-e 's/dem:der/dem/g'
-e 's/den:die/den/g'
-e 's/Der:die/Der/g'
-e 's/Der:Die/Der/g'
-e 's/der:die/der/g'
-e 's/Der:die/Der/g'
-e 's/des:der/des/g'
-e 's/desselben:derselben/desselben/g'
-e 's/dessen:deren/dessen/g'
-e 's/diesem:dieser/diesem/g'
-e 's/Diese:n/Diesen/g'
-e 's/diese:n/diesen/g'
-e 's/Diese:r/Dieser/g'
-e 's/diese:r/dieser/g'
-e 's/dieses:dieser/dieses/g'
-e 's/ehemalige:r/ehemaliger/g'
-e 's/Ein:e/Ein/g'
-e 's/ein:e/ein/g'
-e 's/eine:n/einen/g'
-e 's/eines:einer/eines/g'
-e 's/einem:einer/einem/g'
-e 's/Eigentümer:in/Eigentümer/g'
-e 's/Empfohlene:r/Empfohlener/g'
-e 's/Entfernte:r/Entfernter/g'
-e 's/Erwachsene:r/Erwachsener/g'
-e 's/Erziehungsberechtigte:r/Erziehungsberechtigter/g'
-e 's/Erziehungsberechtigte:n/Erziehungsberechtigten/g'
-e 's/Gefangene:r/Gefangener/g'
-e 's/Gleiche:r/Gleicher/g'
-e 's/Hochgeladene:n/Hochgeladenen/g'
-e 's/jede:n/jeden/g'
-e 's/Jede:r/Jeder/g'
-e 's/jede:r/jeder/g'
-e 's/Jüngere:r/Jüngerer/g'
-e 's/Nächste:r/Nächster/g'
-e 's/NEUE:R/NEUER/g'
-e 's/Neue:r/Neuer/g'
-e 's/Selbe:r/Selber/g'
-e 's/Studierende:r/Studierender/g'
-e 's/Teilnehmende:r/Teilnehmender/g'
-e 's/Unbekanntem:unbekannter/Unbekanntem/g'
-e 's/Unbekannte:r/Unbekannter/g'
-e 's/Unterrichtende:r/Unterrichtender/g'
-e 's/Verwaltete:r/Verwalteter/g'
-e 's/vom:von/vom/g'
-e 's/Vorgesetzte:r/Vorgesetzter/g'
-e 's/Zahlungspflichtige:r/Zahlungspflichtiger/g'
"$line" >/dev/null 2>&1

echo -ne " $counter von $count\r"
((counter++))

rm "$line"b >/dev/null 2>&1

if [[ "$binary" = "1" ]]; then
plutil -convert binary1 "$line" >/dev/null 2>&1
fi

hash_value=$( md5 "$line" | sed 's/.*=//g' | xargs )

echo "$line""=""$hash_value" >> usr/share/degenderizer_brain.db

else
echo -ne " $counter von $count war bereits gepatcht und wurde übersprungen\n"
((counter++))
fi
fi

done < "$input"

chmod 444 usr/share/degenderizer_brain.db

rm Users/.localized >/dev/null 2>&1

Snapshot erstellen

echo -e "
📸 Erstelle Snapshot..."
if bless --mount /Volumes/"$sys_part" --bootefi --create-snapshot; then
echo "✅ Änderungen wurden erfolgreich manifestiert!"
echo "🔁 Starte den Mac neu mit: reboot"
else
echo "⚠️ Fehler beim Erstellen des Snapshots. Starte am besten den Rechner neu und versuche es erneut."
fi

degenderize.txt

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions