Le shell interactif : zsh.

zsh est un interpréteur de commande (un shell). Il a été écrit par Paul Falstad en 1990.
J'en ai souvent entendu parler, mais je ne m'y suis jamais mis, continuant à utiliser bash(qui est d'ailleurs le shell par défaut de beaucoup de distributions) par habitude. Mais j'ai commencé à utiliser zsh en stage et il m'a vraiment conquis. Je vais vous présenter ce qui ma principalement plu dans zsh et comment le configurer.

1 Installation.

L'installation se fait par paquet pour toutes les distributions. Par exemple, pour Ubuntu : apt-get install zsh.

Après l'installation, lors du premier lancement de zsh, vous aurez un menu. Il permet de créer un fichier zshrc (le fichier de configuration de zsh) minimal. Vous pouvez aussi choisir de ne pas le créer, ou créer un fichier vide (évitant ainsi le menu à chaque démarrage). Je vous conseille bien sur de faire la configuration, même si par la suite vous allez surement modifier ce fichier, cela fait un bon début quand même.

Pour utiliser zsh comme shell par défaut il y a la commande chsh.
Cette commande vous demandera le shell à utiliser, répondez /bin/zsh.
Vous pouvez aussi modifier le fichier /etc/passwd, et remplacer votre shell (à la fin de la ligne) par /bin/zsh.

2 Pourquoi zsh ?:

1. Complétion très performante.

La complétion (votre shell complète la commande lorsque vous appuyez sur <Tab>) est puissante, plus que sous bash.
Par exemple, si vous utilisez la complétion après la commande "cd", zsh ne vous proposera que des nom de répertoires. Ou après ssh il vous proposera les hôtes qui sont stockés dans /etc/hosts. La complétion se fait aussi sur les options des programmes, des pages de man,...

La complétion est en plus entièrement configurable avec "compinit"

2. Correction des commandes tapées :

zsh permet la correction des commandes tapées.

Exemple :
[xenom@myhost ~]% nanp .zshrc                                           (21:34)
zsh: correct 'nanp' to 'nano' [nyae]?


nyae pour non/oui/annuler/éditer. Non exécute la commande sans correction, oui exécute la commande corrigée, annuler reviens sur un prompt vide et éditer sur le prompt avec la commande.

3. Le prompt


L'invite de commande est personnalisable, et il est possible d'avoir une invite à droite de l'écran, qui disparaît si la commande est longue.
Les variables sont PS1 et RPS1. Elles se configurent sur le même principe que bash, mais la syntaxe est différente.

Quelques variables :

%T      Heure système (HH:MM).
%*     Heure système (HH:MM:SS).
%D     Date système (YY-MM-DD).
%n     Nom d'utilisateur.
%B - %b     Balises de début - fin de l'affichage en gras.
%U - %u     Balises de début - fin de l'affichage souligné.
%d     Répertoire de travail courant long.
%~     Répertoire de travail courant relatif à ~.
%M     Nom d'hôte de l'ordinateur.
%m     Nom d'hôte jusqu'au premier ".".
%#    # si utilisateur root, % sinon.

La liste : http://zsh.sunsite.dk/Doc/Release/zsh_12.html#SEC40

4. le globbing

Le "globbing" est l'application d'un motif sur une liste, c'est l'usage des expressions régulières en fait.

zsh permet une utilisation assez poussée : par exemple "**" permet de rechercher dans les sous repertoires.
ls *(sh|py) liste les fichier/dossiers finissant par "sh" ou "py".

zsh permet aussi une recherche par type de fichier :
Fichier :                     .
Fichier lisible :           r
Fichier inscrivable :   w
Exécutable :              x
Répertoire :               /
Lien symbolique :      @

Pour des infos plus détaillés il y a le man zshexpn

5. Les options.

Les options de zsh sont activables/désactivables grâce aux commandes setopt/unsetopt. Pour avoir la liste des options, faites <Tab> apres setopt, grace à l'autocomplétion de zsh vous pourez voir les options disponibles.

Il y deux avantages, vous avez le choix de celles que vous voulez utiliser et pas, et aussi un shell leger, car ne sont actives que celles qui sont utilisées.

En voici quelques unes :
always_to_end : si la complétion est réalisé au milieu d'une commande, le curseur revient à la fin.
autocd : cd automatique, permet de changer de répertoire sans indiquer cd.
beep : bip système.
correct : correction "orthographique" des commandes.
hist_verify : Quand la commande commence par "!" pour utiliser l'historique, zsh affiche la commande dans le prompt sans l'executer.
hist_ignore_dumps : ne pas écrire les doublons dans l'historique.


Liste complete : man zshoptions
ou http://zsh.dotsrc.org/Doc/Release/zsh_27.html

6. Les alias.

Il est bien sur possible d'utiliser des alias. Mais zsh permet d'utiliser des alias sur les suffixes. Cela permet d'utiliser son application/commande favorite pour un type de fichier.
Exemples :
alias -s sh="nano"
alias -s jpeg="gpicview"

Avec ces alias, si je fait script.sh, il sera automatiquement ouvert avec nano.

3 Configuration :

Il y a deux fichiers de configuration principaux :
zshrc et zshenv.

zshrc est le fichier de configuration principal de zsh, il contient les options, les alias, les fonctions,...
Un exemple (très simple):

zstyle :compinstall filename '/home/xenom/.zshrc'

autoload -Uz compinit promptinit
compinit

promptinit

# Options
setopt correct
setopt hist_verify
setopt nobeep
setopt HIST_IGNORE_DUPS

# Alias
alias ls='ls --color=auto'
alias halt='sudo halt'
alias reboot='sudo reboot'

# Raccourcis clavier
# Redefini Del & Ins
bindkey '^[[3~' delete-char
bindkey '^[[2~' overwrite-mode
bindkey -e



zshenv contient les variables d'environnement (elles peuvent etre aussi etre dans zshrc)
Un exemple :

HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000
PS1="[%n@%M %~]%# "
RPS1="%{"$'33[01;34m'"%}(%T)%{"$'33[00m'"%}

Il reste encore beaucoup d'options et beaucoup à dire, ceci n'est qu'un aperçu des fonctions de zsh qui m'ont intéressées dès le début , je vous conseille d'aller faire un tour dans les pages de man et sur internet pour trouver toutes les options qui vous sont utiles ;).

Site officiel.

Vus : 264
Publié par Génération Linux : 126