#a3# Execute \kbd{grep-excuses}
alias ge='grep-excuses'
- # debian upgrade
- #f3# Execute \kbd{apt-get update \&\& }\\&\quad \kbd{apt-get dist-upgrade}
- upgrade() {
- emulate -L zsh
- if [[ -z $1 ]] ; then
- $SUDO apt-get update
- $SUDO apt-get -u upgrade
- else
- ssh $1 $SUDO apt-get update
- # ask before the upgrade
- local dummy
- ssh $1 $SUDO apt-get --no-act upgrade
- echo -n 'Process the upgrade?'
- read -q dummy
- if [[ $dummy == "y" ]] ; then
- ssh $1 $SUDO apt-get -u upgrade --yes
- fi
- fi
- }
-
# get a root shell as normal user in live-cd mode:
if isgrmlcd && [[ $UID -ne 0 ]] ; then
alias su="sudo su"
fi
fi
-# get_tw_cli has been renamed into get_3ware
-if check_com -c get_3ware ; then
- get_tw_cli() {
- echo 'Warning: get_tw_cli has been renamed into get_3ware. Invoking get_3ware for you.'>&2
- get_3ware
- }
-fi
-
-# I hate lacking backward compatibility, so provide an alternative therefore
-if ! check_com -c apache2-ssl-certificate ; then
-
- apache2-ssl-certificate() {
-
- print 'Debian does not ship apache2-ssl-certificate anymore (see #398520). :('
- print 'You might want to take a look at Debian the package ssl-cert as well.'
- print 'To generate a certificate for use with apache2 follow the instructions:'
-
- echo '
-
-export RANDFILE=/dev/random
-mkdir /etc/apache2/ssl/
-openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem
-chmod 600 /etc/apache2/ssl/apache.pem
-
-Run "grml-tips ssl-certificate" if you need further instructions.
-'
- }
-fi
-
# Use hard limits, except for a smaller stack and no core dumps
unlimit
is425 && limit stack 8192
# shell functions
-#f1# Provide csh compatibility
-setenv() { typeset -x "${1}${1:+=}${(@)argv[2,$#]}" } # csh compatibility
-
#f1# Reload an autoloadable function
freload() { while (( $# )); do; unfunction $1; autoload -U $1; shift; done }
compdef _functions freload
done
}
-# fast manual access
-if check_com qma ; then
- #f1# View the zsh manual
- manzsh() { qma zshall "$1" }
- compdef _man qma
-else
- manzsh() { /usr/bin/man zshall | vim -c "se ft=man| se hlsearch" +/"$1" - ; }
-fi
-
# TODO: Is it supported to use pager settings like this?
# PAGER='less -Mr' - If so, the use of $PAGER here needs fixing
# with respect to wordsplitting. (ie. ${=PAGER})
#k# display help for keybindings and ZLE (cycle pages with consecutive use)
zle -N help-zle && bindkey '^Xz' help-zle
-check_com -c qma && alias ?='qma zshall'
-
# grep for running process, like: 'any vim'
any() {
emulate -L zsh
print 'Finished, running "swapoff -a; swapon -a" may also be useful.'
}
-# print hex value of a number
-hex() {
- emulate -L zsh
- [[ -n "$1" ]] && printf "%x\n" $1 || { print 'Usage: hex <number-to-convert>' ; return 1 }
-}
-
-# calculate (or eval at all ;-)) with perl => p[erl-]eval
-# hint: also take a look at zcalc -> 'autoload zcalc' -> 'man zshmodules | less -p MATHFUNC'
-peval() {
- [[ -n "$1" ]] && CALC="$*" || print "Usage: calc [expression]"
- perl -e "print eval($CALC),\"\n\";"
-}
-functions peval &>/dev/null && alias calc=peval
-
-# just press 'asdf' keys to toggle between dvorak and us keyboard layout
-aoeu() {
- echo -n 'Switching to us keyboard layout: '
- [[ -z "$DISPLAY" ]] && $SUDO loadkeys us &>/dev/null || setxkbmap us &>/dev/null
- echo 'Done'
-}
-asdf() {
- echo -n 'Switching to dvorak keyboard layout: '
- [[ -z "$DISPLAY" ]] && $SUDO loadkeys dvorak &>/dev/null || setxkbmap dvorak &>/dev/null
- echo 'Done'
-}
-# just press 'asdf' key to toggle from neon layout to us keyboard layout
-uiae() {
- echo -n 'Switching to us keyboard layout: '
- setxkbmap us && echo 'Done' || echo 'Failed'
-}
-
-# set up an ipv6 tunnel
-ipv6-tunnel() {
- emulate -L zsh
- case $1 in
- start)
- if ifconfig sit1 2>/dev/null | grep -q 'inet6 addr: 2002:.*:1::1' ; then
- print 'ipv6 tunnel already set up, nothing to be done.'
- print 'execute: "ifconfig sit1 down ; ifconfig sit0 down" to remove ipv6-tunnel.' ; return 1
- else
- [[ -n "$PUBLIC_IP" ]] || \
- local PUBLIC_IP=$(ifconfig $(route -n | awk '/^0\.0\.0\.0/{print $8; exit}') | \
- awk '/inet addr:/ {print $2}' | tr -d 'addr:')
-
- [[ -n "$PUBLIC_IP" ]] || { print 'No $PUBLIC_IP set and could not determine default one.' ; return 1 }
- local IPV6ADDR=$(printf "2002:%02x%02x:%02x%02x:1::1" $(print ${PUBLIC_IP//./ }))
- print -n "Setting up ipv6 tunnel $IPV6ADDR via ${PUBLIC_IP}: "
- ifconfig sit0 tunnel ::192.88.99.1 up
- ifconfig sit1 add "$IPV6ADDR" && print done || print failed
- fi
- ;;
- status)
- if ifconfig sit1 2>/dev/null | grep -q 'inet6 addr: 2002:.*:1::1' ; then
- print 'ipv6 tunnel available' ; return 0
- else
- print 'ipv6 tunnel not available' ; return 1
- fi
- ;;
- stop)
- if ifconfig sit1 2>/dev/null | grep -q 'inet6 addr: 2002:.*:1::1' ; then
- print -n 'Stopping ipv6 tunnel (sit0 + sit1): '
- ifconfig sit1 down ; ifconfig sit0 down && print done || print failed
- else
- print 'No ipv6 tunnel found, nothing to be done.' ; return 1
- fi
- ;;
- *)
- print "Usage: ipv6-tunnel [start|stop|status]">&2 ; return 1
- ;;
- esac
-}
-
-# run dhclient for wireless device
-iwclient() {
- sudo dhclient "$(wavemon -d | awk '/device/{print $3}')"
-}
-
-# spawn a minimally set up mksh - useful if you want to umount /usr/.
-minimal-shell() {
- emulate -L zsh
- local shell="/bin/mksh"
-
- if [[ ! -x ${shell} ]]; then
- printf '`%s'\'' not available, giving up.\n' ${shell} >&2
- return 1
- fi
-
- exec env -i ENV="/etc/minimal-shellrc" HOME="$HOME" TERM="$TERM" ${shell}
-}
-
# a wrapper for vim, that deals with title setting
# VIM_OPTIONS
# set this array to a set of options to vim you always want
cp -a "$1" "${1}_$(date --iso-8601=seconds)"
}
-#f1# grep for patterns in grml's zsh setup
-zg() {
- LANG=C perl -e '
-
-sub usage {
- print "usage: zg -[anr] <pattern>\n";
- print " Search for patterns in grml'\''s zshrc.\n";
- print " zg takes no or exactly one option plus a non empty pattern.\n\n";
- print " options:\n";
- print " -- no options (use if your pattern starts in with a dash.\n";
- print " -a search for the pattern in all code regions\n";
- print " -n search for the pattern in non-root code only\n";
- print " -r search in code for everyone (also root) only\n\n";
- print " The default is -a for non-root users and -r for root.\n\n";
- print " If you installed the zshrc to a non-default locations (ie *NOT*\n";
- print " in /etc/zsh/zshrc) do: export GRML_ZSHRC=\$HOME/.zshrc\n";
- print " ...in case you copied the file to that location.\n\n";
- exit 1;
-}
-
-if ($ENV{GRML_ZSHRC} ne "") {
- $RC = $ENV{GRML_ZSHRC};
-} else {
- $RC = "/etc/zsh/zshrc";
-}
-
-usage if ($#ARGV < 0 || $#ARGV > 1);
-if ($> == 0) { $mode = "allonly"; }
-else { $mode = "all"; }
-
-$opt = $ARGV[0];
-if ($opt eq "--") { shift; }
-elsif ($opt eq "-a") { $mode = "all"; shift; }
-elsif ($opt eq "-n") { $mode = "nonroot"; shift; }
-elsif ($opt eq "-r" ) { $mode = "allonly"; shift; }
-elsif ($opt =~ m/^-/ || $#ARGV > 0) { usage(); }
-
-$pattern = $ARGV[0];
-usage() if ($pattern eq "");
-
-open FH, "<$RC" or die "zg: Could not open $RC: $!\n";
-while ($line = <FH>) {
- chomp $line;
- if ($line =~ m/^#:grep:marker:for:mika:/) { $markerfound = 1; next; }
- next if ($mode eq "nonroot" && markerfound == 0);
- break if ($mode eq "allonly" && markerfound == 1);
- print $line, "\n" if ($line =~ /$pattern/);
-}
-close FH;
-exit 0;
-
- ' -- "$@"
- return $?
-}
-
ssl_hashes=( sha512 sha256 sha1 md5 )
for sh in ${ssl_hashes}; do
# load the lookup subsystem if it's available on the system
zrcautoload lookupinit && lookupinit
-#:grep:marker:for:mika: :-)
### non-root (EUID != 0) code below
###
# useful functions
-# searching
-#f4# Search for newspostings from authors
-agoogle() { ${=BROWSER} "http://groups.google.com/groups?as_uauthors=$*" ; }
-#f4# Search Debian Bug Tracking System
-debbug() {
- emulate -L zsh
- setopt extendedglob
- if [[ $# -eq 1 ]]; then
- case "$1" in
- ([0-9]##)
- ${=BROWSER} "http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=$1"
- ;;
- (*@*)
- ${=BROWSER} "http://bugs.debian.org/cgi-bin/pkgreport.cgi?submitter=$1"
- ;;
- (*)
- ${=BROWSER} "http://bugs.debian.org/$*"
- ;;
- esac
- else
- print "$0 needs one argument"
- return 1
- fi
-}
-#f4# Search Debian Bug Tracking System in mbox format
-debbugm() {
- emulate -L zsh
- bts show --mbox $1
-}
-#f4# Search DMOZ
-dmoz() {
- emulate -L zsh
- ${=BROWSER} http://search.dmoz.org/cgi-bin/search\?search=${1// /_}
-}
-#f4# Search German Wiktionary
-dwicti() {
- emulate -L zsh
- ${=BROWSER} http://de.wiktionary.org/wiki/${(C)1// /_}
-}
-#f4# Search English Wiktionary
-ewicti() {
- emulate -L zsh
- ${=BROWSER} http://en.wiktionary.org/wiki/${(C)1// /_}
-}
-#f4# Search Google Groups
-ggogle() {
- emulate -L zsh
- ${=BROWSER} "http://groups.google.com/groups?q=$*"
-}
-#f4# Search Google
-google() {
- emulate -L zsh
- ${=BROWSER} "http://www.google.com/search?&num=100&q=$*"
-}
-#f4# Search Google Groups for MsgID
-mggogle() {
- emulate -L zsh
- ${=BROWSER} "http://groups.google.com/groups?selm=$*"
-}
-#f4# Search Netcraft
-netcraft(){
- emulate -L zsh
- ${=BROWSER} "http://toolbar.netcraft.com/site_report?url=$1"
-}
-#f4# Use German Wikipedia's full text search
-swiki() {
- emulate -L zsh
- ${=BROWSER} http://de.wikipedia.org/wiki/Spezial:Search/${(C)1}
-}
-#f4# search \kbd{dict.leo.org}
-oleo() {
- emulate -L zsh
- ${=BROWSER} "http://dict.leo.org/?search=$*"
-}
-#f4# Search German Wikipedia
-wikide() {
- emulate -L zsh
- ${=BROWSER} http://de.wikipedia.org/wiki/"${(C)*}"
-}
-#f4# Search English Wikipedia
-wikien() {
- emulate -L zsh
- ${=BROWSER} http://en.wikipedia.org/wiki/"${(C)*}"
-}
-#f4# Search official debs
-wodeb() {
- emulate -L zsh
- ${=BROWSER} "http://packages.debian.org/search?keywords=$1&searchon=contents&suite=${2:=unstable}§ion=all"
-}
-
-#m# f4 gex() Exact search via Google
-check_com google && gex () {
- google "\"[ $1]\" $*"
-}
-
-# misc
#f5# Backup \kbd{file {\rm to} file\_timestamp}
bk() {
emulate -L zsh
cp -b $1 $1_`date --iso-8601=m`
}
-#f5# Copied diff
-cdiff() {
- emulate -L zsh
- diff -crd "$@" | egrep -v "^Only in |^Binary files "
-}
+
#f5# cd to directoy and list files
cl() {
emulate -L zsh
cd $1 && ls -a
}
-#f5# Cvs add
-cvsa() {
- emulate -L zsh
- cvs add $* && cvs com -m 'initial checkin' $*
-}
-#f5# Cvs diff
-cvsd() {
- emulate -L zsh
- cvs diff -N $* |& $PAGER
-}
-#f5# Cvs log
-cvsl() {
- emulate -L zsh
- cvs log $* |& $PAGER
-}
-#f5# Cvs update
-cvsq() {
- emulate -L zsh
- cvs -nq update
-}
-#f5# Rcs2log
-cvsr() {
- emulate -L zsh
- rcs2log $* | $PAGER
-}
-#f5# Cvs status
-cvss() {
- emulate -L zsh
- cvs status -v $*
-}
-#f5# Disassemble source files using gcc and as
-disassemble(){
- emulate -L zsh
- gcc -pipe -S -o - -O -g $* | as -aldh -o /dev/null
-}
-#f5# Firefox remote control - open given URL
-fir() {
- if [ -e /etc/debian_version ]; then
- firefox -a iceweasel -remote "openURL($1)" || firefox ${1}&
- else
- firefox -a firefox -remote "openURL($1)" || firefox ${1}&
- fi
-}
+
# smart cd function, allows switching to /etc when running 'cd /etc/fstab'
cd() {
if (( ${#argv} == 1 )) && [[ -f ${1} ]]; then
}
#f5# Create Directoy and \kbd{cd} to it
-mcd() {
+mkcd() {
mkdir -p "$@" && cd "$@"
}
+
#f5# Create temporary directory and \kbd{cd} to it
cdt() {
local t
echo "$t"
builtin cd "$t"
}
-#f5# Unified diff to timestamped outputfile
-mdiff() {
- diff -udrP "$1" "$2" > diff.`date "+%Y-%m-%d"`."$1"
-}
#f5# Create directory under cursor or the selected area
# Press ctrl-xM to create the directory under the cursor or the selected area.
#k# mkdir -p <dir> from string under cursor or marked area
zle -N inplaceMkDirs && bindkey '^XM' inplaceMkDirs
-# Function Usage: doc packagename
-#f5# \kbd{cd} to /usr/share/doc/\textit{package}
-doc() {
- emulate -L zsh
- cd /usr/share/doc/$1 && ls
-}
-_doc() { _files -W /usr/share/doc -/ }
-check_com compdef && compdef _doc doc
-
-#f5# Make screenshot
-sshot() {
- [[ ! -d ~/shots ]] && mkdir ~/shots
- #cd ~/shots ; sleep 5 ; import -window root -depth 8 -quality 80 `date "+%Y-%m-%d--%H:%M:%S"`.png
- cd ~/shots ; sleep 5; import -window root shot_`date --iso-8601=m`.jpg
-}
-
#f5# List files which have been accessed within the last {\it n} days, {\it n} defaults to 1
accessed() {
emulate -L zsh
fi # end of check whether we have the 'hg'-executable
-# some useful commands often hard to remember - let's grep for them
-# actually use our zg() function now. :)
-
-# Work around ion/xterm resize bug.
-#if [[ "$SHLVL" -eq 1 ]]; then
-# if check_com -c resize ; then
-# eval `resize </dev/null`
-# fi
-#fi
-
-# enable jackd:
-# /usr/bin/jackd -dalsa -dhw:0 -r48000 -p1024 -n2
-# now play audio file:
-# alsaplayer -o jack foobar.mp3
-
-# send files via netcat
-# on sending side:
-# send() {j=$*; tar cpz ${j/%${!#}/}|nc -w 1 ${!#} 51330;}
-# send dir* $HOST
-# alias receive='nc -vlp 51330 | tar xzvp'
-
-# debian stuff:
-# dh_make -e foo@localhost -f $1
-# dpkg-buildpackage -rfakeroot
-# lintian *.deb
-# dpkg-scanpackages ./ /dev/null | gzip > Packages.gz
-# dpkg-scansources . | gzip > Sources.gz
-# grep-dctrl --field Maintainer $* /var/lib/apt/lists/*
-
-# other stuff:
-# convert -geometry 200x200 -interlace LINE -verbose
-# ldapsearch -x -b "OU=Bedienstete,O=tug" -h ldap.tugraz.at sn=$1
-# ps -ao user,pcpu,start,command
-# gpg --keyserver blackhole.pca.dfn.de --recv-keys
-# xterm -bg black -fg yellow -fn -misc-fixed-medium-r-normal--14-140-75-75-c-90-iso8859-15 -ah
-# nc -vz $1 1-1024 # portscan via netcat
-# wget --mirror --no-parent --convert-links
-# pal -d `date +%d`
-# autoload -U tetris; zle -N tetris; bindkey '...' ; echo "press ... for playing tennis"
-#
-# modify console cursor
-# see http://www.tldp.org/HOWTO/Framebuffer-HOWTO-5.html
-# print $'\e[?96;0;64c'
-
# grml-small cleanups
# The following is used to remove zsh-config-items that do not work