GRMLZSHRC
-June, 2010
+July, 2011
%!target: man
%!postproc(man): "^(\.TH.*) 1 " "\1 5 "
= NAME =
-grmlzshrc - grml's zsh setup
+grmlzshrc - Grml's zsh setup
= SYNOPSIS =
= DESCRIPTION =
-The grml project provides a fairly exhaustive interactive setup (referred to
+The Grml project provides a fairly exhaustive interactive setup (referred to
as //grmlzshrc// throughout this document) for the amazing unix shell zsh
(http://zsh.sourceforge.net). This is the reference manual for that
setup.
//grmlzshrc// behaves differently depending on which user loads it. For the
root user (**EUID** == 0) only a subset of features is loaded by default. This
behaviour can be altered by setting the **GRML_ALWAYS_LOAD_ALL** STARTUP
-VARIABLE (see below). Also the umask(1) for the root user is set to 022,
-while for regular users it is set to 002. So read/write permissions
-for the regular user and her group are set for new files (keep that
-in mind on systems, where regular users share a common group).
+VARIABLE (see below).
+
+Users may want to keep an up-to-date version of the setup (possibly from the
+git-sources) in //~/.zshrc//. If that happens on a system where the global
+zshrc is also a //grmlzshrc// (but possibly an older one), you can inhibit
+loading the global version by doing:
+\
+```
+echo setopt no_global_rcs >> ~/.zshenv
+```
+
+Note, that this will disable //ANY// global files, except for the global
+zshenv file.
= STARTUP VARIABLES =
Some of the behaviour of //grmlzshrc// can be altered by setting certain shell
be found. The handler is defined by GRML_ZSH_CNF_HANDLER (see below).
: **GRML_ALWAYS_LOAD_ALL**
-Enables the whole grml setup for root, if set to a non zero value.
+Enables the whole Grml setup for root, if set to a non zero value.
: **GRML_ZSH_CNF_HANDLER**
This variable contains the handler to be used by COMMAND_NOT_FOUND (see above)
Where zsh saves the history. Default: ${HOME}/.zsh_history.
: **HISTSIZE**
-Number of commands to be kept in the history. On a grml-CD this defaults to
+Number of commands to be kept in the history. On a Grml-CD this defaults to
500, on a hard disk installation to 5000.
: **MAILCHECK**
than the defined number of seconds (default: 5).
: **SAVEHIST**
-Number of commands to be stored in ${HISTFILE}. Defaults to 1000 on a grml-CD
+Number of commands to be stored in ${HISTFILE}. Defaults to 1000 on a Grml-CD
and to 10000 on an installation on hard disk.
: **watch**
//grmlzshrc// sets some environment variables, which influence the
behaviour of applications.
-: **BROWSER**
-If X is running this is set to "firefox", otherwise to "w3m".
-
: **COLORTERM**
Set to "yes". Some applications read this to learn about properties
of the terminal they are running in.
If not already set, sets the default editor. Falls back to vi(1),
if vim(1) is not available.
+: **LESS_TERMCAP_***
+Some environment variables that add colour support to less(1) for viewing
+man pages. See termcap(5) for details.
+
: **MAIL**
The mailbox file for the current user is set to /var/mail/$USER, if not
already set otherwise.
: **CTRL-x-1**
Jump right after the first word.
+: **CTRL-x-M()**
+Create directory under cursor or the selected area.
+To select an area press ctrl-@ and use the cursor.
+Use case: you type "mv abc ~/testa/testb/testc/" and remember that the
+directory does not exist yet -> press **CTRL-xM** and problem solved.
+
: **CTRL-x-p**
Searches the last occurence of string before the cursor in the command history.
+: **CTRL-x-z**
+Display help on keybindings and zsh line editor. Press consecutively to page through content.
+
: **CTRL-z**
Brings a job, which got suspended with CTRL-z back to foreground.
Prints a colored table of available ansi color codes (to be used in escape
sequences) and the colors they represent.
+: **any()**
+Lists processes matching given pattern.
+
: **aoeu(), asdf(), uiae()**
Pressing the 'asdf' keys toggles between dvorak or neon and us keyboard
layout.
+: **apache2-ssl-certificate()**
+Advices the user how to create self signed certificates.
+
: **asc()**
Login on the host provided as argument using autossh. Then reattach a GNU screen
session if a detached session is around or detach a currently attached screen or
original name plus a time stamp attached. Symlinks and file attributes like mode,
ownership and timestamps are preserved.
-: **brltty()**
-The brltty(1) program provides a braille display, so a blind person can access
-the console screen. This wrapper function works around problems with some
-environments (f. e. utf8).
+: **cdiff()**
+Runs a recursive diff(1) over two given directories trying to find the
+smallest set of changes. Three lines of context will be printed and binary
+files filtered out.
: **cdrecord()**
If the original cdrecord is not installed, issues a warning to the user to
use the wodim binary instead. Wodim is the debian fork of Joerg Schillings
cdrecord.
+: **cdt()**
+Creates a temporary directory using mktemp. Then changes current
+working directory to it.
+
: **changed()**
Lists files in current directory, which have been changed within the
last N days. N is an integer to be passed as first and only argument.
Changes current directory to the one supplied by argument and lists the files
in it, including file names starting with ".".
-: **d()**
-Presents a numbered listing of the directory stack. Then changes current
-working directory to the one chosen by the user.
+: **cvsa()**
+Adds and commits the given files using cvs(1). The commit message will be
+'initial checkin'.
+
+: **cvsd()**
+Shows a cvs diff of the arguments in $PAGER.
+
+: **cvsl()**
+Shows the cvs log in $PAGER.
+
+: **cvsq()**
+Runs a cvs update.
+
+: **cvsr()**
+Generates a changelog using rcs2log and shows it in $PAGER.
+
+: **cvss()**
+Shows cvs status of given files.
+
+: **dchange()**
+Shows the changelog of given package in $PAGER.
: **debbug()**
Searches the Debian bug tracking system (bugs.debian.org) for Bug numbers,
Tells the user to use grml-debootstrap, if she wants to install debian to
harddisk.
+: **deswap()**
+A trick from $LINUX-KERNELSOURCE/Documentation/power/swsusp.txt. It brings
+back interactive responsiveness after suspend, when the system is swapping
+heavily.
+
: **dirspace()**
Shows the disk usage of the directories given in human readable format;
defaults to $path.
: **disassemble()**
Translates C source code to assembly and ouputs both.
+: **dmoz()**
+Searches for the first argument (optional) in the Open Directory Project
+(See http://www.dmoz.org/docs/en/about.html).
+
+: **dnews()**
+Shows the NEWS file for the given package in $PAGER.
+
: **doc()**
Takes packagename as argument. Sets current working directory to
/usr/share/doc/<packagename> and prints out a directory listing.
+: **dwicti()**
+Looks up the first argument (optional) in the german Wiktionary
+which is an online dictionary (See: http://de.wiktionary.org/).
+
+: **edalias()**
+Edit given alias.
+
+: **edfunc()**
+Edit given shell function.
+
+: **ewicti()**
+Looks up the first argument (optional in the english Wiktionary
+which is an online dictionary (See: http://en.wiktionary.org/).
+
: **exirename()**
Renames image files based on date/time informations in their exif headers.
from Alt-[0-9] to Alt-F[0-9] and vice versa by rewriting $HOME/.fluxbox/keys.
Requires the window manager to reread configuration to take effect.
+: **freload()**
+Reloads an autoloadable shell function (See autoload in zshbuiltins(1)).
+
: **genthumbs()**
A simple thumbnails generator. Resizes images (i. e. files that end in ".jpg",
".jpeg", ".gif" or ".png") to 100x200. Output files are named "thumb-<original
//Warning:// On start genthumbs() silently removes a possibly existing "index.html"
and all files and/or directories beginning with "thumb-" in current directory!
+: **get_tw_cli()**
+Fetches 3ware RAID controller software using get_3ware(1).
+
+: **gex()**
+Performs an exact (i. e. quoted) web search using Google.
+
+: **ggogle()**
+Searches the arguments on Google Groups, a web to USENET gateway.
+
+: **google()**
+Searches the search engine Google using arguments as search string.
+
: **greph()**
Searches the zsh command history for a regular expression.
Queries IMAP server (first parameter) for its capabilities. Takes
port number as optional second argument.
+: **ipv6-tunnel()**
+Sets up an IPv6 tunnel on interface sit1. Needs one argument -
+either "start", "stop" or "status".
+
: **is4()**
Returns true, if zsh version is equal or greater than 4, else false.
: **isutfenv()**
Returns true, if run within an utf environment, else false.
+: **iwclient()**
+Searches a wireless interface and runs dhclient(8) on it.
+
: **lcheck()**
Lists libraries that define the symbol containing the string given as
parameter.
Prints specified range of (numbered) lines of a file.
Usage: linenr <start>[,<end>] <file>
+: **lsdisk()**
+Uses udev's /dev/disk to list block devices with their LABEL, UUID and IDs.
+
: **makereadable()**
Creates a PostScript and a PDF file (basename as first argument) from
source code files.
: **man2()**
Displays manpage in a streched style.
+: **manzsh()**
+Shows the zshall manpage and jumps to the first match of the regular
+expression optionally given as argument (Needs qma(1)).
+
: **mcd()**
Creates directory including parent directories, if necessary. Then changes
current working directory to it.
: **memusage()**
Prints the summarized memory usage in bytes.
+: **mggogle()**
+Searches Google Groups for a USENET message-ID.
+
: **minimal-shell()**
Spawns a minimally set up MirBSD Korn shell. It references no files in /usr,
so that file system can be unmounted.
last N days. N is an integer to be passed as first and only argument.
If no argument is specified N is set to 1.
-: **ogg2mp3_192()**
-Recodes an ogg file to mp3 with a bitrate of 192.
+: **netcraft()**
+Asks netcraft.com for informations about the site given as argument.
+
+: **nt()**
+A helper function for the "e" glob qualifier to list all files newer
+than a reference file.
+\
+Example usages:
+```
+% NTREF=/reference/file
+% ls -l *(e:nt:)
+% # Inline:
+% ls -l *(e:'nt /reference/file':)
+```
+
+: **oleo()**
+Translates the given word using the english - german online
+dictionary dict.leo.org.
: **peval()**
Evaluates a perl expression; useful as command line
: **plap()**
Lists all occurrences of the string given as argument in current $PATH.
+: **profile()**
+Runs a command in $SHELL with profiling enabled (See startup variable
+ZSH_PROFILE_RC above).
+
: **purge()**
-Removes typical temporary files (i. e. files like "*~", ".*~", "#*#", "*.o",
-"a.out", "*.core", "*.cmo", "*.cmi" and ".*.swp") from current directory.
-Asks for confirmation.
+Removes temporary files from current directory. Asks for confirmation. Uses sudo if necessary.
+In detail it purges
+ - common temp files like "*~", ".*~", "#*#", "*.o", "a.out", "*.orig", "*.rej", "*.cmo", "*.cmi" and ".*.swp"
+ - core dumps
+ - debconf backup files: "*.dpkg-old", "*.dkpg-new", "*.dpkg-dist"
+ - gentoo dispatch-conf backups: ".cfg0000_*", ".mrg0000_*"
+ - precompiled python code ("*.pyc", "*.pyo") as long as matching "*.py" source is also present
+ - LaTeX temp files i.e. "*.(log|toc|aux|nav|snm|out|tex.backup|bbl|blg|bib.backup|vrb|lof|lot|hd|idx)" for any present "*.tex"
+ - ghc temp files, as long as matching "*.hs" or "*.lhs" is also present
+ - "*.mood(D)" Files which are missing their corresponding audio file
: **readme()**
Opens all README-like files in current working directory with the program
Checks whether a regular expression (first parameter) matches a string
(second parameter) using perl.
+: **rundirs()**
+Takes as first parameter a quoted string containing an exectuable command or function with arguments.
+Following that it takes a bunch of directories, which will then be traversed, executing the
+first argument in each one. E.g.: rundirs purge . **/*(/-/)
+
: **salias()**
Creates an alias whith sudo prepended, if $EUID is not zero. Run "salias -h"
for details. See also xunfunction() below.
number. The shells readline buffer is then filled with the corresponding
command line.
+: **setenv()**
+Reimplementation of the csh(1) builtin setenv.
+
: **show-archive()**
Lists the contents of a (compressed) archive with the appropriate programs.
The choice is made along the filename extension.
Shows the content of a zip archive in default pager.
: **simple-extract()**
-Tries to uncompress/unpack given file with the appropriate programs. The
-choice is made along the filename ending.
+Tries to uncompress/unpack given files with the appropriate programs. If an URI
+starting with https, http or ftp is provided simple-extract tries to download
+and then uncompress/unpack the file. The choice is made along the filename
+ending. simple-extract will not delete the original archive (even on .gz,.bz2 or
+.xz) unless you use the '-d' option.
+
+: **sll()**
+Prints details of symlinks given as arguments.
: **slow_print()**
Prints the arguments slowly by sleeping 0.08 seconds between each character.
certificate. Use /dev/stdin as file if you want to pipe a certificate
to this function.
-: **startx()**
-Initializes an X session using startx(1) if /etc/X11/xorg.conf exists, else
-issues a Warning to use the grml-x(1) script. Can be overridden by using
-/usr/bin/startx directly.
+: **Start(), Restart(), Stop(), Force-Reload(), Reload()**
+Functions for controlling daemons.
+```
+Example usage:
+% Restart ssh
+```
: **status()**
Shows some information about current system status.
-: **swspeak()**
-Sets up software synthesizer by calling swspeak-setup(8). Kernel boot option
-swspeak must be set for this to work.
+: **swiki()**
+Searches articles in the german Wikipedia for the term given as argument.
: **trans()**
Translates a word from german to english (-D) or vice versa (-E).
+: **uchange()**
+Shows upstreams changelog of a given package in $PAGER.
+
: **udiff()**
Makes a unified diff of the command line arguments trying hard to find a
smaller set of changes. Descends recursively into subdirectories. Ignores
For a list of ICAO codes see
"http://en.wikipedia.org/wiki/List_of_airports_by_ICAO_code".
+: **wikide()**
+Looks up the argument on Wikipedia (german).
+
+: **wikien()**
+Looks up the argument on Wikipedia (english).
+
+: **wodeb()**
+Searches the list of official debian packages for the term given as
+first argument. The optional second argument denotes the distribution
+(stable, testing or unstable) and defaults to unstable.
+
: **xcat()**
Tries to cat(1) file(s) given as parameter(s). Always returns true.
See also xunfunction() below.
-: **xinit()**
-Initializes an X session using xinit(1) if /etc/X11/xorg.conf exists, else
-issues a Warning to use the grml-x(1) script. Can be overridden by using
-/usr/bin/xinit directly.
-
: **xsource()**
Tries to source the file(s) given as parameter(s). Always returns true.
See zshbuiltins(1) for a detailed description of the source command.
: **CO** (//./configure//)
Prepares compilation for building program from source.
+: **cp** (//nocorrect cp//)
+cp(1) without spelling correction.
+
: **da** (//du -sch//)
Prints the summarized disk usage of the arguments as well as a grand total
in human readable format.
+: **dbp** (//dpkg-buildpackage//)
+Builds binary or source packages from sources (See: dpkg-buildpackage(1)).
+
+: **debs-by-size** (//grep-status -FStatus -sInstalled-Size,Package -n "install ok installed" | paste -sd " \n" | sort -rn//)
+Prints installed Packages sorted by size (descending).
+
: **default** (//echo -en [ escape sequence ]//)
Sets font of xterm to "-misc-fixed-medium-r-normal-*-*-140-*-*-c-*-iso8859-15"
using escape sequence.
: **g** (//git//)
Revision control system by Linus Torvalds.
+: **ge** (//grep-excuses//)
+Searches the testing excuses files for a specific maintainer (See:
+grep-excuses(1)).
+
: **grep** (//grep --color=auto//)
Shows grep output in nice colors, if available.
: **grml-version** (//cat /etc/grml_version//)
Prints version of running grml.
+: **hbp** (//hg-buildpackage//)
+Helper program to maintain Debian packages with mercurial.
+
: **http** (//python -m SimpleHTTPServer//)
Basic HTTP server implemented in python. Listens on port 8000/tcp and
serves current directory. Implements GET and HEAD methods.
: **hide** (//echo -en [ escape sequence ]//)
Tries to hide xterm window using escape sequence.
+: **hidiff** (//histring -fE '^Comparing files .*|^diff .*' | histring -c yellow -fE '^\-.*' | histring -c green -fE '^\+.*'//)
+If histring(1) is installed, highlight important stuff in diff(1) output.
+
: **huge** (//echo -en [ escape sequence ]//)
Sets huge font in xterm ("-misc-fixed-medium-r-normal-*-*-210-*-*-c-*-iso8859-15")
using escape sequence.
: **ll** (//ls -l --color=auto//)
Lists files in long colored output format.
+: **llog** (//$PAGER /var/log/syslog//)
+Opens syslog in pager.
+
: **ls** (//ls -b -CF --color=auto//)
Lists directory printing octal escapes for nongraphic characters.
Entries are listed by columns and an indicator for file type is appended
: **md** (//mkdir -p//)
Creates directory including parent directories, if necessary
+: **mdstat** (//cat /proc/mdstat//)
+Lists all active md (i.e. linux software raid) devices with some information
+about them.
+
: **medium** (//echo -en [ escape sequence ]//)
Sets medium sized font
("-misc-fixed-medium-r-normal--13-120-75-75-c-80-iso8859-15") in xterm
using escape sequence.
+: **mkdir** (//nocorrect mkdir//)
+mkdir(1) without spelling correction.
+
+: **mq** (//hg -R $(readlink -f $(hg root)/.hg/patches)//)
+Executes the commands on the versioned patch queue from current repository.
+
+: **mv** (//nocorrect mv//)
+mv(1) without spelling correction.
+
+: **rd** (//rmdir//)
+Short rmdir(1) (remove directory).
+
+: **rm** (//nocorrect rm//)
+rm(1) without spelling correction.
+
+: **rmcdir** (//'cd ..; rmdir $OLDPWD || cd $OLDPWD//)
+rmdir current working directory
+
: **screen** (///usr/bin/screen -c ${HOME}/.screenrc//)
If invoking user is root, starts screen session with /etc/grml/screenrc
as config file. If invoked by a regular user, start a screen session
Grants read, write and execute permission of a file to the owner and
read-only plus execute permission to anybody else.
+: **S** (//screen//)
+Short for screen(1).
+
+: **s** (//ssh//)
+Short for ssh(1).
+
: **semifont** (//echo -en [ escape sequence ]//)
Sets font of xterm to
"-misc-fixed-medium-r-semicondensed-*-*-120-*-*-*-*-iso8859-15" using
If user is running a grml live-CD, dont ask for any password, if she
wants a root shell.
+: **term2iso** (//echo 'Setting terminal to iso mode' ; print -n '\e%@'//)
+Sets mode from UTF-8 to ISO 2022 (See:
+http://www.cl.cam.ac.uk/~mgk25/unicode.html#term).
+
+: **term2utf** (//echo 'Setting terminal to utf-8 mode'; print -n '\e%G'//)
+Sets mode from ISO 2022 to UTF-8 (See:
+http://www.cl.cam.ac.uk/~mgk25/unicode.html#term).
+
: **tiny** (//echo -en [ escape sequence ]//)
Sets tiny xterm font
("-misc-fixed-medium-r-normal-*-*-80-*-*-c-*-iso8859-15") using escape
sequence.
+: **tlog** (//tail -f /var/log/syslog//)
+Prints syslog continuously (See tail(1)).
+
+: **top10** (//print -l ? ${(o)history%% *} | uniq -c | sort -nr | head -n 10//)
+Prints the ten most used shell commands.
+
: **truec** (//truecrypt [ mount options ]//)
Mount a truecrypt volume with some reasonable mount options
("rw,sync,dirsync,users,uid=1000,gid=users,umask=077" and "utf8", if
Performs a system update followed by a system upgrade using aptitude; run
by sudo, if necessary. See au and ag above.
+: **url-quote** (//autoload -U url-quote-magic ; zle -N self-insert url-quote-magic//)
+After calling, characters of URLs as typed get automatically escaped, if necessary, to
+protect them from the shell.
+
+: **0** (//return 0//)
+Gives a clean prompt (i.e. without $?).
+
+: **$(uname -r)-reboot** (//kexec -l --initrd=/boot/initrd.img-"$(uname -r)" --command-line=\"$(cat /proc/cmdline)\" /boot/vmlinuz-"$(uname -r)"//)
+Reboots using kexec(8) and thus reduces boot time by skipping hardware initialization of BIOS/firmware.
+
+: **...** (//cd ../..///)
+Changes current directory two levels higher.
+
: **?** (//qma zshall//)
Runs the grml script qma (quick manual access) to build the collected man
pages for the z-shell. This compressed file is kept at
= COPYRIGHT =
-Copyright (c) 2009-2010 grml project <http://grml.org>
+Copyright (c) 2009-2011 Grml project <http://grml.org>
This manpage is distributed under the terms of the GPL version 2.
Most parts of grml's zshrc are distributed under the terms of GPL v2, too,
-except for **accept-line()** and **vcs_info()**, which are distributed under
-the same conditions as zsh itself (which is BSD-like).
+except for **accept-line()** which are distributed under the same conditions
+as zsh itself (which is BSD-like).