Zsh
Download
1 / 21

Zsh - PowerPoint PPT Presentation


  • 138 Views
  • Uploaded on

Zsh. - Larry P. Schrof. Purpose. Spark your interest in zsh To learn more about zsh’s capabilities Expand your productivity. Configuration Files Prompt Tricks Monitoring Logins Aliases The Directory Stack Brace Expansion History: Using fc History Expansion

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Zsh' - luke


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Zsh

Zsh

- Larry P. Schrof


Purpose
Purpose

  • Spark your interest in zsh

  • To learn more about zsh’s capabilities

  • Expand your productivity


Topics covered

Configuration Files

Prompt Tricks

Monitoring Logins

Aliases

The Directory Stack

Brace Expansion

History: Using fc

History Expansion

Parameters: Arrays and Subscripting

Parameters: Subscript Flags

Parameters: Expansion

Filename Generation

Filename Generation: Qualifiers

Programmable Completion

Completion Items

Restricted Mode

ZLE (Zsh Command Line Editor)

Where to get more information.

Topics Covered


Configuration files
Configuration Files

  • Order:

    • /etc/zshenv, then ~/.zshenv

    • /etc/zprofile, then ~/.zprofile (L)

    • /etc/zshrc, then ~/.zshrc (I)

    • /etc/zlogin, then ~/.zlogin (L)

    • /etc/zlogout then~/.zlogout (logout)

  • (I) = Only if interactive. (L) = Only if login


Prompt tricks
Prompt Tricks

  • Arithmetic, command, and parameter expansion available.

  • Escape sequences start with a % (Over 40)

  • Conditional Expressions

    • %(X.true-text.false-text)

  • RPROMPT for right-hand side prompt

  • Formatting and truncating available


Monitoring logins
Monitoring Logins

  • Event format: username@host%line

    • root%console

    • schrof@procmail.org

  • Put events in watch parameter

    • watch=(event1 event2 … eventN)

  • Set the LOGCHECK parameter

  • Formatting available


Aliases
Aliases

  • name=value syntax

  • Global aliases! Define with alias -g

  • Functions are usually preferred


The directory stack
The Directory Stack

  • Used for managing large lists of directories

  • dirs -v to examine stack

  • popd removes a directory from stack, and cd’s to that directory

  • pushd cd’s to a new directory, and places $OLDPWD on top of the stack

  • Can use ~ expansion to reference stack entries


Brace expansion
Brace Expansion

  • Alows you to quickly generate lists in two ways

    • ls -l array{5d,MYd,BIG}

    • touch logfile.9908{01..31}.tmp

      • zsh is smart about zero padding


History using fc
History: Using fc

  • fc loads past commands into editor, then executes them

  • fc -l lists previous commands

  • fc [ -e EDITOR ] [OPTIONS] [old=new …] [first [last ] ]

    • Options: n l d D r t E i m

  • fc is not as direct as history expansion, but a bit easier to use


History expansion
History Expansion

  • Allows you to reference complete or partial past commands

  • All expansions start with

  • Use UP/DOWN arrows in emacs mode

  • CTRL-R in emacs mode is your friend.

  • ^old^new trick

  • designator[:word][:mod1:mod2...]


Parameters arrays and subscripting
Parameters: Arrays and Subscripting

  • Assign: name=(value1 … valueN)

  • Subscripts: name[expr]

    • negative expr counts from end

  • Range: name[expr1,expr2]

  • Replacement: name[expr]=value

    • value can be an array

  • Subscripts work on strings, too!


Parameters subscript flags
Parameters: Subscript Flags

  • $name[(X)expr,(Y)expr2]

    • w splits by words

    • s splits on specified characters

    • f splits on a per-line basis

    • r treats expr as a pattern; returns first item matching expr

    • i returns index of first match

    • R and I just like r and i, but return last match

    • n used with r, R, i, or I. Returns nth match.


Parameters expansion
Parameters: Expansion

  • Standard ksh expansions

    • ${+var} ${var:-word} ${var:=word} ${var:?}

  • Adds more expansions

    • ${name#pattern} ${name%pattern} ${name:#pattern}

  • Any of above can be preceded by a # for length of result.


Filename generation
Filename Generation

  • Set EXTENDED_GLOB variable

  • Operators include *, ?, [], [!], #, ##, <->, |, ^, x~y

  • **/ does recursive search

    • print -l /usr/local/src/**/*.[cho]


Filename generation qualifiers
Filename Generation: Qualifiers

  • Surpasses most other shells

  • Limits wildcard matches

  • After wildcard, enclose list in ()’s

  • Over 40 qualifiers available, including negation


Programmable completion
Programmable Completion

  • Set with compctl command

  • Fully programmable. If zsh doesn’t do what you want, you can write it yourself.

  • Customizable. (menu? Cycle through list? Auto-insert?)

  • zsh can complete ANYTHING!


Completion items

Filenames

Built-in commands

External commands

aliases

global aliases

functions

Shell variables

Environment variables

reserved words

Zsh options

key bindings

Named directories

usernames (files, NIS, etc)

hosts

running jobs

suspended jobs

Anything else you can imagine.

Completion Items


Restricted mode
Restricted Mode

  • Serves well for a guest account

  • http://www.acm.uiuc.edu/workshops/zsh/restricted.html


Command line editor
Command-line editor

  • Emacs, vi-insert, and vi-command modes provided

  • Build your own keymaps from scratch

    • 160+ pre-defined widgets

    • Write your own widgets

  • Rebind any or all portions of keymaps

  • bindkey used to select and modify keymaps

    • man zshmodules for details


More information
More Information

  • Workshop

    • http://www.acm.uiuc.edu/workshops/zsh

  • Homepage

    • http://www.zsh.org

  • FAQ:

    • http://sunsite.auc.dk/zsh/FAQ/


ad