diff options
Diffstat (limited to '.zsh.after/functions.zsh')
-rw-r--r-- | .zsh.after/functions.zsh | 414 |
1 files changed, 414 insertions, 0 deletions
diff --git a/.zsh.after/functions.zsh b/.zsh.after/functions.zsh new file mode 100644 index 0000000..deb47ed --- /dev/null +++ b/.zsh.after/functions.zsh @@ -0,0 +1,414 @@ +# < FUNCTIONS + +## BACKUP + function etcbackup() { + BACKUPDIR=$HOME/dropbox/backup + HOSTNAME=$(hostname) + FILE=$1 + + if [ -f $FILE ] + then + FILENAME=$(echo $FILE | sed 's/\///' | sed 's/\//_/g') + cp -v $FILE $BACKUPDIR/$HOSTNAME/$FILENAME + else + echo $FILE does not exist + fi + } + +## DOTFILES + function update_dot() { + for i in $HOME/dropbox/dot/[a-zA-Z]*; + do + if [ -f $i ]; + then + echo file $i + base=`basename $i` + dst=$HOME/.$base + bak=$HOME/.${base}_bak + + case $base in + vimrc|zshrc|*tgz) + echo nothing $i + ;; + *) + if [ -L $dst ]; + then + rm $dst + else + mv $dst $bak + fi + ln -s $i $dst + ;; + esac + + else + if [ -d $i ]; + then + echo dir $i + base=`basename $i | sed 's/_/\//'` + dst=$HOME/.$base + bak=$HOME/.${base}_bak + + case $base in + "vim") + echo nothing $i + ;; + *) + if [ -e $dst ]; + then + if [ -L $dst ]; + then + rm $dst + else + mv $dst $bak + fi + fi + ln -s $i $dst + ;; + esac + else + echo unknown $i + fi + fi + done + } + +## PDF/LATEX + function mkpdf() + { + pdflatex -shell-escape $1 + # latex --output-format=pdf $1 + name=`echo $1 | sed 's/.tex//'` + EXT=(aux log) + for i in $EXT; + do + rm -v $name.$i + done + } + + function gsmerge() + { + target=$1 + echo "target: $target" + sleep 1 + shift + + /usr/bin/gs \ + -sDEVICE=pdfwrite \ + -dCompatibilityLevel=1.4 \ + -dNOPAUSE \ + -dBATCH \ + -sPAPERSIZE=a4 \ + -sOUTPUTFILE=$target $* + } + + function gsmerge_medium() + { + target=$1 + echo "target: $target" + sleep 1 + shift + + /usr/bin/gs \ + -sDEVICE=pdfwrite \ + -dPDFSETTINGS=/ebook \ + -dCompatibilityLevel=1.4 \ + -dNOPAUSE \ + -dBATCH \ + -sPAPERSIZE=a4 \ + -sOutputFile=$target $* + } + +## USABILITY + function lvim() + { + noglob vim $(echo $1 | awk -F":" '{ print $1" +"$2 }' ) + } + + function mkcd() + { + mkdir $1 + cd $1 + } + + function cpwd() + { + pwd >! /tmp/pwd + } + + function ppwd() + { + cd "`cat /tmp/pwd`" + } + + function cp2wd() + { + cp $@ "`cat /tmp/pwd`" + } + function cpmk() { + DIR=${*: -1} + [ ! -d $DIR ] && mkdir -p $DIR + cp $* + + } + + cpmd5(){ + md5sum $1|cut -d ' ' -f 1|cpx + } + + +function publish() { + [ -f $1 ] || return + + DIR=`dirname $1` + FILE=`basename $1` + mute pushd $DIR + scp $FILE pool:public_html/ + echo "http://www-pool.math.tu-berlin.de/~runge/$FILE" + echo "http://www-pool.math.tu-berlin.de/~runge/$FILE"|cpx + mute popd +} + +function securium { + port=44350 + chromium --proxy-server="socks://localhost:$port" & + exit +} + +## ZSH +refresh() { + source $HOME/.zshrc +} + + +## compress stuff +tar_tgz() { + tar cvfz $1.tgz $1 +} +tar_tbz() { + tar cvfj $1.tbz $1 +} +tar_tlz() { + tar --lzma -cvf $1.tlz $1 +} +tar_xz() { + tar cvfJ $1.tar.xz $1 +} + +#Decompress any given compressed file +ex() { +if [ -f $1 ] ; then + case $1 in + *.tar.bz2) tar xvjf $1 ;; + *.tar.gz) tar xvzf $1 ;; + *.bz2) bunzip2 $1 ;; + *.deb) ar vx $1 + ;; + *.rar) unrar x $1 ;; + *.pgp) gpg -o ${1%".pgp"} -d $1 ;; + *.gpg) gpg -o ${1%".gpg"} -d $1 ;; + *.gz) gunzip $1 ;; + *.tar) tar xvf $1 ;; + *.tbz2) tar xvjf $1 ;; + *.tgz) tar xvzf $1 ;; + *.xz) tar xvJf $1 ;; + *.zip) unzip $1 ;; + *.Z) uncompress $1 ;; + *.7z) 7z x $1 ;; + *) echo "don't know how to extract '$1'..." ;; + esac +else + echo "'$1' is not a valid file!" +fi +} + +ex2() { + if [ -f $2 ] ;then + echo "Extracting to '$2'" + local out = $2 + else + echo "Extracting to '$( pwd )'" + local out = $( pwd ) + fi + if [ -f $1 ] ;then + echo "'$1'" + else + echo "'$1' is not a valid file!" + fi +} + + + + +##CRYPTSETUP AND LUKS +#TODO: Add possibility of opening/closing multiple devices at once +lopen() { + case $HOST in + "homey") + case $1 in + "video-backup") + sudo cryptsetup luksOpen "/dev/disk/by-id/ata-SAMSUNG_HD153WI_S1UVJ1VZ400797" $1 + ;; + "video") + sudo cryptsetup luksOpen "/dev/disk/by-id/ata-SAMSUNG_HD153WI_S1UVJ1VZ400798" $1 + ;; + "photos") + sudo cryptsetup luksOpen "/dev/disk/by-id/ata-SAMSUNG_HD501LJ_S0MUJ1FQ104574" $1 + ;; + "music") + sudo cryptsetup luksOpen "/dev/disk/by-id/ata-SAMSUNG_HD501LJ_S0MUJ1FPB87663" $1 + ;; + "music-external") + sudo cryptsetup luksOpen "/dev/disk/by-id/ata-ST9500325AS_6VE152RS" $1 + ;; + "photos-external") + sudo cryptsetup luksOpen "/dev/disk/by-id/ata-ST9500325AS_6VE457TN" $1 + ;; + esac + ;; + "dvzrv" | "trvlr") + case $1 in + "music") + if [ -L "/dev/disk/by-uuid/e0b19c7d-9e90-4117-aea1-7e4b321d9d5a" ]; then + sudo cryptsetup luksOpen "/dev/disk/by-uuid/e0b19c7d-9e90-4117-aea1-7e4b321d9d5a" $1 + elif [ -L "/dev/disk/by-id/ata-ST9500325AS_6VE152RS" ]; then + sudo cryptsetup luksOpen "/dev/disk/by-id/ata-ST9500325AS_6VE152RS" $1 + elif [ -L "/dev/disk/by-id/usb-Seagate_FreeAgent_Go_2GE36KXD-0:0" ]; then + sudo cryptsetup luksOpen "/dev/disk/by-id/usb-Seagate_FreeAgent_Go_2GE36KXD-0:0" $1 + else + echo "Error! Device $1 is not available" + exit 1 + fi + ;; + "photos") + if [ -L "/dev/disk/by-uuid/b3c5a842-474b-4c2f-a246-abebe1da3450" ]; then + sudo cryptsetup luksOpen "/dev/disk/by-uuid/b3c5a842-474b-4c2f-a246-abebe1da3450" $1 + elif [ -L "/dev/disk/by-id/ata-ST9500325AS_6VE457TN " ]; then + sudo cryptsetup luksOpen "/dev/disk/by-id/ata-ST9500325AS_6VE457TN" $1 + elif [ -L "/dev/disk/by-id/usb-Seagate_FreeAgent_Go_2GE4LCR0-0:0" ]; then + sudo cryptsetup luksOpen "/dev/disk/by-id/usb-Seagate_FreeAgent_Go_2GE4LCR0-0:0" $1 + else + echo "Error! Device $1 is not available" + exit 1 + fi + ;; + "backup-audio") + if [ -L "/dev/disk/by-id/usb-HGST_HTS_725050A7E630_801130168383-0:0" ]; then + sudo cryptsetup luksOpen "/dev/disk/by-id/usb-HGST_HTS_725050A7E630_801130168383-0:0" $1 + elif [ -L "/dev/disk/by-id/ata-HGST_HTS725050A7E630_TF755AWHHS9S1M" ]; then + sudo cryptsetup luksOpen "/dev/disk/by-id/ata-HGST_HTS725050A7E630_TF755AWHHS9S1M" $1 + else + echo "Error! Device $1 is not available" + exit 1 + fi + ;; + "backup") + if [ -L "/dev/disk/by-id/usb-ST950042_0ASG_55DFFFFFFFFF-0:0" ]; then + sudo cryptsetup luksOpen "/dev/disk/by-id/usb-ST950042_0ASG_55DFFFFFFFFF-0:0" $1 + else + echo "Error! Device $1 is not available" + exit 1 + fi + ;; + "media") + if [ -L "/dev/disk/by-id/ata-ST4000LM016-1N2170_W80088G0" ]; then + sudo cryptsetup luksOpen "/dev/disk/by-id/ata-ST4000LM016-1N2170_W80088G0" $1 + elif [ -L "/dev/disk/by-uuid/e5adbc14-732e-43e8-b6e1-febdfe6d1d3c" ]; then + sudo cryptsetup luksOpen "/dev/disk/by-uuid/e5adbc14-732e-43e8-b6e1-febdfe6d1d3c" $1 + else + echo "Error! Device $1 is not available" + exit 1 + fi + ;; + "video") + if [ -L "/dev/disk/by-id/ata-ST4000LM016-1N2170_W80092WW" ]; then + sudo cryptsetup luksOpen "/dev/disk/by-id/ata-ST4000LM016-1N2170_W80092WW" $1 + elif [ -L "/dev/disk/by-uuid/5ac700be-e168-495b-b133-42064fa101e4" ]; then + sudo cryptsetup luksOpen "/dev/disk/by-uuid/5ac700be-e168-495b-b133-42064fa101e4" $1 + else + echo "Error! Device $1 is not available" + exit 1 + fi + ;; + *) + echo "Error! Device $1 is not available" + exit 1 + ;; + esac + esac + if [[ -e "/dev/mapper/$1" ]]; then + sudo mount /dev/mapper/$1 /mnt/$1 + if [ $1 = "media" ]; then + sudo mount --bind /mnt/media/music /mnt/music + sudo mount --bind /mnt/media/photos /mnt/photos + if [ ! -h ~/.cache/shotwell ]; then + ln -s /mnt/photos/shotwell/ ~/.cache/shotwell + fi + fi + else + echo "Error: Device /dev/mapper/$1 is not available." + exit 1 + fi +} + +lclose() { + notmounted=$(mountpoint /mnt/$1) + if [ "$?" -eq 0 ]; then + #stop services blocking the umount + if [[ $HOST == "homey" ]]; then + sudo systemctl stop rpc-{idmapd,mountd} rpcbind + fi + if [ $1 = "media" ]; then + sudo umount /mnt/{music,photos} + fi + sudo umount /mnt/$1 + sudo cryptsetup luksClose $1 + #restart services that blocked the umount + if [[ $HOST == "homey" ]]; then + sudo systemctl start rpc-{idmapd,mountd} rpcbind + fi + else + echo "/mnt/$1 is not a mountpoint or not mounted." + fi +} + +## RSYNC + +backupinfo() { + log_cyan "INFO" + rsync\ + -r\ + -n\ + -t\ + -p\ + -o\ + -g\ + -v\ + --progress\ + --delete\ + --ignore-existing\ + --size-only\ + -s\ + --exclude 'lost+found'\ + --exclude '.Trash-1000'\ + --exclude '$RECYCLEBIN'\ + --exclude 'System Volume Information'\ + --exclude '.thumbs'\ + $1 $2 + echo "backupfolder path/to/folder/ /path/to/other/folder" +} + +backupfolder() { + rsync \ + -r\ + -t\ + -p\ + -o\ + -g\ + -v\ + --progress\ + --delete --ignore-existing --size-only -s --exclude 'lost+found' --exclude '.Trash-1000' --exclude '$RECYCLEBIN' --exclude 'System Volume Information' --exclude '.thumbs' $1 $2 +} + + +# FUNCTIONS > |