Você vai tomar seu primeiro contacto com zsh.
1. Primeiro, se já o tiver, copie o arquivo de configuração original de seu zsh, para protegê-lo:
cd /
$ cd ~/
$ ls .zshrc
$ sudo cp .zshrc zshrc.original
2. Agora, o edite com seu editor de texto favorito. Apague todas as linhas e troque-as por um arquivo zsh genérico, tipo o do nosso colega do VOL,
Mordecai:
# Opcoes do historico
export HISTFILE=~/.zsh_history
export HISTSIZE=50000
export SAVEHIST=50000
autoload -U compinit compinit
autoload -U zmv
setopt autopushd pushdminus pushdsilent pushdtohome
setopt cdablevars
setopt ignoreeof
setopt interactivecomments
setopt nobanghist
setopt noclobber
setopt nobeep
setopt HIST_REDUCE_BLANKS
setopt HIST_IGNORE_SPACE
setopt SH_WORD_SPLIT
setopt nohup
setopt AUTO_CD
setopt AUTO_LIST
setopt EXTENDED_HISTORY
setopt HIST_IGNORE_DUPS
# desabilita checagem de email
# unset MAILCHECK
#########################################
### Coisas interessantesr
#
### allow approximate
zstyle ':completion:*' completer _complete _match _approximate
zstyle ':completion:*:match:*' original only
zstyle ':completion:*:approximate:*' max-errors 1 numeric
### tab completion for PID :D
zstyle ':completion:*:*:kill:*' menu yes select
zstyle ':completion:*:kill:*' force-list always
### cd not select parent dir.
zstyle ':completion:*:cd:*' ignore-parents parent pwd
## # black magic
zmodload -i zsh/complist
zstyle ':completion:*:default' list-colors ''
## PS1 and PS2
export PS1="$(print '%{\e[0m%}')[$(print '%{\e[1;34m%}%n@%m%{\e[0m%}'):$(print '%{\e[0;34m%}%~%{\e[0m%}')] "
export PS2="$(print '%{\e[0;34m%}>%{\e[0m%}')"
## aliases
alias dir='ls -1'
alias ls='ls --color=auto -F'# colorido
alias lsd='ls -ld *(-/DN)'# somente diretorios
alias lsa='ls -ld .*' # somente arquivos
alias lsr='ls *(om[1])' # listar o mais novo
alias lso='ls -l *(Om[1])'# listar o mais velho
alias mem="free -m" # memoria livre
alias -s png=display # abrir arquivos pela extensao
alias -s jpg=display
alias -s gif=display
alias -s mpg=mplayer
alias -s sxw=soffice
alias -s doc=soffice
alias -s txt=vim
alias -s log=multitail
## inline aliases
alias -g G='| grep'
alias -g L='| less'
## digite um diretorio e entre direto nele.
compctl -/ cd
## carregar o prompt
#. ~/.zshprompt
Se preferir, use outros, como o completo de
SMarcell, etc.
2. Abra um terminal. Ainda será seu bash normal.
Num teste apenas, troque pelo zsh, com o comando
zsh:
zsh
Trocou, veja que tem até relógio, nessa configuração (Figura 1):
3. Agora o teste, um comando qualquer.
Na
página 2, para instalar o zsh (no Sabayon), você instalou Overlays. Vamos ver os Overlays que tem? Para ver no terminal, digite
layman -l, e isto aparece:
layman -l
* mv [Git ] (git://git.o.g.o/user/mv.git )
* plab [Git ] (git://git.o.g.o/user/plab.git )
* rich0 [Git ] (git://github.com/rich0/rich0-over...)
* sabayon [Git ] (git://github.com/Sabayon/for-gent...)
* sabayon-distro [Git ] (git://github.com/Sabayon/sabayon-...)
* stuff [Git ] (https://github.com/megabaks/stuff...)
* sunrise [Git ] (git://git.o.g.o/proj/sunrise-revi...)
* zugaina [Rsync ] (rsync://gentoo.zugaina.org/zugain...)
No zsh, assim que digito o comando
layman, aparecem todos os possíveis comandos relacionados a
layman. Se eu uso
layman -l, aparece dizendo o que o comando faz, isto é lista os Overlays.
Executando o comando, os Overlays instalados aparecem, normal, mas até aí tem vantagem, pois a execução é mais rápida que o bash.
Quando vou digitar, exemplo,
layman --help para ver o help, digito apenas
layman - e pronto, as opções dele (como
-a,
--add e
-d,
--delete) aparecem.
Veja essas várias características do zsh, na Figura 2:
Agora num outro comando, vamos matar um processo:
Exemplo o
GNOME Do. Usaremos o comando
pkill -9 gnome-do. No zsh, quando eu digito apenas
pk, ele já coloca o
pkill, e quando eu digito
gnome-, ele já coloca completo o
gnome-do.
Assim, o uso dele é prático, pois tem autocompletar, auto-correção, etc.
Além disso é muito personalizável e tem muitos recursos, veja por exemplo:
4. Agora você já testou, edite o seu arquivo "/home/usuario/.zshrc", personalizando-o a seu gosto. Pode trocar cores, opções de autocorreção, etc; muita coisa.
Se quiser, baseie-se no meu arquivo "~/.zshrc":
# Arquivo de Configuração para ZSH.
#
# Gravar em ~/.zshrc
#
# Modificado Por Albfneto , VOL, 2013. Versão 12.
#
# Baseado nos arquivos de MordeCai e Smithux VOL:
# http://www.vivaolinux.com.br/etc/.zshrc-mordecai/
# http://www.vivaolinux.com.br/etc/zshrc
# e em vários outros Arquivos para ZSH
#
# Cores diferentes para diretórios, arquivos etc...:
# Côres Gerais:
export LS_OPTIONS='--color=auto'
eval `dircolors -b`
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -l'
alias l='ls $LS_OPTIONS -lA'
# Man pages coloridas:
if [ -e $(`which most > /dev/null`) ]; then
export PAGER='most -s'
export LESSHISTFILE='-'
else
export PAGER=less
fi
# Lista colorida de complementações:
zstyle ':completion:*:default' list-colors ${(s.:.)ZLS_COLORS}
# Opcoes do historico
export HISTFILE=~/.zsh_history
export HISTSIZE=10000
export SAVEHIST=10000
autoload -U zmv
setopt autopushd pushdminus pushdsilent pushdtohome
setopt cdablevars
setopt ignoreeof
setopt interactivecomments
setopt nobanghist
setopt noclobber
setopt nobeep
setopt HIST_REDUCE_BLANKS
setopt HIST_IGNORE_SPACE
setopt SH_WORD_SPLIT
setopt nohup
setopt AUTO_CD
setopt AUTO_LIST
setopt EXTENDED_HISTORY
setopt HIST_IGNORE_DUPS
# Auto-completando com
setopt auto_list
setopt auto_menu
setopt case_glob
setopt list_types
setopt glob_complete
setopt menu_complete
setopt complete_in_word
setopt complete_aliases
autoload -U compinit promptinit
compinit
promptinit
### Configs de Autocompletar e Autocorreção:
#
zstyle :compinstall filename '/home/albfneto/.zshrc'
### allow approximate
zstyle ':completion:*' completer _complete _match _approximate
zstyle ':completion:*:match:*' original only
zstyle ':completion:*:approximate:*' max-errors 1 numeric
# Auto descrição das complementações possíveis:
zstyle ':completion:*:options' description 'yes'
zstyle ':completion:*:options' auto-description '%d'
setopt correct
setopt correctall
## digite um diretorio e entre direto nele.
compctl -/ cd
### tab completion for PID :D
zstyle ':completion:*:*:kill:*' menu yes select
zstyle ':completion:*:kill:*' force-list always
### cd not select parent dir.
zstyle ':completion:*:cd:*' ignore-parents parent pwd
## # black magic
zmodload -i zsh/complist
zstyle ':completion:*:default' list-colors ''
# Auto-completar para o comando 'kill':
zstyle ':completion:*:processes' command 'ps x -o pid,command'
zstyle ':completion:*:kill:*' menu yes select
zstyle ':completion:*:kill:*' force-list always
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'
# Ativando modo 'verbose':
zstyle ':completion:*' verbose 'yes'
zstyle ':completion:*' show-completer
# Prompt, cores etc....
## PS1 and PS2
export PS1="$(print '%{\e[0m%}')[$(print '%{\e[1;31m%}%n@%m%{\e[0m%}'):$(print '%{\e[0;34m%}%~%{\e[0m%}')]$% "
export PS2="$(print '%{\e[0;32m%}>%{\e[0m%}')"
# Outro Prompt, Ajustar prompt alternativo
# [/dir] user@host $ HH:MM:SS
# export PS1="[%B%n%b@%m %3~]\$ "
# export PS1="[Comp:%M Usuario:%n] Dir:%d $% "
export RPS1="%D,%T"
# Adaptado a partir de meu Bash:
#Welcome msg
echo ' _ '
echo ' *v* *** BEM VINDO AO '`hostname`' ***'
echo ' /(_)\ '
echo ' ^ ^ ' `date`
echo ' '
#Sistema
echo ' '
echo ' *** Sistema: '`uname -a`' ***'
echo ' '
echo ' *** Usuario: '`who -m`' ***'
echo ' _ '
# Checa a Hora do Brasil, lista servidores NTP e ajusta Teclado:
echo ' _ '
echo ' *** Hora do Brasil e Servidores: ***'
echo ' _ '
ntpq -p
echo ' _ '
setxkbmap -model abnt2 -layout br -variant abnt2
echo ' _ '
echo '*** PRONTO, OK, EIS SEU TERMINAL, DIGITE SEU COMANDO: ***'
date
# Teste de Shell, default no Sabayon:
# Test for an interactive shell. There is no need to set anything
# past this point for scp and rcp, and it's important to refrain from
# outputting anything in those cases.
if [[ $- != *i* ]] ; then
# Shell is non-interactive. Be done now!
return
fi
# Atalhos, Alias, Para Sabayon, mude para sua Distro
alias lsa='ls -a'
alias lsc='ls -agotpUXh'
alias lst='ls -a -X'
alias terminal='mrxvt'
alias arquivos='nautilus'
alias xinit='xinit &'
alias desliga='sudo init 0'
alias reinicia='sudo reboot'
alias repositorios='sudo equo up'
alias autorepos='sudo equo up && sudo emerge --sync && sudo layman -S'
alias vaiatualizar='sudo equo u --pretend'
alias atualizar='sudo equo u'
alias editar='gksu gedit'
alias internet='/home/albfneto/Desktop/PACOTES/firefox/firefox/firefox %U'
Ele gera este prompt de terminal, com hora, data, mostrando sincronização NTP e cores diferentes etc.:
Quando não quiser mais usar o bash, e quiser trocar definitivamente para o shell zsh, execute este comando:
sudo chsh -s /bin/zsh
Detalhes:
Você também pode trocar no próprio ambiente gráfico (
KDE, GNOME, etc) ou no
Konsole, GNOME Terminal, etc. E também, pode trocar não só o interpretador de comandos (bash zsh) como o próprio tipo de terminal (
Xterm, Iterm, Rxvt, etc).
5. Você pode querer usar
oh-my-zsh (
página 4), para isso, precisa salvar seu arquivo ".zshrc", porque ele será trocado:
cd /
$ cd ~/
$ sudo cp .zshrc .zshrc.classico