ZSh, l'autre interpréteur de commandes

créée le [27/09/2012], par Romain GEORGES

ZSH est un |interpréteur de commandes disponible dans les ports FreeBSD.
Il est très évolué et rencontre beaucoup de succès parmi les utilisateurs avertis.

Configurer

Installez le port shells/zsh et créez l'arborescence de ZSH pour chaque utilisateur :


   # mkdir -p ~/.zsh/rc
   # mkdir -p ~/.zsh/scripts

Le répertoire "scripts" contiendra les scripts spécifiques à cet utilisateur.
Maintenant, définissez zsh comme interpréteur par défaut :

$ chsh

Un buffer s'ouvre dans votre éditeur par défaut, modifier le comme tel et sauver pour opérer la modification :

 #Changing user database information for lecid.
 Shell: /usr/local/bin/zsh
 Full Name: Georges Romain
 Office Location:
 Office Phone:
 Home Phone:
 Other information:

Vous voilà un power user :) !

Vous pouvez automatiser la procédure en définissant un squelette par défaut pour tous les utilisateurs et en définissant ZSH comme shell par défaut dans /etc/login.conf.

h2.Scripts Zsh

Editez le fichier d'initialisation de ZSh, $HOME/.zshrc :

# Resource files
for file in $HOME/.zsh/rc/*; do
  source $file
done

Mise en œuvre de script rc:
h4. Completion étendue de ZSH, /home/lecid/.zsh/rc/completion :

autoload -U compinit
compinit
fpath=(~/zfunc $fpath)

Environnement de ZSH, /home/lecid/.zsh/rc/env :

# si vous travaillez sous X
export TERM='xterm-color'
# alias de base
alias la='ls -la'
alias ll='ls -l'
# pour ls
export BLOCKSIZE=K
export CLICOLOR=enable
# env global
export EDITOR='ee'
export PAGER='less'
# FreeBSD ls
export LSCOLORS='cxgxhxhxbxhxhxbabacaca'
LANGUAGE=fr_FR
export LANG HISTSIZE HISTFILE SAVEHIST LANGUAGE LC_ALL LC_MESSAGE

définition de l'historique des commandes, /home/lecid/.zsh/rc/history :

HISTFILE=~/.history
HISTSIZE=1000
SAVEHIST=1000

définition de l'invite (version spéciale), /home/lecid/.zsh/rc/prompt :

autoload -U colors
colors
host_color="green" 
path_color="yellow" 
date_color="`zsh /home/lecid/.zsh/scripts/load`" 
date_format="%H:%M:%S" 
date="%{$fg[$date_color]%}%D{$date_format}" 
host="%{$fg[$host_color]%}[%n@%m]" 
cpath="%B%{$fg[$path_color]%}%/%b" 
end="%{$reset_color%}" 
PS1="$host$cpath$end#" 
RPS1="$date$end" 

Fonctions avancées

Un script shell externe à rc qui change les couleurs de l'heure en fonction de la charge de la machine :

/home/lecid/.zsh/scripts/load :

#!/usr/local/bin/zsh
declare -i Up=`uptime | awk '{print $10}' | cut -f1 -d ',' `
if [ $Up -ge 2 ]
 then
  echo 'red'
  exit
 else
  if [ $Up -lt 1 ]
   then
    echo 'green'
    exit
   else
    echo 'yellow'
    exit
  fi
fi