ZSH

De Diablotins.org.


Image:brush.png

ZSh, l'autre interpréteur de commandes




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 :