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.
//grmlzshrc// comes with a wide array of defined shell functions to ease the
user's life.
-: **2html()**
-Converts plaintext files to HTML using vim. The output is written to
-<filename>.html.
-
: **855resolution()**
If 915resolution is available, issues a warning to the user to run it instead
to modify the resolution on intel graphics chipsets.
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.
-: **agoogle()**
-Searches for USENET postings from authors using google groups.
-
: **allulimit()**
Sets all ulimit values to "unlimited".
-: **ansi-colors()**
-Prints a colored table of available ansi color codes (to be used in escape
-sequences) and the colors they represent.
-
-: **aoeu(), asdf(), uiae()**
-Pressing the 'asdf' keys toggles between dvorak or neon and us keyboard
-layout.
+: **any()**
+Lists processes matching given pattern.
: **asc()**
Login on the host provided as argument using autossh. Then reattach a GNU screen
else start a new screen. This is especially useful for roadwarriors using GNU
screen and ssh.
-: **audioburn()**
-Burns the files in ~/ripps (see audiorip() below) to an audio CD.
-Then prompts the user if she wants to remove that directory. You might need
-to tell audioburn which cdrom device to use like:
-"DEVICE=/dev/cdrom audioburn"
-
-: **audiorip()**
-Creates directory ~/ripps, if it does not exist. Then rips audio CD into
-it. Then prompts the user if she wants to burn a audio CD with audioburn()
-(see above). You might need to tell audiorip which cdrom device to use like:
-"DEVICE=/dev/cdrom audioburn"
-
: **bk()**
Simple backup of a file or directory using cp(1). The target file name is the
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).
-
: **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.
-
-: **debbug()**
-Searches the Debian bug tracking system (bugs.debian.org) for Bug numbers,
-email addresses of submitters or any string given on the command line.
-
-: **debbugm()**
-Shows bug report for debian given by number in mailbox format.
+: **dchange()**
+Shows the changelog of given package in $PAGER.
: **debian2hd()**
Tells the user to use grml-debootstrap, if she wants to install debian to
harddisk.
-: **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.
-
-: **doc()**
-Takes packagename as argument. Sets current working directory to
-/usr/share/doc/<packagename> and prints out a directory listing.
-
-: **exirename()**
-Renames image files based on date/time informations in their exif headers.
+: **deswap()**
+A trick from $LINUX-KERNELSOURCE/Documentation/power/swsusp.txt. It brings
+back interactive responsiveness after suspend, when the system is swapping
+heavily.
-: **fir()**
-Opens given URL with Firefox (Iceweasel on Debian). If there is already an
-instance of firefox running, attaches to the first window found and opens the
-URL in a new tab (this even works across an ssh session).
+: **dnews()**
+Shows the NEWS file for the given package in $PAGER.
-: **fluxkey-change()**
-Switches the key combinations for changing current workspace under fluxbox(1)
-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.
+: **edalias()**
+Edit given alias.
-: **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
-filename>". Creates an index.html with title "Images" showing the
-thumbnails as clickable links to the respective original file.
-//Warning:// On start genthumbs() silently removes a possibly existing "index.html"
-and all files and/or directories beginning with "thumb-" in current directory!
+: **edfunc()**
+Edit given shell function.
-: **greph()**
-Searches the zsh command history for a regular expression.
-
-: **hex()**
-Prints the hexadecimal representation of the number supplied as argument
-(base ten only).
+: **freload()**
+Reloads an autoloadable shell function (See autoload in zshbuiltins(1)).
: **hgdi()**
Use GNU diff with options -ubwd for mercurial.
: **hidiff()**
Outputs highlighted diff; needs highstring(1).
-: **hl()**
-Shows source files in less(1) with syntax highlighting. Run "hl -h"
-for detailed usage information.
-
-: **ic_get()**
-Queries IMAP server (first parameter) for its capabilities. Takes
-port number as optional second argument.
-
: **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.
-: **lcheck()**
-Lists libraries that define the symbol containing the string given as
-parameter.
-
-: **limg()**
-Lists images (i. e. files ending with ".jpg", ".gif" or ".png") in current
-directory.
-
-: **linenr()**
-Prints specified range of (numbered) lines of a file.
-Usage: linenr <start>[,<end>] <file>
-
-: **makereadable()**
-Creates a PostScript and a PDF file (basename as first argument) from
-source code files.
-
-: **man2()**
-Displays manpage in a streched style.
-
: **mcd()**
Creates directory including parent directories, if necessary. Then changes
current working directory to it.
-: **mdiff()**
-Diffs the two arguments recursively and writes the
-output (unified format) to a timestamped file.
-
-: **memusage()**
-Prints the summarized memory usage in bytes.
-
: **minimal-shell()**
Spawns a minimally set up MirBSD Korn shell. It references no files in /usr,
so that file system can be unmounted.
-: **mkaudiocd()**
-Renames all mp3 files in ~/ripps (see audiorip above) to lowercase and
-replaces spaces in file names with underscores. Then mkaudiocd()
-normalizes the files and recodes them to WAV.
-
-: **mkiso()**
-Creates an iso9660 filesystem image with Rockridge and Joliet extensions
-enabled using mkisofs(8). Prompts the user for volume name, filename and
-target directory.
-
-: **mkmaildir()**
-Creates a directory with first parameter as name inside $MAILDIR_ROOT
-(defaults to $HOME/Mail) and subdirectories cur, new and tmp.
-
-: **mmake()**
-Runs "make install" and logs the output under ~/.errorlogs/; useful for
-a clean deinstall later.
-
: **modified()**
Lists files in current directory, which have been modified within the
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.
-
-: **peval()**
-Evaluates a perl expression; useful as command line
-calculator, therefore also available as "calc".
-
-: **plap()**
-Lists all occurrences of the string given as argument in current $PATH.
-
-: **purge()**
-Removes typical temporary files (i. e. files like "*~", ".*~", "#*#", "*.o",
-"a.out", "*.core", "*.cmo", "*.cmi" and ".*.swp") from current directory.
-Asks for confirmation.
+: **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':)
+```
-: **readme()**
-Opens all README-like files in current working directory with the program
-defined in the $PAGER environment variable.
+: **profile()**
+Runs a command in $SHELL with profiling enabled (See startup variable
+ZSH_PROFILE_RC above).
: **refunc()**
Reloads functions given as parameters.
-: **regcheck()**
-Checks whether a regular expression (first parameter) matches a string
-(second parameter) using perl.
-
: **salias()**
Creates an alias whith sudo prepended, if $EUID is not zero. Run "salias -h"
for details. See also xunfunction() below.
-: **selhist()**
-Greps the history for the string provided as parameter and shows the numbered
-findings in default pager. On exit of the pager the user is prompted for a
-number. The shells readline buffer is then filled with the corresponding
-command line.
-
: **show-archive()**
Lists the contents of a (compressed) archive with the appropriate programs.
The choice is made along the filename extension.
-: **shtar()**
-Lists the content of a gzipped tar archive in default pager.
-
-: **shzip()**
-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.
-: **slow_print()**
-Prints the arguments slowly by sleeping 0.08 seconds between each character.
+: **sll()**
+Prints details of symlinks given as arguments.
: **smartcompress()**
Compresses/archives the file given as first parameter. Takes an optional
second argument, which denotes the compression/archive type as typical
filename extension; defaults to "tar.gz".
-: **smart-indent()**
-Indents C source code files given; uses Kernighan & Ritchie style.
-
-: **sshot()**
-Creates directory named shots in user's home directory, if it does not yet
-exist and changes current working directory to it. Then sleeps 5 seconds,
-so you have plenty of time to switch desktops/windows. Then makes a screenshot
-of the current desktop. The result is stored in ~/shots to a timestamped
-jpg file.
-
: **ssl-cert-fingerprints**
Prints the SHA512, SHA256, SHA1 and MD5 digest of a x509 certificate.
First and only parameter must be a file containing a certificate. Use
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.
-
-: **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.
+: **Start(), Restart(), Stop(), Force-Reload(), Reload()**
+Functions for controlling daemons.
+```
+Example usage:
+% Restart ssh
+```
: **trans()**
Translates a word from german to english (-D) or vice versa (-E).
-: **udiff()**
-Makes a unified diff of the command line arguments trying hard to find a
-smaller set of changes. Descends recursively into subdirectories. Ignores
-hows some information about current status.
-
-: **uopen()**
-Downloads and displays a file using a suitable program for its
-Content-Type.
+: **uchange()**
+Shows upstreams changelog of a given package in $PAGER.
: **uprint()**
Works around the "print -l ${(u)foo}"-limitation on zsh older than 4.2.
-: **urlencode()**
-Takes a string as its first argument and prints it RFC 2396 URL encoded to
-standard out.
-
: **utf2iso()**
Changes every occurrence of the string UTF-8 or utf-8 in environment
variables to iso885915.
-: **viless()**
-Vim as pager.
-
: **vim()**
Wrapper for vim(1). It tries to set the title and hands vim the environment
variable VIM_OPTIONS on the command line. So the user may define command
line options, she always wants, in her .zshrc.local.
-: **vman()**
-Use vim(1) as manpage reader.
-
: **whatwhen()**
Searches the history for a given pattern and lists the results by date.
The first argument is the search pattern. The second and third ones are
optional and denote a search range (default: -100).
-: **weather()**
-Retrieves and prints weather information from "http://weather.noaa.gov".
-The first and only argument is the ICAO code for the desired station.
-For a list of ICAO codes see
-"http://en.wikipedia.org/wiki/List_of_airports_by_ICAO_code".
-
: **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.
: **xunfunction()**
Removes the functions salias, xcat, xsource, xunfunction and zrcautoload.
-: **zg()**
-Search for patterns in grml's zshrc using perl. zg takes no or exactly one
-option plus a non empty pattern. Run zg without any arguments for a listing
-of available command line switches. For a zshrc not in /etc/zsh, set the
-GRML_ZSHRC environment variable.
-
: **zrcautoload()**
Wrapper around the autoload builtin. Loads the definitions of functions
from the file given as argument. Searches $fpath for the file. See also
/etc/apt/sources.list. An update should always be performed before an
upgrade or dist-upgrade; run by sudo, if necessary.
-: **calc** (//peval//)
-Evaluates a perl expression (see peval() above); useful as a command line
-calculator.
-
: **CH** (//./configure --help//)
Lists available compilation options for building program from source.
: **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.
: **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
("-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
After calling, characters of URLs as typed get automatically escaped, if necessary, to
protect them from the shell.
-: **...** (cd ../../)
-Changes current directory two levels higher.
+: **0** (//return 0//)
+Gives a clean prompt (i.e. without $?).
-: **?** (//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
-~/man/zshall.txt.lzo Once it is built, the second use of the alias '?' is
-fast. See "man qma" for further information.
+: **$(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.
= AUXILIARY FILES =
= 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).