Die Shell bietet diverse Möglichkeiten die Länge eines Strings zu ermitteln.

Die schnellste und kompatibelste Methode die Länge einer Zeichenkette auf die schnelle im Terminal zu ermitteln ist meiner Meinung nach diese hier:

echo -n "String Länge in Terminal / Konsole" | wc -c

Auf neueren Systemen lässt sich im Terminal die String Länge auch mit einem Kommando ausgeben:

expr length "String Länge in Terminal / Konsole"

Während in einem Shell Script die länge am schönsten so ermittelt wird:

#! /bin/sh
str="string länge in script"
echo ${#str}
Keine Kommentare »
 

Hin und wieder kommt es vor das veränderte, erstellte Dateien oder Dateien die vor kurzem verwendet wurden ermittelt werden müssen. Mit find ist das ganz gut möglich.

Veränderte Dateien in den letzten 24 Stunden:

find /path -mtime -1 -ls

Erstellte Dateien in den letzten 24 Stunden:

find /path -ctime -1 -ls

Verwendete Dateien in den letzten 24 Stunden:

find /path -atime -1 -ls

Unter anderem können folgende Parameter für die Zeitangabe übergeben werden:

  • -mtime wenn die Datei verändert wurde in Tagen
  • -mmin wenn die Datei verändert wurde in Minuten
  • -ctime wenn die Datei erstellt wurde in Tagen
  • -cmin wenn die Datei erstellt wurde in Minuten
  • -atime wenn die Datei verwendet wurde in Tagen
  • -amin wenn die Datei verwendet wurde in Minuten

Zu beachten ist der erste Buchstabe. a steht für verwendet. c für erstellt und m für modifiziert. Die Zahl die dem Parameter übergeben wird ist immer 1:1 mit der Zeitangabe verbunden. D.h.:

  • -mmin -1 verändert vor einer Minute
  • -mtime -1 verändert vor einem Tag
  • -mtime -0.25 verändert vor 0,25 Tagen bzw. 6 Stunden.
Keine Kommentare »
 

Vergessen das man beim Ausführen eines Befehls root sein musste? Super schnell lässt sich der zuletzt verwendete Befehl erneut ausführen mit:

~# sudo !!

Wenn sudo nicht verfügbar ist geht das Wiederholen des Kommandos auch mit su:

su -c "!!"
Keine Kommentare »
 

Ein kurzes Script um Benutzer aus einer Leerzeichen separierten Liste (siehe im Script CREATEUSER: user1 user2 userx) in MySQL zu importieren. Das Script speichert dabei Benutzer und das zufällig generierte Passwort 16 stellige Passwort in einer Log Datei (siehe im Script LOGFILE). Zusätzlich erstellt das Script eine Datenbank betitelt mit dem Benutzername. Für die erstellte Datenbank werden dem erstellten Benutzer außerdem alle Rechte garantiert.

Verwendung:

  • MySQL Login Daten eintragen
  • Benutzerliste
  • Logdatei eintragen (optional)
  • ausführen
#!/bin/sh
 
##
## <Configuration>
##
 
## MySQL login data
MYSQLUSER="root"
MYSQLPASS="MYSQLrootPassword"
MYSQLHOST="localhost"
 
## logfile
LOGFILE="/var/log/createmysqluser.log"
 
## mysql user to create
CREATEUSER="User1 User2"
 
##
## </Configuration>
##
 
for USER in ${CREATEUSER}; do
        PASSWORD=$(cat /dev/urandom | strings | grep -m 1 -oEi '[a-zA-Z0-9]{16}')
        echo "${USER} ${PASSWORD}" >> ${LOGFILE} 
        mysql -h $MYSQLHOST -u $MYSQLUSER -p$MYSQLPASS -e "CREATE USER ${USER}@'localhost' IDENTIFIED BY '${PASSWORD}';"
        mysql -h $MYSQLHOST -u $MYSQLUSER -p$MYSQLPASS -e "CREATE DATABASE ${USER};"
        mysql -h $MYSQLHOST -u $MYSQLUSER -p$MYSQLPASS -e "GRANT ALL PRIVILEGES ON ${USER}.* TO ${USER}@'localhost' WITH GRANT OPTION;"
done

Super praktisch wäre das Script, wenn es die MySQL Benutzer Liste über eine Datei einlesen würde. Macht es aber nicht. 🙂

Keine Kommentare »
 

In der Shell MP3 Dateien / Vorschau aus einem Ordner mit WAV Dateien zu konvertieren ist mit diesem Script hier bequem möglich. Dieses Script basiert auf lame und mp3cut. Viel Spaß:

#! /bin/sh
 
## <config>
 
	## .wav dir
	## format: <dir>/ use / as last character
	DIR="/home/user/wavFiles/" 
 
	## time for preview (optional)
	## format: 00:00-00:30 see mp3cut usage
	PREVIEWTiME="00:00-00:30" 
 
## </config>
 
if [ -n "${DIR}" ]; then
	if [ -d "${DIR}" ]; then
	for i in "${DIR}"*.wav; do
			NEWNAME="${i%.*}.mp3"
			lame -b 192 -h "$i" "${NEWNAME}"
			if [ -n "${PREVIEWTiME}" ]; then
				mp3cut -o "${i%.*}-preview.mp3" -t "${PREVIEWTiME}" "${NEWNAME}"
			fi		
		done
		exit 0
	else
		echo "# dirwav2mp3cut.sh - dir does not exist"
		exit 1
	fi
else
	echo "#n# dirwav2mp3cut.sh - creates MP3 cuts in various length from .wav files in a folder.n# Usage: Call ./dirwav2mp3cut.sh after config n# Return: <name>-preview.mp3/n#"
	exit 1
fi

Es sollte darauf geachtet werden, dass die Pfadangabe in DIR mit einem Schrägstrich (/) endet. Mit blanker Vorschau-Zeitangabe ist es möglich nur MP3s zu erstellen ohne diese zu schneiden:

PREVIEWTiME=""
Keine Kommentare »
 

Dateien die eigentlich UTF-8 sein sollten sind über verschiedene Ordner verteilt im ISO Format auf dem Dateisystem. Wer kennt das Problem nicht? 🙂
Hier ein kleines Script um ISO codierte Text Dateien rekursiv in UTF-8 codierte Dateien zu konvertieren.

#! /bin/sh
 
FILES=$(find "$1" -type f -name *.txt)
 
for FILE in $FILES; do
	iconv -f ISO-8859-1 -t UTF-8  "${FILE}" > "${FILE}.tmp"; mv "${FILE}.tmp"  "${FILE}"
done

Die Dateierweiterung sollte nach Wunsch angepasst werden. Eine Installation von iconv ist möglicherweise nötig.

Keine Kommentare »