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.
: **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.
: **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.
: **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
: **$(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 ../../)
+: **...** (//cd ../..///)
Changes current directory two levels higher.
: **?** (//qma zshall//)
= 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).