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.
-
: **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
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.
-
: **dchange()**
Shows the changelog of given package in $PAGER.
-: **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.
-
: **debian2hd()**
Tells the user to use grml-debootstrap, if she wants to install debian to
harddisk.
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.
-
-: **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).
-
-: **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.
-
: **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
-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!
-
-: **get_tw_cli()**
-Fetches 3ware RAID controller software using get_3ware(1).
-
-: **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.
-
-: **hex()**
-Prints the hexadecimal representation of the number supplied as argument
-(base ten only).
-
: **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.
-
-: **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.
-
-: **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.
-
-: **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.
-: **mdiff()**
-Diffs the two arguments recursively and writes the
-output (unified format) to a timestamped file.
-
-: **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.
-: **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.
% ls -l *(e:'nt /reference/file':)
```
-: **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.
-
: **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.
-
-: **readme()**
-Opens all README-like files in current working directory with the program
-defined in the $PAGER environment variable.
-
: **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.
-
-: **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.
-: **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.
: **sll()**
Prints details of symlinks given as arguments.
-: **slow_print()**
-Prints the arguments slowly by sleeping 0.08 seconds between each character.
-
: **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
% Restart ssh
```
-: **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.
-
: **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
-hows some information about current status.
-
-: **uopen()**
-Downloads and displays a file using a suitable program for its
-Content-Type.
-
: **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.
: **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
: **...** (//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
-~/man/zshall.txt.lzo Once it is built, the second use of the alias '?' is
-fast. See "man qma" for further information.
-
= AUXILIARY FILES =
This is a set of files, that - if they exist - can be used to customize the
= 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).