# Authors: grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
# Bug-Reports: see http://grml.org/bugs/
# License: This file is licensed under the GPL v2.
-# Latest change: Son Dez 09 22:58:07 CET 2007 [mika]
################################################################################
# source ~/.zshrc.global {{{
if [[ -z "$ZSHRC_GLOBAL_HAS_BEEN_READ" ]] ; then
print 'Warning: global zsh config has not been read.' >&2
print ' prepare for possible errors!' >&2
+ print '' >&2
+ print 'See our refcard for info on how to get the complete configuration:' >&2
+ print ' <http://grml.org/zsh/grml-zsh-refcard.pdf>' >&2
fi
# }}}
# completion system {{{
# just make sure it is loaded in this file too
+# TODO: is this *really* needed? compsys should be run in the global zshrc already.
check_com compinit || { autoload -U compinit && compinit }
# }}}
check_com isgrmlsmall || function isgrmlsmall () { return 1 }
# }}}
-## variables {{{
+# variables {{{
# do you want grmlsmall-specific adjustments?
GRMLSMALL_SPECIFIC=1
check_com -c w3m && export BROWSER=w3m
fi
fi
-#v#
-(( ${+PAGER} )) || export PAGER="less"
#m# v QTDIR \kbd{/usr/share/qt[34]}\quad [for non-root only]
[[ -d /usr/share/qt3 ]] && export QTDIR=/usr/share/qt3
[[ -f /usr/share/classpath/glibj.zip ]] && export JIKESPATH=/usr/share/classpath/glibj.zip
# }}}
-## set options {{{
+# set options {{{
# Allow comments even in interactive shells i. e.
# $ uname # This command prints system informations
# alias -g V='| vim -'
# }}}
-## aliases {{{
+# aliases {{{
# Xterm resizing-fu.
# Based on http://svn.kitenet.net/trunk/home-full/.zshrc?rev=11710&view=log (by Joey Hess)
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'
fi
# }}}
-## useful functions {{{
+# useful functions {{{
# searching
#f4# Search for newspostings from authors
agoogle() { ${=BROWSER} "http://groups.google.com/groups?as_uauthors=$*" ; }
-#f4# Search Debian Bug Tracking System by BugID in mbox format
-debbug() {
+#f4# Search Debian Bug Tracking System
+debbug() {
setopt localoptions extendedglob
if [[ $# -eq 1 ]]; then
case "$1" in
return 1
fi
}
-#f4# Search Debian Bug Tracking System
+#f4# Search Debian Bug Tracking System in mbox format
debbugm() { bts show --mbox $1 } # provide bugnummer as "$1"
#f4# Search DMOZ
dmoz() { ${=BROWSER} http://search.dmoz.org/cgi-bin/search\?search=${1// /_} }
fi
}
+# Function Usage: uopen $URL/$file
+#f5# Download a file and display it locally
+uopen() {
+ 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}
*.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
fi
}
-# TODO: isn't ssl() like this, but clean?
-# I'd like to remove this, it's a gross hack, IMHO -ft
-#f5# Follow symlinks
-folsym() {
- if [[ -e $1 || -h $1 ]] ; then
- file=$1
- else
- file=`which $1`
- fi
- if [[ -e $file || -L $file ]] ; then
- if [[ -L $file ]] ; then
- echo `ls -ld $file | perl -ane 'print $F[7]'` '->'
- folsym `perl -le '$file = $ARGV[0];
- $dest = readlink $file;
- if ($dest !~ m{^/}) {
- $file =~ s{(/?)[^/]*$}{$1$dest};
- } else {
- $file = $dest;
- }
- $file =~ s{/{2,}}{/}g;
- while ($file =~ s{[^/]+/\.\./}{}) {
- ;
- }
- $file =~ s{^(/\.\.)+}{};
- print $file' $file`
- else
- ls -d $file
- fi
- else
- echo $file
- 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() { man $* | col -b | view -c 'set ft=man nomod nolist' - }
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
+}
+
# suidfind() { ls -latg $path | grep '^...s' }
#f5# Find all files in \$PATH with setuid bit set
suidfind() { ls -latg $path/*(sN) }
getgizmo() {
setopt local_options
setopt errreturn
- echo "gconf2-common and libgconf2-4 have to be available. Installing therefor."
+ echo "libgtk2.0-0, gconf2, libstdc++6, libasound2 and zlib1g have to be available. Installing."
$SUDO apt-get update
- $SUDO apt-get install gconf2-common libgconf2-4
- wget $(lynx --dump http://www.gizmoproject.com/download-linux.html | awk '/\.deb/ {print $2" "}' | tr -d '\n')
- $SUDO dpkg -i libsipphoneapi*.deb bonjour_*.deb gizmo-*.deb && echo "gizmo installed."
+ $SUDO apt-get install libgtk2.0-0 gconf2 libstdc++6 libasound2 zlib1g
+ wget "$(lynx --dump http://gizmo5.com/pc/download/linux/ | awk '/libstdc\+\+6.*\.deb/ {print $2}')"
+ $SUDO dpkg -i gizmo-project*.deb && echo "gizmo installed."
}
#f5# Get and run AIR (Automated Image and Restore)
}
#f5# Get specific git diff
-git-get-plaindiff() {
+git-get-plaindiff () {
if [[ -z $GITTREE ]] ; then
- GITTREE='linux/kernel/git/torvalds/linux-2.6.git'
+ GITTREE='linux/kernel/git/torvalds/linux-2.6.git'
fi
- if ! [[ -z $1 ]] ; then
- wget "http://kernel.org/git/?p=$GITTREE;a=commitdiff_plain;h=$1" -O $1.diff
+ if [[ -z $1 ]] ; then
+ echo 'Usage: git-get-plaindiff '
else
- echo 'Usage: git-get-plaindiff '
+ echo -n "Downloading $1.diff ... "
+ # avoid "generating ..." stuff from kernel.org server:
+ wget --quiet "http://kernel.org/git/?p=$GITTREE;a=commitdiff_plain;h=$1" -O /dev/null
+ wget --quiet "http://kernel.org/git/?p=$GITTREE;a=commitdiff_plain;h=$1" -O $1.diff \
+ && echo done || echo failed
fi
}
+
# http://strcat.de/blog/index.php?/archives/335-Software-sauber-deinstallieren...html
#f5# Log 'make install' output
mmake() {
| sed 's/value=//;s/"//g'
}
+#f2# Print a specific line of file(s).
+linenr () {
+# {{{
+ if [ $# -lt 2 ] ; then
+ print "Usage: linenr <number>[,<number>] <file>" ; return 1
+ elif [ $# -eq 2 ] ; then
+ local number=$1
+ local file=$2
+ command ed -s $file <<< "${number}n"
+ else
+ local number=$1
+ shift
+ for file in "$@" ; do
+ if [ ! -d $file ] ; then
+ echo "${file}:"
+ command ed -s $file <<< "${number}n" 2> /dev/null
+ else
+ continue
+ fi
+ done | less
+ fi
+# }}}
+}
+
+#f2# Find history events by search pattern and list them by date.
+whatwhen() {
+# {{{
+ local usage help ident format_l format_s first_char remain first last
+ usage='USAGE: whatwhen [options] <searchstring> <search range>'
+ help='Use' \`'whatwhen -h'\'' for further explanations.'
+ ident=${(l,${#${:-Usage: }},, ,)}
+ format_l="${ident}%s\t\t\t%s\n"
+ format_s="${format_l//(\\t)##/\\t}"
+ # Make the first char of the word to search for case
+ # insensitive; e.g. [aA]
+ first_char=[${(L)1[1]}${(U)1[1]}]
+ remain=${1[2,-1]}
+ # Default search range is `-100'.
+ first=${2:-\-100}
+ # Optional, just used for `<first> <last>' given.
+ last=$3
+ case $1 in
+ ("")
+ printf '%s\n\n' 'ERROR: No search string specified. Aborting.'
+ printf '%s\n%s\n\n' ${usage} ${help} && return 1
+ ;;
+ (-h)
+ printf '%s\n\n' ${usage}
+ print 'OPTIONS:'
+ printf $format_l '-h' 'show help text'
+ print '\f'
+ print 'SEARCH RANGE:'
+ printf $format_l "'0'" 'the whole history,'
+ printf $format_l '-<n>' 'offset to the current history number; (default: -100)'
+ printf $format_s '<[-]first> [<last>]' 'just searching within a give range'
+ printf '\n%s\n' 'EXAMPLES:'
+ printf ${format_l/(\\t)/} 'whatwhen grml' '# Range is set to -100 by default.'
+ printf $format_l 'whatwhen zsh -250'
+ printf $format_l 'whatwhen foo 1 99'
+ ;;
+ (\?)
+ printf '%s\n%s\n\n' ${usage} ${help} && return 1
+ ;;
+ (*)
+ # -l list results on stout rather than invoking $EDITOR.
+ # -i Print dates as in YYYY-MM-DD.
+ # -m Search for a - quoted - pattern within the history.
+ fc -li -m "*${first_char}${remain}*" $first $last
+ ;;
+ esac
+# }}}
+}
+
# change fluxbox keys from 'Alt-#' to 'Alt-F#' and vice versa
fluxkey-change() {
[[ -n "$FLUXKEYS" ]] || local FLUXKEYS="$HOME/.fluxbox/keys"
weather() {
[[ -n "$1" ]] || {
print 'Usage: weather <station_id>' >&2
+ print 'List of stations: http://en.wikipedia.org/wiki/List_of_airports_by_ICAO_code'>&2
return 1
}
return 1
fi
}
-
-
# }}}
# mercurial related stuff {{{
# modifications in ~/.zshrc.local
xsource "${HOME}/.zshrc.local"
-# ...and remove utility functions again.
-xunfunction
-
# }}}
### doc strings for external functions from files