Linux

Bash Codeschnipsel

Abschneiden einer Variable
Besitzer von symbolische Verknüpfung ändern
Bilder verkleinern
Bilder anhand von exif-Datum sortieren
Bilder für Digitalen Bilderrahmen convertieren
CPU Auslastung
Datei zeilenweise einlesen
Dateinemen in einem Verzeichnis klein schreiben
Fenstertitel setzen
Führende Nullen vor Zahlen hängen
In einer Datei suchen und ersetzen
IP-Adressen in einem Log finden
kill Meldungen verhindern
Konsolenbreite und -höhe ermitteln
mp3 Bit Rate ändern
mp3/cue splitten
mp3 id3-Tags ändern
Passwortgenerator
TAR bei der Erstellung splitten
Testen ob die Variable ein Integer ist
Unixzeit umwandeln
Einfache Zählschleifen

Unixzeit umwandeln

#Datum in Unix
date -d "2084-02-14 00:58" +%s
#Unix in Datum
date -d @3601324680

Abschneiden einer Variable

VAR="Das ist ein beliebiger Inhalt"
#Die letzten 7 Zeichen abschneiden
echo ${VAR:0:${#VAR}-7}
#Die ersten 7 Zeichen abschneiden
echo ${VAR:7:${#VAR}}
#Die ersten 7 und die letzten 7 Zeichen abschneiden
echo ${VAR:7:${#VAR}-14}

Führende Nullen vor Zahlen hängen

ZAHL=14
STELLEN=5
printf "%.${STELLEN}i\n" ${ZAHL}

Testen ob die Variable ein Integer ist

VAR="12345"
if [[ `echo "${VAR}" | grep -E ^[[:digit:]]+$` ]]; then echo "ist Integer" else echo "ist kein Integer" fi

Bilder verkleinern

mkdir small
for I in *.jpg ; do
   echo ${I}
   #convert ${I} -resize 1024x768 small/${I}
   convert ${I} -scale 50% small/${I}
done

mp3/cue splitten

mp3splt -c image.cue -o @n_@a_@t image.mp3
   -c die cue Datei
   -o das Format für die Ausgangsdateien
   @a Künstler
   @n Titelnummer
   @t Titelname 

Bilder anhand von exif-Datum sortieren

for I in *; do
   EXT=`echo ${I} | tr A-Z a-z | awk -F \. '{print $NF}'`
   if [ ${EXT} = "jpg" ]; then
      JPGDATE=`exif -t 0x9003 ${I} | grep Value | awk '{print $2 }' | sed 's/:/./g'`
      mkdir -p ${JPGDATE}
      mv "${I}" ${JPGDATE} -vi
   fi
done

Dateinemen in einem Verzeichnis klein schreiben

for I in *; do
   mv "${I}" "`echo "${I}" | tr A-Z a-z`" -vi
done

Datei zeilenweise einlesen

while read -r AA BB; do
   echo ${AA} ${BB}
done < datei.name

In einer Datei suchen und ersetzen

sed -i -e 's/suchen/ersetzen/g' datei.name

Einfache Zählschleifen

#von 1 bis 5 zählen
for I in `seq 5`; do
   echo ${I}
done
#von 4 bis 20 in 2er Schritten zählen
for I in `seq 4 2 20`; do
   echo ${I}
done

kill Meldungen verhindern

sleep 10 &
PID=$!
disown ${PID}
kill -9 ${PID}

TAR bei der Erstellung splitten

# 1GB große Dateien
tar czf - /home/jtwo | split -b1024m - backup.tar.gz.
# extrahieren
cat backup.tar.gz.* | tar xvz

CPU Auslastung

# Berechnung mit 4 Kernen                            \/
ps -eo pcpu | awk '{cpu_load+=$1} END {print cpu_load/4 }'

mp3 Bit Rate ändern

mkdir 128bit
for I in *mp3; do
   lame -h -b 128 --mp3input ${I} 128bit/${I}
done

mp3 id3-Tags ändern

eyeD3 --remove-all --no-color 001.-.Der.Anfang.mp3
eyeD3 --to-v2.3 --preserve-file-times \
   --recording-date 2014 --genre Audiobook \
   --track=1 --track-total 123 \
   --artist "JTwo" --album "Das Leben" --title "Der Anfang" \
   --add-image ~/folder.jpg:FRONT_COVER:"Cover" 001.-.Der.Anfang.mp3

Konsolenbreite und -höhe ermitteln

echo "width: `tput cols`"
echo "height: `tput lines`"

Passwortgenerator

#!/bin/bash
LENGTH=30
COUNT=10
ALLOWED_CHARACTERS=('0' '1' '2' '3' '4' '5' '6' '7' '8' '9')
ALLOWED_CHARACTERS=(${ALLOWED_CHARACTERS[*]} 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z')
ALLOWED_CHARACTERS=(${ALLOWED_CHARACTERS[*]} 'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M' 'N' 'O' 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z')
ALLOWED_CHARACTERS=(${ALLOWED_CHARACTERS[*]} 'ß')
ALLOWED_CHARACTERS=(${ALLOWED_CHARACTERS[*]} 'ä' 'ü' 'ö')
ALLOWED_CHARACTERS=(${ALLOWED_CHARACTERS[*]} 'Ä' 'Ü' 'Ö')
ALLOWED_CHARACTERS=(${ALLOWED_CHARACTERS[*]} '!' ',' '-' '.' ':' ';' '?' '=' '@' '/' '\')
ALLOWED_CHARACTERS=(${ALLOWED_CHARACTERS[*]} '#' '$' '%' '&' '+' '<' '>')
ALLOWED_CHARACTERS=(${ALLOWED_CHARACTERS[*]} '"' "'")
ALLOWED_CHARACTERS=(${ALLOWED_CHARACTERS[*]} '(' ')' '*' '[' ']' '{' '|' '}' '~')
ALLOWED_I=${#ALLOWED_CHARACTERS[*]}
for J in `seq -w 1 ${COUNT}`; do
        echo -n -e "${J} :\t "
        for I in `seq --equal-width 1 ${LENGTH}`; do
                RAND=$((${RANDOM} % ${ALLOWED_I}))
                echo -n "${ALLOWED_CHARACTERS[${RAND}]}"
        done
        echo ""
done

Bilder für Digitalen Bilderrahmen convertieren

#!/bin/bash
TARGET=DPF
WIDTH=800
HEIGHT=480
mkdir -p ${TARGET}
for I in *[Jj][Pp][Gg]; do
   echo ${I}
   I_TARGET=${TARGET}/${I:0:-3}jpg
   I_TARGET_TMP=${TARGET}/${I:0:-4}_${WIDTH}x${HEIGHT}.jpg
   convert -sampling-factor 4:2:0 -resize ${WIDTH}x${HEIGHT} ${I} ${I_TARGET}
   RESOLUTION=$(identify ${I_TARGET} | cut -d ' ' -f 3)
   I_WIDTH=$(echo ${RESOLUTION} | cut -d 'x' -f 1)
   I_HEIGHT=$(echo ${RESOLUTION} | cut -d 'x' -f 2)
   W_BORDER=0
   H_BORDER=0
   if [ ${I_WIDTH} -ne ${WIDTH} ]; then
      W_BORDER=$(( ( ${WIDTH} - ${I_WIDTH} ) / 2 ))
   fi
   if [ ${I_HEIGHT} -ne ${HEIGHT} ]; then
      H_BORDER=$(( ( ${HEIGHT} - ${I_HEIGHT} ) / 2 ))
   fi
   if [ ${W_BORDER} -ne 0 -o ${H_BORDER} -ne 0 ]; then
      convert -bordercolor black -border ${W_BORDER}x${H_BORDER} ${I_TARGET} ${I_TARGET_TMP}
      mv ${I_TARGET_TMP} ${I_TARGET}
   fi
done

Fenstertitel setzen

printf "\033]0;Neuer Fenstertitel\007"

Besitzer von symbolische Verknüpfung ändern

chown -h user:group symlink

IP-Adressen in einem Log finden

grep "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" dnsmasq.log
# Hier werden allderdings auch 999.888.777.666 Adressen gefunden ;-)

Letzte Änderung: 03. Dec 2017

© Joachim Janßen
CSS ist valide! Valid XHTML 1.0 Transitional