Beiträge von maik3531 im Thema „bash snippet“
-
-
Bin gerade wieder über etwas interessantes gestoßen und zwar über "lf" für "last file". Beim Arbeiten in der Konsole möchte man oft etwas mit der zuletzt modifizierten Datei machen...
Shell-Hacks für Bash und Fish (Teil 1)Unser Gastautor stellt ein kleines Tool zum effizienten Arbeiten in der Konsole vor.gnulinux.chPS: Auch die Kommentare unter den Artikel beachten.
-
Also um das ganze mal zu erläutern: Bei folgenden Befehl wird ein von Euch eingegebener Text (im Fall vom Video im Anhang „Guten Morgen“) in Morsecode umgewandelt und an die LEDs weitergeleitet. Mit cat max_brightness kann man erfahren wie viel Stufen die LEDs ausgeben können. In den meisten Fällen 0 ist aus 1 ist an. Bei Tastaturbeleuchtung oder farbigen LEDs könne aber auch mehr Stufen vorhanden sein.
Codeled="/sys/class/leds/input4::capslock/brightness"; echo "0" | sudo tee "$led"; while true; do read -p "Enter Messages: " message; morse_code=$(echo -n "$message" | morsegen -); echo "$morse_code" | sed 's/\(.\)/\1 /g' | while read -n 1 symbol; do echo -n "$symbol"; case "$symbol" in "." ) echo "1" | sudo tee "$led"; sleep 0.2 ;; "-" ) echo "1" | sudo tee "$led"; sleep 0.4 ;; " " ) echo "0" | sudo tee "$led"; sleep 1 ;; esac; echo "0" | sudo tee "$led"; sleep 0.2; done; echo; echo "1" | sudo tee "$led"; done
Anstelle von input4::capslock konnte bei Euch auch z.B. tpacpi::lid_logo_dot oder so sein einfach mal
eingeben und schauen was es bei euch für LEDs gibt Im Beispiel im Anhang habe ich dell::kbd_backlight verwendet.
-
Hier noch ein Befehl der aus den gewünschten Dateien alle Leerzeilen und mit # gekennzeichneten Zeilen entfernt. Habe hier als Beispiel gleich wieder die rhythmdb.txt genommen.
So etwas ist sinnvoll um z.B. Konfigurationsdateien auszulesen und nur gesetzte Werte zu erhalte.
-
Hallöchen ich hatte hier oben ein Script erstellt worüber ich die Radiosender in Rhythmbox geändert hatte was auch soweit gut funktionierte nur hat eben nicht jeder mein Geschmack was Radiosender angeht und ich habe mit Hilfe des Videos eine einfache Möglichkeit gefunden die Radiosender seinen wünschen anzupassen. Dazu die rhythmdb.xml in eine normale Text Datei umwandeln wo nur noch Radiosender-Name und eine Zeile darunter die URL stehen.
Die Text Datei seinen Wünschen nach anpassen und wieder in die xml umwandeln mit
Bash
Alles anzeigen#!/bin/bash # Erstelle die Anfangszeilen der XML-Datei echo '<?xml version="1.0" standalone="yes"?> <rhythmdb version="2.0">' # Lese die rhythmdb.text-Datei Zeile für Zeile while IFS= read -r line do if [[ "$line" != "" ]]; then if [[ "$line" == " " ]]; then # Wenn die Zeile nur Leerzeichen enthält, überspringe sie continue elif [[ "$line" == " http"* ]]; then # Wenn die Zeile mit "http" beginnt, handelt es sich um die Location (URL) location="$line" echo " <location>$location</location>" echo ' </entry>' else # Andernfalls handelt es sich um den Titel (Radiosender Name) title="$line" # Schreibe den Eintrag in die XML-Datei echo ' <entry type="iradio">' echo " <title>$title</title>" fi fi done < rhythmdb.txt # Schließe die XML-Datei echo '</rhythmdb>' sed -i -e 's/^ *<title> * / <title>/g' -e 's/^ *<location> * / <location>/g' rhythmdb.xml
BSP:
Zitat<?xml version="1.0" standalone="yes"?>
<rhythmdb version="2.0">
<entry type="iradio">
<title>SUNSHINE LIVE - Simulcast</title>
<location>http://stream.sunshine-live.de/live/mp3-192</location>
</entry>
<entry type="iradio">
<title>R.SA Live</title>
<location>http://streams.rsa-sachsen.de/rsa-live/mp3-192/mediaplayerrsa</location>
</entry>
<entry type="iradio">
<title>RADIO PSR Live</title>
<location>http://streams.radiopsr.de/psr-live/mp3-1…enlive/play.m3u</location>
</entry>
<entry type="iradio">
<title>ENERGY Sachsen</title>
<location>http://energyradio.de/sachsen</location>
</entry>
<entry type="iradio">
<title>Radio Fritz</title>
<location>http://fritz.de/livemp3_s</location>
</entry>
<entry type="iradio">
<title>Radio Lausitz - Wir lieben die Lausitz</title>
<location>https://hermes.bcs-systems.de/radio-lausitz_simulcast_192k_mp3</location>
</entry>
<entry type="iradio">
<title>MDR SPUTNIK</title>
<location>http://mdr-284330-0.cast.mdr.de/mdr/284330/0/mp3/high/stream.mp3</location>
</entry>
<entry type="iradio">
<title>MDR JUMP</title>
<location>http://mdr-284320-0.cast.mdr.de/mdr/284320/0/mp3/high/stream.mp3</location>
</entry>
<entry type="iradio">
<title>MDR SACHSEN - Das Sachsenradio</title>
<location>http://mdr-284280-0.cast.mdr.de/mdr/284280/0/mp3/high/stream.mp3</location>
</entry>
<entry type="iradio">
<title>TechnoBase.FM - 24h Techno, Dance, HandsUp and More</title>
<location>http://listen.technobase.fm/tunein-mp3</location>
</entry>
<entry type="iradio">
<title>Schlagerparadies</title>
<location>http://www.surfmusik.de/m3u/schlagerparadies,9490.m3u</location>
</entry>
</rhythmdb>wird zu
ZitatSUNSHINE LIVE - Simulcast
http://stream.sunshine-live.de/live/mp3-192
R.SA Live
http://streams.rsa-sachsen.de/rsa-live/mp3-192/mediaplayerrsa
RADIO PSR Live
http://streams.radiopsr.de/psr-live/mp3-1…enlive/play.m3u
ENERGY Sachsen
http://energyradio.de/sachsen
Radio Fritz
http://fritz.de/livemp3_s
Radio Lausitz - Wir lieben die Lausitz
https://hermes.bcs-systems.de/radio-lausitz_simulcast_192k_mp3
MDR SPUTNIK
http://mdr-284330-0.cast.mdr.de/mdr/284330/0/mp3/high/stream.mp3
MDR JUMP
http://mdr-284320-0.cast.mdr.de/mdr/284320/0/mp3/high/stream.mp3
MDR SACHSEN - Das Sachsenradio
http://mdr-284280-0.cast.mdr.de/mdr/284280/0/mp3/high/stream.mp3
TechnoBase.FM - 24h Techno, Dance, HandsUp and More
http://listen.technobase.fm/tunein-mp3
Schlagerparadies
http://www.surfmusik.de/m3u/schlagerparadies,9490.m3uund wieder zur xml nach ./scriptname.sh > rhythmdb.xml
LG.
-
Musste es leider in 2 Beiträge Packen da mehr als 100000 Zeichen.
-
Bash
Alles anzeigen#!/bin/bash # Tastenkombination "<Super>Escape" für gnome-system-monitor dconf write /org/cinnamon/desktop/keybindings/custom-list "['custom0']" dconf write /org/cinnamon/desktop/keybindings/custom-keybindings/custom0/command "'gnome-system-monitor'" dconf write /org/cinnamon/desktop/keybindings/custom-keybindings/custom0/name "'Systemmonitor'" dconf write /org/cinnamon/desktop/keybindings/custom-keybindings/custom0/binding "['<Super>Escape']" # Tastenkombination "<Super>F1" für Hilfe dconf write /org/cinnamon/desktop/keybindings/media-keys/help "['<Super>F1']" # Reihenfolge der benutzerdefinierten Tastenkombinationen aktualisieren dconf write /org/cinnamon/desktop/keybindings/custom-list "['__dummy__', 'custom0', 'custom1']" #reset #dconf reset -f /org/cinnamon/desktop/keybindings/ ###----------------------------------------------------------------------------------------------- # ## Die wichtigsten Tastenkombinationen im Überblick # # Screenshot / Bildschirmfoto # # Druck = Screen aufnehmen # Alt+Druck = aktives Fenster aufnehmen # Shift+Druck = Bereich wählen # # Alle Tastenkombinationen zusätzlich mit Strg erweitern und die entsprechenden Aufnahmen landen in der Zwischenablage. # # Schreibtisch anzeigen <Super>+D # Vollbild Alt Gr + F11 # Arbeitsflächen Übersicht Alt + F1 # Ausführdialog Alt + F2 # Versteckte Dateien anzeigen Strg + H # Terminal öffnen Strg + Alt - T # Persönlichen Ordner öffnen <Super> + E # Um weitere Programme/Ordner oder Teminals zu öffnen die Strg Taste gedrückt halten und auf den Programmstarter mit der linken Maustaste klicken
Bash
Alles anzeigen#!/bin/bash # Suche nach dem Fingerabdruckscanner in der lsusb-Ausgabe und extrahiere den iProduct-Wert fingerprints=$(lsusb -v 2>/dev/null | grep -i 'iProduct') # Filtere den Fingerabdruckscanner heraus und entferne "iProduct" aus der Zeile filtered_fingerprints=$(echo "$fingerprints" | grep -i 'Fingerprint' | sed 's/iProduct *//') # Überprüfen, ob ein Fingerabdruckscanner gefunden wurde if [ -n "$filtered_fingerprints" ]; then echo "Ein Fingerabdruckscanner wurde erkannt:" echo "$filtered_fingerprints" ### Install Fingerprint Manager else echo "Kein Fingerabdruckscanner wurde erkannt." fi
Bash
Alles anzeigen#!/bin/bash apt install variety # Überprüfe, ob der Ordner ~/.config/variety existiert, andernfalls erstelle ihn config_dir="$HOME/.config/variety" if [ ! -d "$config_dir" ]; then mkdir -p "$config_dir" fi # Erstelle die variety.conf-Datei mit dem angegebenen Inhalt, falls sie nicht existiert conf_file="$config_dir/variety.conf" if [ ! -f "$conf_file" ]; then echo "change_on_start = True change_enabled = False icon = None [sources] src1 = False|favorites|The Favorites folder src2 = False|fetched|The Fetched folder src3 = False|folder|/usr/share/backgrounds src4 = False|flickr|user:www.flickr.com/photos/peter-levi/;user_id:93647178@N00; src5 = False|apod|NASA's Astronomy Picture of the Day src6 = True|bing|Bing Photo of the Day src7 = False|earthview|Google Earth View Wallpapers src8 = False|unsplash|High-resolution photos from Unsplash.com" > "$conf_file" fi # Überprüfe, ob der Autostart-Ordner existiert, andernfalls erstelle ihn autostart_dir="$HOME/.config/autostart" if [ ! -d "$autostart_dir" ]; then mkdir -p "$autostart_dir" fi desktop_file="$autostart_dir/variety.desktop" # Überprüfe, ob die variety.desktop-Datei existiert, andernfalls erstelle sie if [ ! -f "$desktop_file" ]; then echo "[Desktop Entry] Name=Variety Comment=Variety Wallpaper Changer Categories=GNOME;GTK;Utility; Exec=/usr/bin/variety --profile $HOME/.config/variety/ MimeType=text/uri-list;x-scheme-handler/variety;x-scheme-handler/vrty; Icon=variety Terminal=false Type=Application StartupNotify=false Actions=Next;Previous;PauseResume;History;Preferences; Keywords=Wallpaper;Changer;Change;Download;Downloader;Variety; X-GNOME-Autostart-Delay=20 StartupWMClass=Variety" > "$desktop_file" fi # variety --profile ~/.config/variety/ # Redshift Autostart erstellen desktop_file1="$autostart_dir/redshift-gtk.desktop" # Überprüfe, ob die variety.desktop-Datei existiert, andernfalls erstelle sie if [ ! -f "$desktop_file1" ]; then echo "[Desktop Entry] [Desktop Entry] Version=1.0 Name=Redshift Name[de]=Redshift GenericName=Color temperature adjustment GenericName[de]=Farbtemperaturanpassung Comment=Color temperature adjustment tool Comment[de]=Farbtemperaturanpassungswerkzeug Exec=redshift-gtk Icon=redshift Terminal=false Type=Application Categories=Utility; Hidden=false X-GNOME-Autostart-enabled=true" > "$desktop_file1" fi
Bash
Alles anzeigen#!/bin/bash entryNames=("megaglest_editor.desktop" "display-im6.q16.desktop" "avahi-discover.desktop" "bssh.desktop" "bvnc.desktop" "gcr-prompter.desktop" "gcr-viewer.desktop" "mpv.desktop" "qv4l2.desktop" "qvidcap.desktop" "xfce4-mail-reader.desktop") path="/usr/share/applications/" counter=0 for entryName in "${entryNames[@]}" do entry_path="$path$entryName" # Check if the entry exists if test -f "$entry_path"; then # Check if the entry is hidden if ! grep -q "NoDisplay=true" "$entry_path"; then echo "NoDisplay=true" >> $entry_path echo "The file $entry_path is hidden." let counter++ fi fi done if [ $counter -eq 0 ]; then echo "No desktop menu entries found."; fi #sudo sed -i "s/NoDisplay=true/NoDisplay=false/g" /etc/xdg/autostart/*.desktop ### mit "dconf watch /" anpassungen herausfinden.. alternative "dconf dump / > alt" ### set mit org.xxx.xxx write mit org/xxx/xxx #Gnome Theme und Icons cd /usr/share/themes && ls , cd /usr/share/icons && ls #gsettings set org.gnome.desktop.interface gtk-theme 'Mint-Y-Dark-Aqua' #gsettings set org.gnome.desktop.interface icon-theme 'Mint-Y-Aqua' # Cinnamon GTK-Themen- und Icon-Themen-Einstellungen anpassen dconf write /org/cinnamon/desktop/interface/gtk-theme "'Mint-Y-Dark-Aqua'" dconf write /org/cinnamon/desktop/interface/icon-theme "'Mint-Y-Aqua'" dconf write /org/cinnamon/theme/name "'Mint-Y-Dark-Aqua'" # Rhythmbox-Einstellungen anpassen gsettings set org.gnome.rhythmbox show-album-art false gsettings set org.gnome.rhythmbox position "(335, 136)" gsettings set org.gnome.rhythmbox size "(1031, 560)" # Nemo-Einstellungen anpassen gsettings set org.nemo.plugins disabled-actions "['add-desklets.nemo_action', 'change-background.nemo_action']" gsettings set org.nemo.plugins disabled-extensions "['ChangeFolderColor+NemoPython']" gsettings set org.nemo.preferences enable-delete 'false' gsettings set org.nemo.preferences show-hidden-files 'false' gsettings set org.nemo.preferences.menu-config background-menu-show-hidden-files 'false' gsettings set org.nemo.preferences.menu-config desktop-menu-customize 'false' ## nicht nötig durch Variety gsettings set org.nemo.preferences.menu-config selection-menu-favorite 'false' gsettings set org.nemo.preferences.menu-config selection-menu-pin 'false' # Xed-Einstellungen anpassen gsettings set org.x.editor.preferences.editor display-line-numbers 'true' gsettings set org.x.editor.preferences.editor scheme 'cobalt' gsettings set org.x.editor.plugins active-plugins "['spell', 'filebrowser', 'textsize', 'sort', 'joinlines', 'time', 'open-uri-context-menu', 'modelines', 'docinfo']" ## systemctl reboot --firmware-setup <- ins Bios booten ## ### Firewall aktivieren sudo sed -i 's/ENABLED=no/ENABLED=yes/' /etc/ufw/ufw.conf
Da soll noch das tts Aktion Menü ne angepasste .bashrc usw. kommen. Mal schauen was sich daraus entwickelt
-
Ich hatte da mal was angefangen ist aber noch nicht fertig und bezieht sich nur auf LinuxMint 21.2 in der Cinnamon Version
Bash
Alles anzeigen#!/bin/bash ### Überprüfen, ob es sich um Linux Mint handelt # # if [ -f /etc/os-release ] && grep -q "Linux Mint" /etc/os-release; then # echo "Es handelt sich um Linux Mint" # fi # ### Überprüfen, ob die Version 21.2 ist # # mint_version=$(lsb_release -r --short) # if [ "$mint_version" == "21.2" ]; then # echo "Die Version ist 21.2" # fi # ### Überprüfen, ob die Desktop-Umgebung Cinnamon ist # # if pgrep -x "cinnamon" > /dev/null; then # echo "Die Desktop-Umgebung ist Cinnamon" # else # echo "Die Desktop-Umgebung ist nicht Cinnamon" # fi # ### Überprüfen, ob das System ein Dell Latitude 3300 ist # # if sudo dmidecode -s system-product-name | grep -q "Latitude 3300"; then # echo "Dies ist ein Dell Latitude 3300. Führe das Skript aus." # fi # ### Überprüfen, ob das System ein Dell Latitude 3300 ist ohne sudo if [ -f /sys/class/dmi/id/product_name ] && grep -q "Latitude 3300" /sys/class/dmi/id/product_name; then echo "Dies ist ein Dell Latitude 3300. Führe das Skript aus." ## disable "psmouse serio1: elantech: failed to query capabilities." if ! grep -q "blacklist psmouse" /etc/modprobe.d/blacklist.conf; then echo "blacklist psmouse" | sudo tee -a /etc/modprobe.d/blacklist.conf fi ## disable "Unsupported condition 39 (Power_personality)..." systemctl stop thermald systemctl disable thermald ## disable "pam_ecryptfs: seteuid error" after wake up apt remove ecryptfs-utils fi
Bash
Alles anzeigen#!/bin/bash # Überprüfen der Bildschirmauflösung check_resolution() { resolution=$(xdpyinfo | grep 'dimensions' | awk '{print $2}') if [ "$resolution" = "1366x768" ]; then echo "Die Auflösung beträgt 1366x768, also starten Sie das andere Skript" #./libre-gtk.sh fi } # Aufruf der Auflösungsprüfung check_resolution
Bash
Alles anzeigen#!/bin/bash # Funktion zur Systemweiten Änderung systemwide_change() { local desktop_dir="/usr/share/applications" local search_pattern="Exec=libreoffice" local replace_pattern="Exec=env GTK_THEME=Adwaita-dark libreoffice" for desktop_file in "$desktop_dir"/*.desktop; do if [ -f "$desktop_file" ]; then if grep -q "$search_pattern" "$desktop_file"; then sed -i "s/$search_pattern/$replace_pattern/g" "$desktop_file" echo "In $desktop_file wurde das Suchmuster ersetzt." fi fi done } # Funktion zur lokalen Änderung local_change() { local local_desktop_dir="$HOME/.local/share/applications" local search_pattern="Exec=libreoffice" local replace_pattern="Exec=env GTK_THEME=Adwaita-dark libreoffice" # Erstellen Sie das Verzeichnis, wenn es nicht existiert mkdir -p "$local_desktop_dir" for desktop_file in /usr/share/applications/libreoff*.desktop; do if [ -f "$desktop_file" ]; then local local_desktop_file="$local_desktop_dir/$(basename "$desktop_file")" if [ ! -f "$local_desktop_file" ]; then # Wenn die Datei in ~/.local nicht existiert, kopieren Sie sie cp "$desktop_file" "$local_desktop_dir" fi if [ -f "$local_desktop_file" ]; then # Ändern Sie die lokale Kopie sed -i "s/$search_pattern/$replace_pattern/g" "$local_desktop_file" echo "In $local_desktop_file wurde das Suchmuster ersetzt." fi fi done } remove_files() { local local_desktop_dir="$HOME/.local/share/applications" local desktop_dir="/usr/share/applications" if [ "$(whoami)" != "root" ]; then # Löschen der lokalen Dateien ohne Root-Rechte rm -f $local_desktop_dir/libreoff*.desktop echo "Lokale Dateien wurden entfernt." else # Wiederherstellen der ursprünglichen Systemdateien mit Root-Rechten for desktop_file in /usr/share/applications/libreoff*.desktop; do if [ -f "$desktop_file" ]; then sed -i "s/Exec=env GTK_THEME=Adwaita-dark libreoffice/Exec=libreoffice/g" "$desktop_file" echo "In $desktop_file wurde das Suchmuster ersetzt." fi done fi } # Prüfen der Anzahl der Argumente if [ "$#" -ne 1 ]; then echo "Verwendung:" echo "$0 --local : Lokale Installation" echo "$0 --system : Systemweite Installation (sudo erforderlich)" echo "$0 --remove : Entfernen der Installation" exit 1 fi # Verarbeiten der Argumente case "$1" in --local) local_change ;; --system) if [ "$EUID" -ne 0 ]; then echo "Bitte verwenden Sie 'sudo' für die Systeminstallation." exit 1 fi systemwide_change ;; --remove) remove_files ;; *) echo "Ungültiges Argument. Verwendung:" echo "$0 --local : Lokale Installation" echo "$0 --system : Systemweite Installation (sudo erforderlich)" echo "$0 --remove : Entfernen der Installation" exit 1 ;; esac
Bash
Alles anzeigen#!/bin/bash # sudo apt-get install jq # Dateipfad zur 13.json-Datei file_path=$HOME/.config/cinnamon/spices/calendar@cinnamon.org/13.json # Ändere die "use-custom-format" Einstellungen jq '(.["use-custom-format"]["default"]) = true | (.["use-custom-format"]["value"]) = true' "$file_path" > tmpfile && mv tmpfile "$file_path" # Ändere die Einstellungen für "custom-format" jq '(.["custom-format"]["default"]) = "%H:%M%n%d.%m.%Y" | (.["custom-format"]["value"]) = "%H:%M%n%d.%m.%Y"' "$file_path" > tmpfile && mv tmpfile "$file_path" # Ändere die Einstellungen für "custom-tooltip-format" jq '(.["custom-tooltip-format"]["default"]) = "%A, %e. %B" | (.["custom-tooltip-format"]["value"]) = "%A, %e. %B"' "$file_path" > tmpfile && mv tmpfile "$file_path"
Bash
Alles anzeigen#!/bin/bash # Pfad zur rhythmdb.xml-Datei db_file=~/.local/share/rhythmbox/rhythmdb.xml # Inhalte für die neue Datei xml_content='<?xml version="1.0" standalone="yes"?> <rhythmdb version="2.0"> <entry type="iradio"> <title>SUNSHINE LIVE - Simulcast</title> <location>http://stream.sunshine-live.de/live/mp3-192</location> </entry> <entry type="iradio"> <title>R.SA Live</title> <location>http://streams.rsa-sachsen.de/rsa-live/mp3-192/mediaplayerrsa</location> </entry> <entry type="iradio"> <title>RADIO PSR Live</title> <location>http://streams.radiopsr.de/psr-live/mp3-192/listenlive/play.m3u</location> </entry> <entry type="iradio"> <title>ENERGY Sachsen</title> <location>http://energyradio.de/sachsen</location> </entry> <entry type="iradio"> <title>Radio Fritz</title> <location>http://fritz.de/livemp3_s</location> </entry> <entry type="iradio"> <title>Radio Lausitz - Wir lieben die Lausitz</title> <location>https://hermes.bcs-systems.de/radio-lausitz_simulcast_192k_mp3</location> </entry> <entry type="iradio"> <title>MDR SPUTNIK</title> <location>http://mdr-284330-0.cast.mdr.de/mdr/284330/0/mp3/high/stream.mp3</location> </entry> <entry type="iradio"> <title>MDR JUMP</title> <location>http://mdr-284320-0.cast.mdr.de/mdr/284320/0/mp3/high/stream.mp3</location> </entry> <entry type="iradio"> <title>MDR SACHSEN - Das Sachsenradio</title> <location>http://mdr-284280-0.cast.mdr.de/mdr/284280/0/mp3/high/stream.mp3</location> </entry> <entry type="iradio"> <title>TechnoBase.FM - 24h Techno, Dance, HandsUp and More</title> <location>http://listen.technobase.fm/tunein-mp3</location> </entry> <entry type="iradio"> <title>Schlagerparadies</title> <location>http://www.surfmusik.de/m3u/schlagerparadies,9490.m3u</location> </entry> </rhythmdb>' # Lösche die bestehende Datei rm -f "$db_file" # Erstelle die neue Datei mit den Inhalten echo "$xml_content" > "$db_file"
-
Lautsprecher bitte vorher aufdrehen!