grmlzshrc.t2t: More docs of some functions.
[grml-etc-core.git] / doc / grmlzshrc.t2t
index c71db69..9ca442f 100644 (file)
@@ -1,6 +1,6 @@
 GRMLZSHRC
 
-May, 2009
+August, 2009
 
 %!target: man
 %!postproc(man): "^(\.TH.*) 1 "  "\1 5 "
@@ -227,15 +227,501 @@ available via the usual history lookup widgets.
 
 = REFERENCE =
 == KEYBINDINGS ==
+Apart from zsh's default key bindings, //grmlzshrc// comes with its own set of
+key bindings. Note that bindings like **ESC-e** can also be typed as **ALT-e**
+on PC keyboards.
+
+: **ESC-e**
+Edit the current command buffer in your favourite editor.
+
 
 == SHELL FUNCTIONS ==
 //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.
+
+: **agoogle()**
+Searches for USENET postings from authors using google groups.
+
+: **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.
+
+: **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).
+
+: **cl()**
+Changes current directory to the one supplied by argument and lists the files
+in it, including file names starting with ".".
+
+: **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.
+
+: **doc()**
+Takes packagename as argument. Sets current working directory to
+/usr/share/doc/<packagename> and prints out a directory listing.
+
+: **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.
+
+: **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!
+
+: **greph()**
+Searches the zsh command history for a regular expression.
+
+: **hex()**
+Prints the hexadecimal representation of the number supplied as argument
+(base ten only).
+
+: **is4()**
+Returns true, if zsh version is equal or greater than 4, else false.
+
+: **is41()**
+Returns true, if zsh version is equal or greater than 4.1, else false.
+
+: **is42()**
+Returns true, if zsh version is equal or greater than 4.2, else false.
+
+: **is425()**
+Returns true, if zsh version is equal or greater than 4.2.5, else false.
+
+: **is43()**
+Returns true, if zsh version is equal or greater than 4.3, else false.
+
+: **is433()**
+Returns true, if zsh version is equal or greater than 4.3.3, else false.
+
+: **isdarwin()**
+Returns true, if running on darwin, else false.
+
+: **isgrml()**
+Returns true, if running on a grml system, else false.
+
+: **isgrmlcd()**
+Returns true, if running on a grml system from a live cd, else false.
+
+: **isgrmlsmall()**
+Returns true, if run on grml-small, 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.
+
+: **mcd()**
+Creates directory including parent directories, if necessary. Then changes
+current working directory to it.
+
+: **minimal-shell()**
+Spawns a absolute minimal Korn shell. It references no files in /usr, so
+that file system can be unmounted.
+
+: **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.
+
+: **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.
+
+: **readme()**
+Opens all README-like files in current working directory with the program
+defined in the $PAGER environment variable.
+
+: **regcheck()**
+Checks whether a regular expression (first parameter) matches a string
+(second parameter) using perl.
+
+: **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.
+
+: **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".
+
+: **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.
+
+: **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.
+
+: **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.
+
 : **urlencode()**
 Takes a string as its first argument and prints it RFC 2396 URL encoded to
 standard out.
 
+: **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.
+
+: **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.
+
+: **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.
+
+
+== ALIASES ==
+//grmlzshrc// comes with a wide array of predefined aliases to ease the user's
+life. A few aliases (like those involving //grep// or //ls//) use the option
+//--color=auto// for colourizing output. That option is part of **GNU**
+implementations of these tools, and will only be used if such an implementation
+is detected.
+
+: **acp** (//apt-cache policy//)
+With no arguments prints out the priorities of each source. If a package name
+is given, it displays detailed information about the priority selection of the
+package.
+
+: **acs** (//apt-cache search//)
+Searches debian package lists for the regular expression provided as argument.
+The search includes package names and descriptions. Prints out name and short
+description of matching packages.
+
+: **acsh** (//apt-cache show//)
+Shows the package records for the packages provided as arguments.
+
+: **adg** (//apt-get dist-upgrade//)
+Performs an upgrade of all installed packages. Also tries to automatically
+handle changing dependencies with new versions of packages. As this may change
+the install status of (or even remove) installed packages, it is potentially
+dangerous to use dist-upgrade; invoked by sudo, if necessary.
+
+: **ag** (//apt-get upgrade//)
+Downloads and installs the newest versions of all packages currently installed
+on the system. Under no circumstances are currently installed packages removed,
+or packages not already installed retrieved and installed. New versions of
+currently installed packages that cannot be upgraded without changing the install
+status of another package will be left at their current version. An update must
+be performed first (see au below); run by sudo, if necessary.
+
+: **agi** (//apt-get install//)
+Downloads and installs or upgrades the packages given on the command line.
+If a hyphen is appended to the package name, the identified package will be
+removed if it is installed. Similarly a plus sign can be used to designate a
+package to install. This may be useful to override decisions made by apt-get's
+conflict resolution system.
+A specific version of a package can be selected for installation by following
+the package name with an equals and the version of the package to select. This
+will cause that version to be located and selected for install. Alternatively a
+specific distribution can be selected by following the package name with a slash
+and the version of the distribution or the Archive name (stable, testing, unstable).
+Gets invoked by sudo, if user id is not 0.
+
+: **ati** (//aptitude install//)
+Aptitude is a terminal-based package manager with a command line mode similar to
+apt-get (see agi above); invoked by sudo, if necessary.
+
+: **au** (//apt-get update//)
+Resynchronizes the package index files from their sources. The indexes of
+available packages are fetched from the location(s) specified in
+/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.
+
+: **cmplayer** (//mplayer -vo fbdev//)
+Video player with framebuffer as video output device, so you can watch
+videos on a virtual tty. Hint: Using fbdev2 allows you to use the shell
+while watching a movie.
+
+: **CO** (//./configure//)
+Prepares compilation for building program from source.
+
+: **da** (//du -sch//)
+Prints the summarized disk usage of the arguments as well as a grand total
+in human readable format.
+
+: **default** (//echo -en [ escape sequence ]//)
+Sets font of xterm to "-misc-fixed-medium-r-normal-*-*-140-*-*-c-*-iso8859-15"
+using escape sequence.
+
+: **dir** (//ls -lSrah//)
+Lists files (including dot files) sorted by size (biggest last) in long and
+human readable output format.
+
+: **fblinks** (//links2 -driver fb//)
+A Web browser on the framebuffer device. So you can browse images and click
+links on the virtual tty.
+
+: **fbmplayer** (//mplayer -vo fbdev -fs -zoom//)
+Fullscreen Video player with the framebuffer as video output device. So you
+can watch videos on a virtual tty.
+
+: **g** (//git//)
+Revision control system by Linus Torvalds.
+
+: **grep** (//grep --color=auto//)
+Shows grep output in nice colors, if available.
+
+: **GREP** (//grep -i --color=auto//)
+Case insensitive grep with colored output.
+
+: **grml-rebuildfstab** (//rebuildfstab -v -r -config//)
+Scans for new devices and updates /etc/fstab according to the findings.
+
+: **grml-version** (//cat /etc/grml_version//)
+Prints version of running grml.
+
+: **http** (//python -m SimpleHTTPServer//)
+Basic HTTP server implemented in python. Listens on port 8000/tcp and
+serves current directory. Implements GET and HEAD methods.
+
+: **insecscp** (//scp -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null"//)
+scp with possible man-in-the-middle attack enabled. This is convenient, if the targets
+host key changes frequently, for example on virtualized test- or development-systems.
+To be used only inside trusted networks, of course.
+
+: **insecssh** (//ssh -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=/dev/null"//)
+ssh with possible man-in-the-middle attack enabled
+(for an explanation see insecscp above).
+
+: **help-zshglob** (//H-Glob()//)
+Runs the function H-Glob() to expand or explain wildcards.
+
+: **hide** (//echo -en [ escape sequence ]//)
+Tries to hide xterm window using escape sequence.
+
+: **huge** (//echo -en [ escape sequence ]//)
+Sets huge font in xterm ("-misc-fixed-medium-r-normal-*-*-210-*-*-c-*-iso8859-15")
+using escape sequence.
+
+: **j** (//jobs -l//)
+Prints status of jobs in the current shell session in long format.
+
+: **l** (//ls -lF --color=auto//)
+Lists files in long output format with indicator for filetype appended
+to filename. If the terminal supports it, with colored output.
+
+: **la** (//ls -la --color=auto//)
+Lists files in long colored output format. Including file names
+starting with ".".
+
+: **lad** (//ls -d .*(/)//)
+Lists the dot directories (not their contents) in current directory.
+
+: **large** (//echo -en [ escape sequence ]//)
+Sets large font in xterm ("-misc-fixed-medium-r-normal-*-*-150-*-*-c-*-iso8859-15")
+using escape sequence.
+
+: **lh** (//ls -hAl --color=auto//)
+Lists files in long and human readable output format in nice colors,
+if available. Includes file names starting with "." except "." and
+"..".
+
+: **ll** (//ls -l --color=auto//)
+Lists files in long colored output format.
+
+: **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
+to each file name. Additionally the output is colored, if the terminal
+supports it.
+
+: **lsa** (//ls -a .*(.)//)
+Lists dot files in current working directory.
+
+: **lsbig** (//ls -flh *(.OL[1,10])//)
+Displays the ten biggest files (long and human readable output format).
+
+: **lsd** (//ls -d *(/)//)
+Shows directories.
+
+: **lse** (//ls -d *(/^F)//)
+Shows empty directories.
+
+: **lsl** (//ls -l *(@)//)
+Lists symbolic links in current directory.
+
+: **lsnew** (//ls -rl *(D.om[1,10])//)
+Displays the ten newest files (long output format).
+
+: **lsold** (//ls -rtlh *(D.om[1,10])//)
+Displays the ten oldest files (long output format).
+
+: **lss** (//ls -l *(s,S,t)//)
+Lists files in current directory that have the setuid, setgid or sticky bit
+set.
+
+: **lssmall** (//ls -Srl *(.oL[1,10])//)
+Displays the ten smallest files (long output format).
+
+: **lsw** (//ls -ld *(R,W,X.^ND/)//)
+Displays all files which are world readable and/or world writable and/or
+world executable (long output format).
+
+: **lsx** (//ls -l *(*)//)
+Lists only executable files.
+
+: **md** (//mkdir -p//)
+Creates directory including parent directories, if necessary
+
+: **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.
+
+: **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
+with users .screenrc config if it exists, else use /etc/grml/screenrc_grml
+as configuration.
+
+: **rw-** (//chmod 600//)
+Grants read and write permission of a file to the owner and nobody else.
+
+: **rwx** (//chmod 700//)
+Grants read, write and execute permission of a file to the owner and nobody
+else.
+
+: **r--** (//chmod 644//)
+Grants read and write permission of a file to the owner and read-only to
+anybody else.
+
+: **r-x** (//chmod 755//)
+Grants read, write and execute permission of a file to the owner and
+read-only plus execute permission to anybody else.
+
+: **semifont** (//echo -en [ escape sequence ]//)
+Sets font of xterm to
+"-misc-fixed-medium-r-semicondensed-*-*-120-*-*-*-*-iso8859-15" using
+escape sequence.
+
+: **small** (//echo -en [ escape sequence ]//)
+Sets small xterm font ("6x10") using escape sequence.
+
+: **smartfont** (//echo -en [ escape sequence ]//)
+Sets font of xterm to "-artwiz-smoothansi-*-*-*-*-*-*-*-*-*-*-*-*" using
+escape sequence.
+
+: **su** (//sudo su//)
+If user is running a grml live-CD, dont ask for any password, if she
+wants a root shell.
+
+: **tiny** (//echo -en [ escape sequence ]//)
+Sets tiny xterm font
+("-misc-fixed-medium-r-normal-*-*-80-*-*-c-*-iso8859-15") using escape
+sequence.
+
+: **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
+available).
+
+: **up** (//aptitude update ; aptitude safe-upgrade//)
+Performs a system update followed by a system upgrade using aptitude; run
+by sudo, if necessary. See au and ag above.
+
+: **?** (//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
@@ -280,6 +766,111 @@ your **$fpath**), you can browse and download them at:
 
 http://git.grml.org/?p=grml-etc-core.git;a=tree;f=usr_share_grml/zsh;hb=HEAD
 
+= ZSH REFCARD TAGS =
+If you read //grmlzshrc//'s code you may notice strange looking comments in
+it. These are there for a purpose. grml's zsh-refcard is automatically
+generated from the contents of the actual configuration file. However, we need
+a little extra information on which comments and what lines of code to take
+into account (and for what purpose).
+
+Here is what they mean:
+
+List of tags (comment types) used:
+: **#a#**
+Next line contains an important alias, that should be included in the
+grml-zsh-refcard. (placement tag: @@INSERT-aliases@@)
+
+: **#f#**
+Next line contains the beginning of an important function. (placement
+tag: @@INSERT-functions@@)
+
+: **#v#**
+Next line contains an important variable. (placement tag:
+@@INSERT-variables@@)
+
+: **#k#**
+Next line contains an important keybinding. (placement tag:
+@@INSERT-keybindings@@)
+
+: **#d#**
+Hashed directories list generation: //start//: denotes the start of a list of
+'hash -d' definitions. //end//: denotes its end. (placement tag:
+@@INSERT-hasheddirs@@)
+
+: **#A#**
+Abbreviation expansion list generation: //start//: denotes the beginning of
+abbreviations. //end//: denotes their end.
+\
+Lines within this section that end in '#d .*' provide extra documentation to
+be included in the refcard. (placement tag: @@INSERT-abbrev@@)
+
+: **#m#**
+This tag allows you to manually generate refcard entries for code lines that
+are hard/impossible to parse.
+Example:
+\
+```
+#m# k ESC-h Call the run-help function
+```
+\
+That would add a refcard entry in the keybindings table for 'ESC-h' with the
+given comment.
+\
+So the syntax is: #m# <section> <argument> <comment>
+
+: **#o#**
+This tag lets you insert entries to the 'other' hash. Generally, this should
+not be used. It is there for things that cannot be done easily in another way.
+(placement tag: @@INSERT-other-foobar@@)
+
+
+All of these tags (except for m and o) take two arguments, the first
+within the tag, the other after the tag:
+
+#<tag><section># <comment>
+
+Where <section> is really just a number, which are defined by the @secmap
+array on top of 'genrefcard.pl'. The reason for numbers instead of names is,
+that for the reader, the tag should not differ much from a regular comment.
+For zsh, it is a regular comment indeed. The numbers have got the following
+meanings:
+
+: **0**
+//default//
+
+: **1**
+//system//
+
+: **2**
+//user//
+
+: **3**
+//debian//
+
+: **4**
+//search//
+
+: **5**
+//shortcuts//
+
+: **6**
+//services//
+
+
+So, the following will add an entry to the 'functions' table in the 'system'
+section, with a (hopefully) descriptive comment:
+\
+```
+#f1# Edit an alias via zle
+edalias() {
+```
+\
+It will then show up in the @@INSERT-aliases-system@@ replacement tag that can
+be found in 'grml-zsh-refcard.tex.in'. If the section number is omitted, the
+'default' section is assumed. Furthermore, in 'grml-zsh-refcard.tex.in'
+@@INSERT-aliases@@ is exactly the same as @@INSERT-aliases-default@@. If you
+want a list of **all** aliases, for example, use @@INSERT-aliases-all@@.
+
 
 = CONTRIBUTING =
 If you want to help to improve grml's zsh setup, clone the grml-etc-core
@@ -303,8 +894,9 @@ aspect of the setup. That is currently **not** the case. Not for a long time
 yet. Contributions are highly welcome.
 
 
-= AUTHOR =
-This manpage was written by Frank Terbeck <ft@grml.org>.
+= AUTHORS =
+This manpage was written by Frank Terbeck <ft@grml.org> and Joerg Woelke
+<joewoe@fsmail.de>.
 
 
 = COPYRIGHT =