ShellBefehle: Unterschied zwischen den Versionen

Aus Shea Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 105: Zeile 105:


<pre><nowiki>
<pre><nowiki>
find -type d -empty | xargs rmdir
find -type d -empty -print0 | xargs --null rmdir
</nowiki></pre>
</nowiki></pre>



Version vom 1. Januar 1970, 01:00 Uhr

nützliche Shell-Befehle

Liste nützlicher Terminal-Programme

Suchen und Ersetzen:

perl -i.backup -pe "s/PATTERN/SUBSTITUT/" DATEIEN


ACL-Rechte kopieren

getfacl Alte-Datei | setfacl --set-file=- Neue-Datei ...


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


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


Einloggen in gesperrten Account:

su -s /bin/bash - apache
su -s /bin/bash apache -c ls


Leere Verzeichnisse löschen

find -type d -empty -print0 | xargs --null rmdir


MP3s

MP3-Tag aus Dateinamen (mit mid3v2 aus python-mutagen)

for i in *.mp3; do a=${i% -*}; t=${i#*- }; t=${t%.mp3}; mid3v2 -a "$a" -t "$t" "$i"; done


FLAC in MP3 umwandeln

for a in *.flac; do  < /dev/null ffmpeg -i "$a" -qscale:a 0 "${a[@]/%flac/mp3}"; done

Sprache erkennen

Perl - Text übergeben

perl -e 'use Lingua::Identify qw/:all/;set_active_languages("en", "de");print scalar langof({method => qw/smallwords prefixes2 prefixes3 prefixes4 suffixes2 suffixes3 suffixes4 ngrams2 ngrams3 ngrams4/}, $ARGV[0]),"\n"' "Dies ist ein Test"


Perl - Dateinamen übergeben

perl -e 'use Lingua::Identify qw/:all/;set_active_languages("en", "de");print scalar langof_file({ encoding => "ISO-8859-1" }, $ARGV[0]),"\n"' /usr/share/dict/words


Python (https://github.com/saffsd/langid.py)

langid <<< "Dies ist ein Test"

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