ShellBefehle
nützliche Shell-Befehle
Suchen und Ersetzen:
perl -i.backup -pe "s/PATTERN/SUBSTITUT/" DATEIEN
Sortieren von /etc/passwd nach UID:
vipw :%!sort -n -t: -k3
Testdatei schreiben mit periodischer Geschdindigkeitsanzeige:
i=1;while [ $i -lt 100 ]; do dd if=/dev/zero of=/testfile bs=102400 count=1 seek=${i}00; i=`expr $i + 1`; done
Bilder entsprechend der Orientieungsangabe in EXIF drehen:
for i in *.JPG; do rot=$(exiftool -S -IFD0:Orientation $i|grep -v normal); if [ -n "$rot" ]; then deg=$(echo $rot|cut -d" " -f3); echo $i:$deg; mv $i $i.orig; convert -rotate $deg $i.orig $i; exiftool -overwrite_original -n -Orientation=1 $i >/dev/null; fi; done
Format von Video/Image-Dateien ausgeben:
for i in *; do echo -n "$i: "; mediainfo --Inform="Video;%Width%x%Height%" $i; done for i in *; do echo -n "$i: "; mediainfo --Inform="Image;%Width%x%Height%" $i; done
Thumbnail-Image aus Video generieren:
ffmpeg -itsoffset -4 -i IMG_1296.webm -vcodec mjpeg -vframes 1 -an -f rawvideo -s 320x240 IMG_1296.jpg
Videos auf Größe 640x480 skalieren:
ffmpeg2theora --two-pass --soft-target -V 600 -x 640 -y 480 -A 128 IMG_1296.MOV HandBrakeCLI --preset 640x480 -2 -O -T -b 600 -X 640 -Y 480 -i IMG_1296.MOV -o IMG_1296.mp4 # ffmpeg braucht die exakte Zielgröße, also hier 640x360 ffmpeg -i IMG_1296.MOV -quality good -cpu-used 0 -b:v 600k -s 640x360 -f webm IMG_1296.webm
Beispiel-Befehle zum Einrichten von Raid-Partitionen:
mdadm -v --create /dev/md0 --level=raid5 --raid-devices=4 /dev/sd[fghi]1 lvcreate -n lv_aufnahmen2 -L 7t vg_shea /dev/md0 mkfs.ext4 -E stride=128,stripe-width=384 -m0 /dev/mapper/vg_shea-lv_backup2
Verteilung von logischen Volumes auf physische Volumes:
pvs --segments -o+lv_name,seg_start_pe,segtype
IP-Addresse zu einer MAC-Addresse:
cat /proc/net/arp | grep 00:25:22:4b:ee:12 |cut -f 1 -d " "
Filtern von MAC-Addressen:
arptables -A IN -z 00:25:9c:90:b7:c7 -j DROP #WLAN Marcel arptables -A IN -z 00:25:22:4b:ee:12 -j DROP #LAN Marcel
Basisverzeichnisse in / sichern:
cd /; /bin/ls | cpio -o -v > data/backup2/rootbase.cpio
Wiederherstellen mit:
cpio -id < data/backup2/rootbase.cpio
Umbenennen von Dateien
Unterstrich durch Leerzeichen ersetzen, Anfangsbuchstaben groß:
for i in *; do mv "$i" "`echo $i|sed -e 's/-/ - /' -e 's/_/ /g'`"; done for i in *; do mv "$i" "`perl -e '$_=$ARGV[0];s/ (.)/uc(" $1")/ge;print' "$i"`"; done
Im Autoren-Verzeichnis:
find . -maxdepth 1 -type f| while read i;do i=${i#./}; echo $i; echo $i|perl -e '$_ = <>; chomp; /^([A-Za-z]+?)[\. ]+(([A-Za-z]+?)\.? )?([A-Za-z'\''-]+?) (\(.+\) )?-/; $last = $4; $first = $1; $middle = $3; $middle = " ".$middle if $middle; $first.="." if $first =~ /^.$/; if ($last) {print "../Autoren/$last, $first$middle\n"} else {print "x\n"}'|(read dir; mkdir -p "$dir"; echo mv+ "$i" "$dir"; mv+ "$i" "$dir"); done find . -maxdepth 1 -type f|egrep -e '^./[a-zA-Z-]+, [a-zA-Z-]+ - '| while read i;do i=${i#./}; dir="${i%% - *}"; mkdir -p "$dir"; mv -v "$i" "$dir/$i"; done find . -type d|egrep -e '^./[a-zA-Z]+ [a-zA-Z]+$'| while read i; do i=${i#./}; first=${i% *}; last=${i#* }; mv -v "$i" "$last, $first"; done
Bilder auf Änderungsdatum.jpg umbenenen:
for i in *.jpg; do j=`stat -c '%y' $i|cut -d. -f1|sed -e s/' '/_/`; if [ -e $j.jpg ]; then let x++; j=${j}_$x; else let x=0; fi; mv $i $j.jpg; done
Samba
Debuglevel setzen:
smbcontrol smbd debug 10