ZSH

De Diablotins.org.


ZSh, l'autre interpréteur de commandes
Image:brush.png
ZSH est un interpréteur de commandes disponible dans les ports.


Il est très évolué et rencontre beaucoup de succès parmis 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.

Scripts Zsh

Éditez 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:

  • 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'
  • définition de l'historique des commandes, /home/lecid/.zsh/rc/history:

 
HISTFILE=~/.history
HISTSIZE=1000
SAVEHIST=1000
LANGUAGE=fr_FR
export LANG HISTSIZE HISTFILE SAVEHIST LANGUAGE LC_ALL LC_MESSAGE
  • 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
Projets :