X-Git-Url: http://git.grml.org/?p=grml-etc-core.git;a=blobdiff_plain;f=doc%2Fgrmlzshrc.t2t;h=975cc17c5431ec2b6ca6ad747de054d70138dad9;hp=d175b4a3481e559da22b06267eaf3bdd56064574;hb=a5468f8195489f6c662d08c88dee8a9f6657acbf;hpb=fa2c7d53f75fcad4657b06ede1ff32cdc21e6c52 diff --git a/doc/grmlzshrc.t2t b/doc/grmlzshrc.t2t index d175b4a..975cc17 100644 --- a/doc/grmlzshrc.t2t +++ b/doc/grmlzshrc.t2t @@ -1,13 +1,13 @@ GRMLZSHRC -June, 2010 +September, 2014 %!target: man %!postproc(man): "^(\.TH.*) 1 " "\1 5 " = NAME = -grmlzshrc - grml's zsh setup +grmlzshrc - Grml's zsh setup = SYNOPSIS = @@ -15,7 +15,7 @@ grmlzshrc - grml's zsh setup = 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. @@ -26,29 +26,39 @@ features are enabled in every version). //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 variables. These may be set temporarily when starting zsh like this: \ -``` % BATTERY=1 zsh +``` % GRML_DISPLAY_BATTERY=1 zsh Or by setting them permanently in **zshrc.pre** (See AUXILIARY FILES below). : **BATTERY** -If set to a value greater than zero and //acpi// installed, //grmlzshrc// will -put the battery status into the right hand side interactive prompt. +Deprecated. Use **GRML_DISPLAY_BATTERY** instead. : **COMMAND_NOT_FOUND** A non zero value activates a handler, which is called when a command can not 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. +: **GRML_DISPLAY_BATTERY** +If set to a value greater than zero, //grmlzshrc// will put the battery status +into the right hand side interactive prompt. Supported OSes are //GNU/Linux//, +//FreeBSD//, //OpenBSD// and //Darwin//. : **GRML_ZSH_CNF_HANDLER** This variable contains the handler to be used by COMMAND_NOT_FOUND (see above) @@ -62,7 +72,7 @@ grml-small. 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** @@ -85,7 +95,7 @@ Show time (user, system and cpu) used by external commands, if they run longer 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** @@ -99,6 +109,9 @@ Import "/etc/default/locale", if set to zero (default). A non zero value causes shell functions to be profiled. The results can be obtained with the zprof builtin command (see zshmodules(1) for details). +: **COMPDUMPFILE** +Specifies the location of the completion dump file. Default: $HOME/.zcompdump. + = FEATURE DESCRIPTION = This is an in depth description of non-standard features implemented by @@ -115,83 +128,117 @@ zshs inherit the dirstack of the zsh that most recently updated **DIRSTACKFILE**. == DIRECTORY BASED PROFILES == -If you want certain settings to be active in certain directories (and -automatically switch back and forth between them), this is what you want. + +If you need to perform certain actions each time you enter certain +directory-trees, this is the feature you are looking for. + + +=== Initialisation === +To initialise the system, you need to call the function `chpwd_profiles' at +some point in your `zshrc.local'; preferably **after** you configured the +system. The configuration of the system is described further below. + +If you need to do initialisations the first time `chpwd_profiles' is called +(which should be in your configuration file), you can do that in a function +called "chpwd_profiles_init". That function needs to be defined **before** +`chpwd_profiles' is called for this to work. + +During the **first** call of `chpwd_profiles' (and therefore all its profile +functions) the parameter `$CHPWD_PROFILES_INIT' exists and is set to `1'. In +all other cases, the parameter does not exist at all. + + +=== Styles and Profile-names === +To store its configuration, the system uses **functions** and **styles** +(zsh's context sensitive configuration system), such as this: + \ ``` zstyle ':chpwd:profiles:/usr/src/grml(|/|/*)' profile grml zstyle ':chpwd:profiles:/usr/src/debian(|/|/*)' profile debian ``` -When that's done and you enter a directory that matches the pattern -in the third part of the context, a function called chpwd_profile_grml, -for example, is called (if it exists). +When that's done and you enter a directory that matches the pattern in the +third part of the context, a function called chpwd_profile_grml, for example, +is called (if it exists). -If no pattern matches (read: no profile is detected) the profile is -set to 'default', which means chpwd_profile_default is attempted to -be called. +If no pattern matches (read: no profile is detected) the profile is set to +'default', which means chpwd_profile_default is attempted to be called. -A word about the context (the ':chpwd:profiles:*' stuff in the zstyle -command) which is used: The third part in the context is matched against -**$PWD**. That's why using a pattern such as /foo/bar(|/|/*) makes sense. -Because that way the profile is detected for all these values of **$PWD**: +A word about the context (the ':chpwd:profiles:*' stuff in the zstyle command) +which is used: The third part in the context is matched against ${PWD}. That's +why using a pattern such as /foo/bar(|/|/*) makes sense. Because that way the +profile is detected for all these values of ${PWD}: \ ``` -/foo/bar -/foo/bar/ -/foo/bar/baz + /foo/bar + /foo/bar/ + /foo/bar/baz ``` - -So, if you want to make double damn sure a profile works in /foo/bar -and everywhere deeper in that tree, just use (|/|/*) and be happy. +So, if you want to make double damn sure a profile works in /foo/bar and +everywhere deeper in that tree, just use (|/|/*) and be happy. The name of the detected profile will be available in a variable called -'profile' in your functions. You don't need to do anything, it'll just -be there. +'profile' in your functions. You don't need to do anything, it'll just be +there. -Then there is the parameter **$CHPWD_PROFILE** which is set to the profile, -that was active up to now. That way you can avoid running code for a -profile that is already active, by running code such as the following -at the start of your function: + +=== Controlling Profile Execution === + +During its initialisation run, the system creates a parameter $CHPWD_PROFILE, +which is set to the profile that was is currently active (the default value is +"default"). That way you can avoid running code for a profile that is already +active, by running code such as the following at the start of your function: \ ``` function chpwd_profile_grml() { [[ ${profile} == ${CHPWD_PROFILE} ]] && return 1 - ... + ... } ``` -The initial value for **$CHPWD_PROFILE** is 'default'. +If you know you are going to do that all the time for each and every +directory-profile function you are ever going to write, you may also set the +`re-execute' style to `false' (which only defaults to `true' for backwards +compatibility), like this: +\ +``` + zstyle ':chpwd:profiles:*' re-execute false +``` + === Signaling availabily/profile changes === -If you use this feature and need to know whether it is active in your -current shell, there are several ways to do that. Here are two simple -ways: +If you use this feature and need to know whether it is active in your current +shell, there are several ways to do that. Here are two simple ways: -a) If knowing if the profiles feature is active when zsh starts is - good enough for you, you can put the following snippet into your - //.zshrc.local//: -\ -``` -(( ${+functions[chpwd_profiles]} )) && - print "directory profiles active" -``` +a) If knowing if the profiles feature is active when zsh starts is good +enough for you, you can use the following snippet: + +(( ${+functions[chpwd_profiles]} )) && print "directory profiles active" + +b) If that is not good enough, and you would prefer to be notified whenever a +profile changes, you can solve that by making sure you start **every** +profile function you create like this: -b) If that is not good enough, and you would prefer to be notified - whenever a profile changes, you can solve that by making sure you - start **every** profile function you create like this: -\ -``` function chpwd_profile_myprofilename() { [[ ${profile} == ${CHPWD_PROFILE} ]] && return 1 print "chpwd(): Switching to profile: $profile" ... } -``` -That makes sure you only get notified if a profile is **changed**, -not everytime you change directory. +That makes sure you only get notified if a profile is **changed**, not +everytime you change directory. (To avoid this, you may also set the newer +`re-execute' style like described further above instead of the test on top of +the function. + + +=== Leaving Profiles === + +When the system switches from one profile to another, it executes a function +named "chpwd_leave_profile_()" before calling the +profile-function for the new profile. + === Version requirement === This feature requires zsh //4.3.3// or newer. @@ -270,6 +317,53 @@ style. (The default is **true** in all contexts.) == PROMPT == +The //grmlzshrc// now supplies three prompt themes compatible with zsh's +**promptinit** system. The three themes are called **grml**, **grml-large** and +**grml-chroot**. + +By default, **grml** is used, unless //$GRMLPROMPT// is set to a value larger +than zero, in which case **grml-large** is used. Lastly, if //$GRML_CHROOT// is +non-empty, **grml-chroot** is used. + +As usual, with promtinit themes, the user may switch to a different theme using +the //prompt// utility: +\ +``` + prompt grml-large +``` + +That will use the **grml-large** prompt theme. + +The themes are highly customisable. The main source of documentation about +customisation is the main **grml** theme's doc-string, that is available via +the following command: +\ +``` + prompt -h grml +``` + +The other themes also come with doc-strings, but the main theme's is the +canonical reference about all of them. + +This feature requires version //4.3.7// of the shell. Older versions will use +the classic grml prompt as a fallback. + +A note to people who like customisation: If you are **not** using a prompt +theme for your customisation, but you're either statically setting $PS1 (or +$PROMPT) or you're constructing one of those variables in zsh's \`precmd()' +function, make sure you are turning the zsh's prompt theme system **off** +before doing so. A correct example customisation could look like this: +\ +``` + # Turn the prompt system off: + prompt off + # Customise the prompt yourself: + PS1='%~ %# ' +``` + +You also add your own tokens by using the \`grml_theme_add_token()' function. +Call the function without arguments for detailed documentation about that +procedure. == GNU/SCREEN STATUS SETTING == //grmlzshrc// sets screen's hardstatus lines to the currently running command @@ -289,9 +383,6 @@ available via the usual history lookup widgets. //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. @@ -311,14 +402,6 @@ already set otherwise. : **PAGER** Set less(1) as default pager, if not already set to something different. -: **QTDIR** -Holds the path to shared files for the C++ application framework QT -(version 3 or 4). - -: **SHELL** -Set explicitly to /bin/zsh, to prevent certain terminal emulators to -default to /bin/sh or /bin/bash. - == OPTIONS == Apart from zsh's default options, //grmlzshrc// sets some options @@ -415,21 +498,43 @@ Deletes a word left of the cursor; seeing '/' as additional word separator. : **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. +=== Customisation === + +To customise keybindings, you can just use zsh's bindkey utility. However, if +you plan to to use the `//zle-line-init//' or `//zle-line-finish//' hooks +yourself, make sure you call the following functions in the respective hook: + +- **zle-line-init**: //zle-smkx// +- **zle-line-finish**: //zle-rmkx// + + +This is **required** so the keybindings set up by //grmlzshrc// work. The +reason for this is to turn the terminal into the right mode while zsh's line +editor (zle) is running. This enables us to query //terminfo// about escape +sequences for special keys and thus simplify and generalise our keybinding +section. + + == 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 -.html. - : **855resolution()** If 915resolution is available, issues a warning to the user to run it instead to modify the resolution on intel graphics chipsets. @@ -439,59 +544,32 @@ Lists files in current directory, which have been accessed 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. -: **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). +Simple backup management of a file or directory using standard unix programs. +The target file name is the original name plus a time stamp attached. Symlinks +and file attributes like mode, ownership and timestamps are preserved. : **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. @@ -503,26 +581,18 @@ builtin or reserved word. If the option -c is given, only returns true, if command is a program. : **checkhome()** -Changes directory to $HOME on first invocation of zsh. This is neccessary on -grml systems with autologin. +Changes directory to $HOME on first invocation of zsh. This is necessary on +Grml systems with autologin. : **cl()** 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. +: **dcopyright()** +Shows the copyright of given package in $PAGER. : **debian2hd()** Tells the user to use grml-debootstrap, if she wants to install debian to @@ -533,80 +603,26 @@ 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/ 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-". 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). - -: **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. - -: **hex()** -Prints the hexadecimal representation of the number supplied as argument -(base ten only). +: **grml_vcs_info_toggle_colour()** +Toggles between coloured and uncoloured formats in vcs_info configuration. +This is useful with prompts that break if colour codes are in vcs_info +format expansions (like the `clint' prompt and every other prompt that +uses %v to expand the contents of `$vcs_into_msg_0_'). If you are using +customised vcs_info formats, you shouldn't be using this function, since +it will set all formats to grml's default values (either coloured or plain) +again. : **hgdi()** Use GNU diff with options -ubwd for mercurial. @@ -618,18 +634,6 @@ argument means last revision). : **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. @@ -651,6 +655,9 @@ Returns true, if zsh version is equal or greater than 4.3.3, else false. : **isdarwin()** Returns true, if running on darwin, else false. +: **isfreebsd()** +Returns true, if running on FreeBSD, else false. + : **isgrml()** Returns true, if running on a grml system, else false. @@ -660,83 +667,28 @@ Returns true, if running on a grml system from a live cd, else false. : **isgrmlsmall()** Returns true, if run on grml-small, else false. +: **islinux()** +Returns true, if running on Linux, else false. + : **iso2utf()** Changes every occurrence of the string iso885915 or ISO885915 in environment variables to UTF-8. +: **isopenbsd()** +Returns true, if running on OpenBSD, 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 [,] - -: **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()** +: **mkcd()** 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. If no argument is specified N is set to 1. -: **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. @@ -749,88 +701,24 @@ Example usages: % ls -l *(e:'nt /reference/file':) ``` -: **ogg2mp3_192()** -Recodes an ogg file to mp3 with a bitrate of 192. - -: **oleo()** -Translates the given word using the english - german online -dictionary dict.leo.org. - -: **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 @@ -856,89 +744,33 @@ Example usage: % 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. - -: **swiki()** -Searches articles in the german Wikipedia for the term given as argument. - -: **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". - -: **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. @@ -951,12 +783,6 @@ arguments for details. : **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 @@ -1025,24 +851,6 @@ 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. - -: **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. @@ -1053,25 +861,10 @@ 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. - : **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. - : **ge** (//grep-excuses//) Searches the testing excuses files for a specific maintainer (See: grep-excuses(1)). @@ -1079,12 +872,6 @@ grep-excuses(1)). : **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. @@ -1107,20 +894,10 @@ ssh with possible man-in-the-middle attack enabled : **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. - -: **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. - : **j** (//jobs -l//) Prints status of jobs in the current shell session in long format. -: **l** (//ls -lF --color=auto//) +: **l** (//ls -l --color=auto//) Lists files in long output format with indicator for filetype appended to filename. If the terminal supports it, with colored output. @@ -1131,10 +908,6 @@ 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 @@ -1146,11 +919,10 @@ 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 -to each file name. Additionally the output is colored, if the terminal -supports it. +: **ls** (//ls -C --color=auto//) +Lists directory, 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. @@ -1170,9 +942,15 @@ Lists symbolic links in current directory. : **lsnew** (//ls -rl *(D.om[1,10])//) Displays the ten newest files (long output format). +: **lsnewdir** (//ls -rthdl *(/om[1,10]) .*(D/om[1,10])//) +Displays the ten newest directories and ten newest .directories. + : **lsold** (//ls -rtlh *(D.om[1,10])//) Displays the ten oldest files (long output format). +: **lsolddir** (//ls -rthdl *(/Om[1,10]) .*(D/Om[1,10])//) +Displays the ten oldest directories and ten oldest .directories. + : **lss** (//ls -l *(s,S,t)//) Lists files in current directory that have the setuid, setgid or sticky bit set. @@ -1187,32 +965,15 @@ world executable (long output format). : **lsx** (//ls -l *(*)//) Lists only executable files. -: **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 @@ -1220,41 +981,8 @@ 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. - -: **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 -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 +If user is running a Grml live system, don't ask for any password, if she wants a root shell. : **term2iso** (//echo 'Setting terminal to iso mode' ; print -n '\e%@'//) @@ -1265,22 +993,9 @@ http://www.cl.cam.ac.uk/~mgk25/unicode.html#term). 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 -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. @@ -1289,21 +1004,12 @@ by sudo, if necessary. See au and ag above. 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 -~/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 @@ -1315,7 +1021,7 @@ be used to permantenly change //grmlzshrc//'s STARTUP VARIABLES (see above): \ ``` # show battery status in RPROMPT -BATTERY=1 +GRML_DISPLAY_BATTERY=1 # always load the complete setup, even for root GRML_ALWAYS_LOAD_ALL=1 ``` @@ -1343,7 +1049,7 @@ On non-debian systems, that is not an option, but all is not lost: % wget -O .zshrc http://git.grml.org/f/grml-etc-core/etc/zsh/zshrc ``` -If you would also like to get seperate function files (which you can put into +If you would also like to get separate function files (which you can put into 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 @@ -1492,10 +1198,10 @@ Beckert . = COPYRIGHT = -Copyright (c) 2009-2010 grml project +Copyright (c) 2009-2013 Grml project 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).