- if [[ -z $1 ]] ; then
- printf 'usage: ssl-cert-fingerprints <file>\n'
- return 1
- fi
- for i in ${ssl_hashes}
- do ssl-cert-$i $1;
- done
-}
-
-ssl-cert-info() {
- emulate -L zsh
- if [[ -z $1 ]] ; then
- printf 'usage: ssl-cert-info <file>\n'
- return 1
- fi
- openssl x509 -noout -text -in $1
- ssl-cert-fingerprints $1
-}
-
-# }}}
-
-# {{{ make sure our environment is clean regarding colors
-for color in BLUE RED GREEN CYAN YELLOW MAGENTA WHITE ; unset $color
-# }}}
-
-# "persistent history" {{{
-# just write important commands you always need to ~/.important_commands
-if [[ -r ~/.important_commands ]] ; then
- fc -R ~/.important_commands
-fi
-# }}}
-
-#:grep:marker:for:mika: :-)
-### non-root (EUID != 0) code below
-###
-
-if (( GRML_ALWAYS_LOAD_ALL == 0 )) && (( $EUID == 0 )) ; then
- zrclocal
- return 0
-fi
-
-
-# variables {{{
-
-# set terminal property (used e.g. by msgid-chooser)
-export COLORTERM="yes"
-
-# set default browser
-if [[ -z "$BROWSER" ]] ; then
- if [[ -n "$DISPLAY" ]] ; then
- #v# If X11 is running
- check_com -c firefox && export BROWSER=firefox
- else
- #v# If no X11 is running
- check_com -c w3m && export BROWSER=w3m
- fi
-fi
-
-#m# v QTDIR \kbd{/usr/share/qt[34]}\quad [for non-root only]
-[[ -d /usr/share/qt3 ]] && export QTDIR=/usr/share/qt3
-[[ -d /usr/share/qt4 ]] && export QTDIR=/usr/share/qt4
-
-# support running 'jikes *.java && jamvm HelloWorld' OOTB:
-#v# [for non-root only]
-[[ -f /usr/share/classpath/glibj.zip ]] && export JIKESPATH=/usr/share/classpath/glibj.zip
-# }}}
-
-# aliases {{{
-
-# Xterm resizing-fu.
-# Based on http://svn.kitenet.net/trunk/home-full/.zshrc?rev=11710&view=log (by Joey Hess)
-alias hide='echo -en "\033]50;nil2\007"'
-alias tiny='echo -en "\033]50;-misc-fixed-medium-r-normal-*-*-80-*-*-c-*-iso8859-15\007"'
-alias small='echo -en "\033]50;6x10\007"'
-alias medium='echo -en "\033]50;-misc-fixed-medium-r-normal--13-120-75-75-c-80-iso8859-15\007"'
-alias default='echo -e "\033]50;-misc-fixed-medium-r-normal-*-*-140-*-*-c-*-iso8859-15\007"'
-alias large='echo -en "\033]50;-misc-fixed-medium-r-normal-*-*-150-*-*-c-*-iso8859-15\007"'
-alias huge='echo -en "\033]50;-misc-fixed-medium-r-normal-*-*-210-*-*-c-*-iso8859-15\007"'
-alias smartfont='echo -en "\033]50;-artwiz-smoothansi-*-*-*-*-*-*-*-*-*-*-*-*\007"'
-alias semifont='echo -en "\033]50;-misc-fixed-medium-r-semicondensed-*-*-120-*-*-*-*-iso8859-15\007"'
-
-# general
-#a2# Execute \kbd{du -sch}
-alias da='du -sch'
-#a2# Execute \kbd{jobs -l}
-alias j='jobs -l'
-
-# compile stuff
-#a2# Execute \kbd{./configure}
-alias CO="./configure"
-#a2# Execute \kbd{./configure --help}
-alias CH="./configure --help"
-
-# listing stuff
-#a2# Execute \kbd{ls -lSrah}
-alias dir="ls -lSrah"
-#a2# Only show dot-directories
-alias lad='ls -d .*(/)' # only show dot-directories
-#a2# Only show dot-files
-alias lsa='ls -a .*(.)' # only show dot-files
-#a2# Only files with setgid/setuid/sticky flag
-alias lss='ls -l *(s,S,t)' # only files with setgid/setuid/sticky flag
-#a2# Only show 1st ten symlinks
-alias lsl='ls -l *(@)' # only symlinks
-#a2# Display only executables
-alias lsx='ls -l *(*)' # only executables
-#a2# Display world-{readable,writable,executable} files
-alias lsw='ls -ld *(R,W,X.^ND/)' # world-{readable,writable,executable} files
-#a2# Display the ten biggest files
-alias lsbig="ls -flh *(.OL[1,10])" # display the biggest files
-#a2# Only show directories
-alias lsd='ls -d *(/)' # only show directories
-#a2# Only show empty directories
-alias lse='ls -d *(/^F)' # only show empty directories
-#a2# Display the ten newest files
-alias lsnew="ls -rl *(D.om[1,10])" # display the newest files
-#a2# Display the ten oldest files
-alias lsold="ls -rtlh *(D.om[1,10])" # display the oldest files
-#a2# Display the ten smallest files
-alias lssmall="ls -Srl *(.oL[1,10])" # display the smallest files
-
-# chmod
-#a2# Execute \kbd{chmod 600}
-alias rw-='chmod 600'
-#a2# Execute \kbd{chmod 700}
-alias rwx='chmod 700'
-#m# a2 r-{}- Execute \kbd{chmod 644}
-alias r--='chmod 644'
-#a2# Execute \kbd{chmod 755}
-alias r-x='chmod 755'
-
-# some useful aliases
-#a2# Execute \kbd{mkdir -o}
-alias md='mkdir -p'
-
-# console stuff
-#a2# Execute \kbd{mplayer -vo fbdev}
-alias cmplayer='mplayer -vo fbdev'
-#a2# Execute \kbd{mplayer -vo fbdev -fs -zoom}
-alias fbmplayer='mplayer -vo fbdev -fs -zoom'
-#a2# Execute \kbd{links2 -driver fb}
-alias fblinks='links2 -driver fb'
-
-#a2# ssh with StrictHostKeyChecking=no \\&\quad and UserKnownHostsFile unset
-alias insecssh='ssh -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null"'
-alias insecscp='scp -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null"'
-
-# simple webserver
-check_com -c python && alias http="python -m SimpleHTTPServer"
-
-# Use 'g' instead of 'git':
-check_com g || alias g='git'
-
-# work around non utf8 capable software in utf environment via $LANG and luit
-if check_com isutfenv && check_com luit ; then
- if check_com -c mrxvt ; then
- isutfenv && [[ -n "$LANG" ]] && \
- alias mrxvt="LANG=${LANG/(#b)(*)[.@]*/$match[1].iso885915} luit mrxvt"
- fi
-
- if check_com -c aterm ; then
- isutfenv && [[ -n "$LANG" ]] && \
- alias aterm="LANG=${LANG/(#b)(*)[.@]*/$match[1].iso885915} luit aterm"
- fi
-
- if check_com -c centericq ; then
- isutfenv && [[ -n "$LANG" ]] && \
- alias centericq="LANG=${LANG/(#b)(*)[.@]*/$match[1].iso885915} luit centericq"
- fi
-fi
-# }}}
-
-# 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
-}
-#f5# Create Directoy and \kbd{cd} to it
-mcd() {
- mkdir -p "$@" && cd "$@"
-}
-#f5# Unified diff to timestamped outputfile
-mdiff() {
- diff -udrP "$1" "$2" > diff.`date "+%Y-%m-%d"`."$1"
-}
-#f5# Memory overview
-memusage() {
- ps aux | awk '{if (NR > 1) print $5; if (NR > 2) print "+"} END { print "p" }' | dc
-}
-#f5# Show contents of gzipped tar file
-shtar() {
- emulate -L zsh
- gunzip -c $1 | tar -tf - -- | $PAGER
-}
-#f5# Show contents of zip file
-shzip() {
- emulate -L zsh
- unzip -l $1 | $PAGER
-}
-#f5# Unified diff
-udiff() {
- emulate -L zsh
- diff -urd $* | egrep -v "^Only in |^Binary files "
-}
-#f5# (Mis)use \kbd{vim} as \kbd{less}
-viless() {
- emulate -L zsh
- vim --cmd 'let no_plugin_maps = 1' -c "so \$VIMRUNTIME/macros/less.vim" "${@:--}"
-}
-
-# Function Usage: uopen $URL/$file
-#f5# Download a file and display it locally
-uopen() {
- emulate -L zsh
- if ! [[ -n "$1" ]] ; then
- print "Usage: uopen \$URL/\$file">&2
- return 1
- else
- FILE=$1
- MIME=$(curl --head $FILE | grep Content-Type | cut -d ' ' -f 2 | cut -d\; -f 1)
- MIME=${MIME%$'\r'}
- curl $FILE | see ${MIME}:-
- fi
-}
-
-# 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
-}
-
-# list images only
-limg() {
- local -a images
- images=( *.{jpg,gif,png}(.N) )
-
- if [[ $#images -eq 0 ]] ; then
- print "No image files found"
- else
- ls "$images[@]"
- fi
-}
-
-#f5# Create PDF file from source code
-makereadable() {
- emulate -L zsh
- output=$1
- shift
- a2ps --medium A4dj -E -o $output $*
- ps2pdf $output
-}
-
-# zsh with perl-regex - use it e.g. via:
-# regcheck '\s\d\.\d{3}\.\d{3} Euro' ' 1.000.000 Euro'
-#f5# Checks whether a regex matches or not.\\&\quad Example: \kbd{regcheck '.\{3\} EUR' '500 EUR'}
-regcheck() {
- emulate -L zsh
- zmodload -i zsh/pcre
- pcre_compile $1 && \
- pcre_match $2 && echo "regex matches" || echo "regex does not match"
-}
-
-#f5# List files which have been modified within the last {\it n} days
-new() {
- emulate -L zsh
- print -l *(m-$1)
-}
-
-#f5# Grep in history
-greph() {
- emulate -L zsh
- history 0 | grep $1
-}
-# use colors when GNU grep with color-support
-#a2# Execute \kbd{grep -{}-color=auto}
-(grep --help 2>/dev/null |grep -- --color) >/dev/null && alias grep='grep --color=auto'
-#a2# Execute \kbd{grep -i -{}-color=auto}
-alias GREP='grep -i --color=auto'
-
-#f5# Watch manpages in a stretched style
-man2() { PAGER='dash -c "sed G | /usr/bin/less"' command man "$@" ; }
-
-# d():Copyright 2005 Nikolai Weibull <nikolai@bitwi.se>
-# note: option AUTO_PUSHD has to be set
-#f5# Jump between directories
-d() {
- emulate -L zsh
- autoload -U colors
- local color=$fg_bold[blue]
- integer i=0
- dirs -p | while read dir; do
- local num="${$(printf "%-4d " $i)/ /.}"
- printf " %s $color%s$reset_color\n" $num $dir
- (( i++ ))
- done
- integer dir=-1
- read -r 'dir?Jump to directory: ' || return
- (( dir == -1 )) && return
- if (( dir < 0 || dir >= i )); then
- echo d: no such directory stack entry: $dir
- return 1
- fi
- cd ~$dir
-}
-
-# usage example: 'lcheck strcpy'
-#f5# Find out which libs define a symbol
-lcheck() {
- if [[ -n "$1" ]] ; then
- nm -go /usr/lib/lib*.a 2>/dev/null | grep ":[[:xdigit:]]\{8\} . .*$1"
- else
- echo "Usage: lcheck <function>" >&2
- fi
-}
-
-#f5# Clean up directory - remove well known tempfiles
-purge() {
- FILES=(*~(N) .*~(N) \#*\#(N) *.o(N) a.out(N) *.core(N) *.cmo(N) *.cmi(N) .*.swp(N))
- NBFILES=${#FILES}
- if [[ $NBFILES > 0 ]] ; then
- print $FILES
- local ans
- echo -n "Remove these files? [y/n] "
- read -q ans
- if [[ $ans == "y" ]] ; then
- rm ${FILES}
- echo ">> $PWD purged, $NBFILES files removed"
- else
- echo "Ok. .. then not.."
- fi
- fi
-}
-
-# Translate DE<=>EN
-# 'translate' looks up fot a word in a file with language-to-language
-# translations (field separator should be " : "). A typical wordlist looks
-# like at follows:
-# | english-word : german-transmission
-# It's also only possible to translate english to german but not reciprocal.
-# Use the following oneliner to turn back the sort order:
-# $ awk -F ':' '{ print $2" : "$1" "$3 }' \
-# /usr/local/lib/words/en-de.ISO-8859-1.vok > ~/.translate/de-en.ISO-8859-1.vok
-#f5# Translates a word
-trans() {
- emulate -L zsh
- case "$1" in
- -[dD]*)
- translate -l de-en $2
- ;;
- -[eE]*)
- translate -l en-de $2
- ;;
- *)
- echo "Usage: $0 { -D | -E }"
- echo " -D == German to English"
- echo " -E == English to German"
- esac
-}
-
-#f5# List all occurrences of programm in current PATH
-plap() {
- emulate -L zsh
- if [[ $# = 0 ]] ; then
- echo "Usage: $0 program"
- echo "Example: $0 zsh"
- echo "Lists all occurrences of program in the current PATH."
- else
- ls -l ${^path}/*$1*(*N)
- fi
-}
-
-# Found in the mailinglistarchive from Zsh (IIRC ~1996)
-#f5# Select items for specific command(s) from history
-selhist() {
- emulate -L zsh
- local TAB=$'\t';
- (( $# < 1 )) && {
- echo "Usage: $0 command"
- return 1
- };
- cmd=(${(f)"$(grep -w $1 $HISTFILE | sort | uniq | pr -tn)"})
- print -l $cmd | less -F
- echo -n "enter number of desired command [1 - $(( ${#cmd[@]} - 1 ))]: "
- local answer
- read answer
- print -z "${cmd[$answer]#*$TAB}"
-}
-
-# Use vim to convert plaintext to HTML
-#f5# Transform files to html with highlighting
-2html() {
- emulate -L zsh
- vim -u NONE -n -c ':syntax on' -c ':so $VIMRUNTIME/syntax/2html.vim' -c ':wqa' $1 &>/dev/null
-}
-
-# Usage: simple-extract <file>
-#f5# Smart archive extractor
-simple-extract () {
- emulate -L zsh
- if [[ -f $1 ]] ; then
- case $1 in
- *.tar.bz2) bzip2 -v -d $1 ;;
- *.tar.gz) tar -xvzf $1 ;;
- *.rar) unrar $1 ;;
- *.deb) ar -x $1 ;;
- *.bz2) bzip2 -d $1 ;;
- *.lzh) lha x $1 ;;
- *.gz) gunzip -d $1 ;;
- *.tar) tar -xvf $1 ;;
- *.tgz) gunzip -d $1 ;;
- *.tbz2) tar -jxvf $1 ;;
- *.zip) unzip $1 ;;
- *.Z) uncompress $1 ;;
- *) echo "'$1' Error. Please go away" ;;
- esac
- else
- echo "'$1' is not a valid file"
- fi
-}
-
-# Usage: smartcompress <file> (<type>)
-#f5# Smart archive creator
-smartcompress() {
- emulate -L zsh
- if [[ -n $2 ]] ; then
- case $2 in
- tgz | tar.gz) tar -zcvf$1.$2 $1 ;;
- tbz2 | tar.bz2) tar -jcvf$1.$2 $1 ;;
- tar.Z) tar -Zcvf$1.$2 $1 ;;
- tar) tar -cvf$1.$2 $1 ;;
- gz | gzip) gzip $1 ;;
- bz2 | bzip2) bzip2 $1 ;;
- *)
- echo "Error: $2 is not a valid compression type"
- ;;
- esac
- else
- smartcompress $1 tar.gz
- fi
-}
-
-# Usage: show-archive <archive>
-#f5# List an archive's content
-show-archive() {
- emulate -L zsh
- if [[ -f $1 ]] ; then
- case $1 in
- *.tar.gz) gunzip -c $1 | tar -tf - -- ;;
- *.tar) tar -tf $1 ;;
- *.tgz) tar -ztf $1 ;;
- *.zip) unzip -l $1 ;;
- *.bz2) bzless $1 ;;
- *.deb) dpkg-deb --fsys-tarfile $1 | tar -tf - -- ;;
- *) echo "'$1' Error. Please go away" ;;
- esac
- else
- echo "'$1' is not a valid archive"
- fi
-}
-
-# It's shameless stolen from <http://www.vim.org/tips/tip.php?tip_id=167>
-#f5# Use \kbd{vim} as your manpage reader
-vman() {
- emulate -L zsh
- man $* | col -b | view -c 'set ft=man nomod nolist' -
-}
-
-# function readme() { $PAGER -- (#ia3)readme* }
-#f5# View all README-like files in current directory in pager
-readme() {
- emulate -L zsh
- local files
- files=(./(#i)*(read*me|lue*m(in|)ut)*(ND))
- if (($#files)) ; then
- $PAGER $files
- else
- print 'No README files.'
- fi
-}
-
-# function ansi-colors()
-#f5# Display ANSI colors
-ansi-colors() {
- typeset esc="\033[" line1 line2
- echo " _ _ _40 _ _ _41_ _ _ _42 _ _ 43_ _ _ 44_ _ _45 _ _ _ 46_ _ _ 47_ _ _ 49_ _"
- for fore in 30 31 32 33 34 35 36 37; do
- line1="$fore "
- line2=" "
- for back in 40 41 42 43 44 45 46 47 49; do
- line1="${line1}${esc}${back};${fore}m Normal ${esc}0m"
- line2="${line2}${esc}${back};${fore};1m Bold ${esc}0m"
- done
- echo -e "$line1\n$line2"
- done
-}
-
-#f5# Find all files in \$PATH with setuid bit set
-suidfind() { ls -latg $path | grep '^...s' }
-
-# TODO: So, this is the third incarnation of this function!?
-#f5# Reload given functions
-refunc() {
- for func in $argv ; do
- unfunction $func
- autoload $func
- done
-}
-
-# a small check to see which DIR is located on which server/partition.
-# stolen and modified from Sven's zshrc.forall
-#f5# Report diskusage of a directory
-dirspace() {
- emulate -L zsh
- if [[ -n "$1" ]] ; then
- for dir in "$@" ; do
- if [[ -d "$dir" ]] ; then
- ( cd $dir; echo "-<$dir>"; du -shx .; echo);
- else
- echo "warning: $dir does not exist" >&2
- fi
- done
- else
- for dir in $path; do
- if [[ -d "$dir" ]] ; then
- ( cd $dir; echo "-<$dir>"; du -shx .; echo);
- else
- echo "warning: $dir does not exist" >&2
- fi
- done