aboutsummaryrefslogtreecommitdiffstats
path: root/.zsh.after/functions.zsh
diff options
context:
space:
mode:
Diffstat (limited to '.zsh.after/functions.zsh')
-rw-r--r--.zsh.after/functions.zsh414
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 >