[Topic Officiel] zsh (présentation, configuration, T&A, ...)

Première question qu’on se pose tous : Qu’est-ce qu’il a de plus que Bash ?

1) il semble plus rapide a l’execution, niveau conso de mémoire, il semble au même niveau.
2) il permet de personnaliser l’affichage dans la barre des titres, et dispose de la
fonction preexec() qui permet d’afficher la commande en cours d’execution
(si on lance top, top s’affiche dans le titre).
3) Completion avancée des chemins, commandes et paramètres
la completion sous forme de “scroll”, …
4) Correction à la volée, le suprêmissime run-help :
scénario :
#rsync --recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude=distfiles/* --exclude=local/* --exclude=packages/* --progress
merde je ne me souviens plus quoi mettre
1- sous bash Ctrl-C ou nouveau shell puis man rsync et on recommence la commande
2- sous zsh Esc-H sort le man de rsync et quand on quitte le man on récupère la command ou on en était.

et euh… c’est a peu pres tout ce que je sais pour l’instant…

Voilà ma config (/etc/zsh/zshrc) :

[fixed]# Options
setopt inc_append_history

Historique

HISTFILE=~/.zshhistory
HISTSIZE=3000
SAVEHIST=3000

echap + H affiche la manpage

unalias run-help
autoload run-help

Completition emerge

autoload -U compinit promptinit
compinit
promptinit; prompt gentoo

Couleurs bash

eval dircolors -b /etc/DIR_COLORS

Gestion du ls : couleur + touche pas aux accents

alias ls=‘ls --classify --tabsize=0 --literal --color=auto --show-control-chars --human-readable’

Aliases

Demande confirmation avant d’écraser un fichier

alias cp=‘cp --interactive’
alias mv=‘mv --interactive’
alias rm=‘rm --interactive’

Raccourcis pour ‘ls’

alias ll=‘ls -l’
alias la=‘ls -a’
alias lla=‘ls -la’

Completition pour killall

zstyle ‘:completion:*:processes-names’ command ‘ps -e -o comm=’

Completition pour kill

zstyle ‘:completion::processes’ command ‘ps -au$USER’
zstyle ':completion:
::kill::processes’ list-colors ‘=(#b) #([0-9]#)*=0=01;32’

Barre de titre

case $TERM in
xterm|rxvt|(dt|k|E)term)
precmd () { print -Pn “\e]0;$USER@$HOST:%~\a” }
preexec () { print -Pn “\e]0;$USER@$HOST $1\a” }
;;
esac

Le prompt

if [ id -u -eq 0 ]; then
PROMPT=$(echo ‘%{\033[01;31m%}%m %{\033[01;34m%}%1~ # %{\033[00m%}’)
else
PROMPT=$(echo ‘%{\033[01;32m%}%n@%m %{\033[01;34m%}%1~ $ %{\033[00m%}’)
fi[/fixed]
Et un scrot de la bête en action :smiley:

Utilisateurs de zsh, faites tourner les trucs et astuces dont vous disposez (surtout les raccourcis. :wink:
Les autres, n’hésitez pas à essayer, ça vaut le détour ! :slight_smile:

:jap:

Par contre question gestion des variables d’environement c’est mieux que bash?

pour l’instant je gère pareil (export, unset, …), je ne sais pas si zsh a des particularités sur ce point.

Intéressant ton topic lith :slight_smile:

NB : détour [:-] :wink: (à # a aussi ;)).

up !
la derniere documentation en français : ftp://nephtys.lip6.fr/pub/unix/shells/zsh/zsh-4.2.1-doc.tar.bz2
le wiki : http://www.zshwiki.org/cgi-bin/wiki.pl
-l’auto completion avec les man pages, la commande kill… est vraiment excellente
certains operateurs de redirection qui n’existent pas en bash -egalement :
[fixed]lordaj76@Winston Textes $ echo “test” <> test
test
[/fixed]
affiche la sortie standard tout en ecrivant dans le fichier
-autre exemple : rediriger la sortie standard et la sortie d’erreur en une seule commande :
[fixed]lordaj76@Winston ~ $ find /etc -name passwd
/etc/pam.d/passwd
/etc/passwd
find: /etc/ppp/peers: Permission non accordée
find: /etc/chatscripts: Permission non accordée
lordaj76@Winston ~ $ find /etc -name passwd &>> log
lordaj76@Winston ~ $ cat log
/etc/pam.d/passwd
/etc/passwd
find: /etc/ppp/peers: Permission non accordée
find: /etc/chatscripts: Permission non accordée[/fixed]
et y a plein d’autres possibilites, ce shell est un petit bijou :wink:

edit :redirection sans commande :
[fixed]
lordaj76@Winston / $ < config-2.6.8| grep -i i2c_via
CONFIG_I2C_VIA=y
CONFIG_I2C_VIAPRO=y
[/fixed]

interessant tout ça, merci :jap:

Autocompletion avec les modules aussi ( modprobe te donne la liste des modules )

Autocompletion pour emerge aussi

Autocompletion pour les demons :slight_smile:

Si je met le service puis , il me propse start et stop :slight_smile:

Autcompletion pour les unmerge ( pratique pour savoir tous les paquaes installés)

Autcompletion pour rc-uppdate add/remove le daemon boot/default …

Je suis en train de tester zsh, c’est clair que c’est bien, mais j’ai un vilain bug, quand je fais certins trucs comme ‘debut’ ‘fin’ ou ‘suppr’ il me met un ‘~’ à la place, pas top quand même niveau ergonomie … quelqu’u aurait une solution SVP ? (bien sur pas de problème avec bash)

Je me sers de zsh avec les fichiers de config d’alexis ,il sont vraiment pas mal on les trouves sur
http://people.via.ecp.fr/~alexis/formation-linux/config/
prendre zshrc zshenv zlogin zlogout dir_colors
A mettre dans /etc ou /etc/zsh suivant la distrib

J’avais ce bug sous la MDK 10.0 mais depuis que je suis sous Ubuntu, je n’ai plus de probleme. Je n’ai pas vraiment cherché à comprendre, mais je vais cherché (peut-etre est-ce la version de zsh qui est plus recente que celle que j’avais sous MDK).

Sinon je plussoie totalement pour la completion qui est bien plus performante je trouve sous zsh. En revanche, je me suis apercu d’un petit defaut: sous bash, si j’ai un repertoire avec des .tar et que je veux les decompresser, je fais un


for i in `ls *.tar`
do
tar xvf $i
done

et ca marche. Par contre sous zsh, il me met un output bizard pour le ls. Il me rajoute une sorte de caractere d’echappement du genre ]35156… avant chaque fichier ce qui fait que tar ne les trouve pas evidemment. Le ls marche parfaitement lorsqu’il est executé tout seul mais dans le for, il merde et je ne sais pas pourquoi.
Ce n’est pas super genant mais si queslqu’un sait d’où ca peut venir et comment yu remedier, ca serait sympa :slight_smile:

Sinon, pour mes alias, j’ai rajouté les options -h aux commande df et du, et puis aussi l’option --max-depth=1 pour du puisque generalement je ne cherche la taille que des sous repertoires du dossier dans lequel je me trouve.

Ah si, un autre truc que j’aimerais savoir aussi: sous bash, il etait possible de sauter une ligne dans le PS1, mais je n’ai pas trouver dans la man de zsh. Ca permettait d’y voir un peu plus clair.

J’ai exacement le même problème, c’est sûrement du à une configuration par defaut, il faudrait que je regarde ça (dans les fichier de config zsh d’alexis (qui est l’auteur d’une doc génial pour Debian même si je suis devenu gentooiste par la suite :ane:) par exemple)

Enfin vu la date du post, peut-être que tu as résolue ton problème [:ane_rit]

Lith: fais en un wiki!

Non, ce n’est pas un probleme de zsh mais de votre terminal plutot je pense :wink: . Essayer avec gnome-terminal par exemple pour voir si ca fait la même chose.

Bon sinon est-ce que vous avez ce bug qui est très chiant:
Quand je tape un caractère accentué et que j’efface la ligne avec backspace, zsh me decale les lettres ce qui fait qu’il m’efface autant de caractère de mon PS1 que j’ai taper de caractères accentué [:rouch:3] . Ensuite, la ligne est inutilisable, je suis obligé de faire un ctrl+C.
Autre exemple: si je fais un ps aux | grep machin et que je me plante pour faire le “|” (en faisant un “è” par exemple), et bien lorsque je lance la commande (corrigée) il ne me reconnait plus le “|” et il me sort: commande inconnue: grep :heink: .
Je suis sous Ubuntu Hoary en UTF-8 et ca foire aussi sur une Kubuntu hoary en ISO9958-1 (je me rappelle plus l’ISO exact)

Je pense aussi , ca m arrive avec putty mais jamais en ssh par ubuntu.(pour une passerelle debian avec zsh d"alexis)
bel [:magictwin] rouch

Bon, vraiment personne n’utilise zsh ou je suis le seul a avoir ce probleme ?
J’ai essayé avec la version 3 mais ca fait pareil :frowning:

Au fait, j’ai refait des tests, ça ne foire qu’avec UTF8, en iso8859-1 ça marche niquel (mais par contre on n’a plus les caractères japonais/chinois/coréens/arabes, ce qui est très handicapant :stuck_out_tongue: )

Naaaaaannnnnnnnnnnnn !!!
J’ai pas envie de quitter UTF-8 (juste paske ca fait bien sur le cv :o ).
Bon bah je vais devoir me resigné peut-etre…

c’est parce que dans ton zshrc tu utilises l’option color pour le ls, et bien sur il affiche les caractères d’échappement correspondant à la couleur.

J’ai récement récupéré une config que j’ai un peu allégée et simplifiée, elle est optimisée pour gentoo (toutes les commandes de portage supportent la completion) mais pour tout le reste elle est utilisable partout

Dans les trucs nouveaux et interessants :

  • completion pour kill, killall
  • completion des grands softs (comme mplayer)
  • completion pour portage
  • possibilité de se déplacer dans la liste proposée à la completion avec les fleches du clavier :smiley:
  • correction des fautes de frappe
  • quelques alias bien sympatiques (‘l’ pour ‘ls -1’, ‘df’ pour ‘df -h’, etc …)

et surement encore pleins d’autres trucs

Dispo : http://ftp.spider-serv.net/zsh.tar.gz (remplacer (en faisant un backup) votre /etc/zsh)
S’il se plaint du manque de fichier DIR_COLORS : http://ftp.spider-serv.net/DIR_COLORS à placer dans /etc

sous les autres distribs que gentoo, il y a la completion pour portage à virer je pense …

Enjoy :smiley: