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 ;-)