ShellBefehle

Aus Shea Wiki
Zur Navigation springen Zur Suche springen

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

KategorieWissen