Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Guia de Instalação e Configuração da zsh no Gentoo GNU/Linux
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Portuguese Documentação, Ferramentas e Dicas
View previous topic :: View next topic  
Author Message
stilldre
n00b
n00b


Joined: 14 May 2007
Posts: 11
Location: Brasil

PostPosted: Mon May 14, 2007 7:14 pm    Post subject: Guia de Instalação e Configuração da zsh no Gentoo GNU/L Reply with quote

Conteúdo:

1. Instalação;
2. Configuração;
3. Configurações de Salvamento(gravação de configurações);
4. Tornando a zsh na shell padrão.

1. Instalação

Instalando zsh

Para instalar a zsh sob o Gentoo, precisaremos primeiramente instalar os pacotes app-shells/zsh (o próprio zsh) e app-shells/zsh-completion (scripts complementares da zsh).

Listagem de Código 1.1: Instalando zsh
# emerge zsh zsh-completion

Entrando em zsh

Quando você executar zsh pela primeira vez, você verá a seguinte mensagem. Você poderá ignorar esse menu pois criaremos nosso arquivo de inicialização mais tarde neste guia.

Listagem de Código 1.2: Ignorando a configuração inicial

$ zsh
This is the Z Shell configuration function for new users, zsh-newuser-install.
You are seeing this message because you have no zsh startup files
(the files .zshenv, .zprofile, .zshrc, .zlogin in the directory
~). This function can help you with a few settings that should
make your use of the shell easier.

You can:

(q) Quit and do nothing. The function will be run again next time.

(0) Exit, creating the file ~/.zshrc containing just a comment.
That will prevent this function being run again.

(1) Continue to the main menu.

--- Type one of the keys in parentheses --- q

2. Configuração

Introdução

Para iniciar uma única sessão zsh, execute zsh, para uma solução permanente, verifique o capítulo Configurações de Salvamento(gravação de configurações). Após a instalação, zsh parece simples e até mesmo limitada em funcionalidade. Para mudar isso, diversas mudanças na configuração precisam ser realizadas.

Compleção-com-TAB Avançada

Para ativar o famoso sistema de compleção-com-TAB da zsh, precisaremos executar os seguintes comandos:

Listagem de Código 2.1: Ativando compleção

% autoload -U compinit
% compinit

O sistema de compleção padrão é feio e simplista. Se você quiser melhorar sua aparência, execute os seguintes comandos:

Listagem de Código 2.2: Melhorias no sistema de compleção

% zstyle ':completion:*:descriptions' format '%U%B%d%b%u'
% zstyle ':completion:*:warnings' format '%BSorry, no matches for: %d%b'

Correção de comandos

Também é uma boa idéia ativar a auto-correção dos comandos digitados:

Listagem de Código 2.3: Ativando auto-correção

% setopt correctall

Título

O título no entanto pode parecer chato, mas podemos ajustá-lo facilmente em alguns passos. Primeiro, temos que iniciar o suporte avançado a títulos:

Listagem de código 2.4: Ativando títulos avançados

% autoload -U promptinit
% promptinit

Nota: Se você está utilizando diversos prompts, e não quer utilizar um título para cada um deles, você pode usar o comando pormpt -l para listar os títulos disponiveis

Outra opção é criar seu próprio título. Para fazer isso você precisará ativar a variável de ambiente PS1.

Listagem de Código 2.6: Um título customizado simples

% export PS1="[Test Prompt] > "
[Test Prompt] >

Enquanto for proveitoso ser capaz de criar um título customizado, zsh também provê muitas sequências de escape que permitem que informação do sistema seja mostrada no título. Abaixo algumas das sequências de escape:

Sequência Exibição
%T Horário do sistema (HH:MM)
%* Horário do sistema (HH:MM:SS)
%D Data do sistema (YY-MM-DD)
%n Nome de usuário
%B - %b Inicia - termina texto em negrito
%U - %u Inicia - termina sublinhado
%d Diretório atual
%~ Diretório atual, relativo ao ~
%M Nome da máquina
%m Nome da máquina (truncado antes do primeiro periodo)
%l Terminal atual (tty)

Estas sequências de escape podem simplesmente serem inseridas na variável de ambiente, PS1, e zsh as interpretará automaticamente.

Listagem de Código 2.7: um título mais complexo

% export PS1="[%* - %D] %d %% "
[08:44:23 - 06-02-18] /home/username %

Histórico

Infelizmente, a configuração padrão da zsh no Gentoo não inclui suporte ao comando de histórico. Trabalhar com uma shell sem histórico é muito frustrante, portanto devemos executar os seguintes comandos:

Listagem de Código 2.8: Configuração básica de histórico

% export HISTSIZE=2000
% export HISTFILE="$HOME/.history"

(O histórico não será salvo sem o seguinte comando)
% export SAVEHIST=$HISTSIZE

Para evitar que o histórico grave entradas duplicadas (como um ls -l utilizado diversas vezes em uma única sessão de shell), você pode ativar a opção hist_ignore_all_dups:

Listagem de Código 2.9: Evitando duplicatas

% setopt hist_ignore_all_dups

Uma dica para prevenir que entradas específicas sejam gravadas no histórico é precedê-las por pelo menos um espaço.

Listagem de Código 2.10: Prevenindo entradas específicas de serem gravadas em histórico

% setopt hist_ignore_space

(Este comando não será gravado. Note o espaço extra antes dele.)
% cat /proc/cpuinfo

Opções Diversas

Você pode ativar a opção autocd se quiser evitar a digitação tediosa do comando cd para mudar de diretório (por exemplo /etc ao invés de cd /etc)

Listagem de Código 2.11: Ativando a opção autocd

% setopt autocd

Se a opção tipo-bash para uso de caracteres 'coringa' não satisfaz você, a opção extendedglob deve ser utilizada para ativar opções extendidas de 'coringas' (algo similar a expressões regulares).

Listagem de Código 2.12: Ativando opção extendida de coringas

% setopt extendedglob

Quando a opção acima estiver ativa, você poderá utilizar consultas extendidas através de coringas como em cp ^*.(tar|bz2|gz).

3. Configurações de Salvamento(gravação de configurações)

Gravando configurações zsh

Uma vez personalizada a zsh, é uma boa idéia gravar tais opções como padrão para a shell zsh no sistema. Um meio possível de atingir tal objetivo é escrever nossas configurações no script /etc/zsh/zshrc. Alternativamente, podemos torná-las padrão para nossa conta de usuário apenas editando ~/.zshrc.

Listagem de Código 3.1: ~/.zshrc (um exemplo)

#!/bin/zsh

# compleção
autoload -U compinit
compinit

# auto-correção
setopt correctall

# titulo - prompt
autoload -U promptinit
promptinit
prompt gentoo

4. Tornando a zsh na shell padrão.

Opção para usuários com privilégios root

Podemos trocar a shell para um determinado usuário com o comando usermod.

Listagem de Código 4.1: Trocando permanentemente a shell para zsh usando usermod

# usermod -s /bin/zsh userlogin

Alternativo para usuários não-root

Se o administrador do seu sistema (apesar dos pedidos gentis) se recusa a ativar zsh como shell padrão para você, você pode fazer com que bash execute zsh na inicialização, tudo o que você precisa fazer é fazer uma pequena modificação no ~/.bashrc do sistema.

Listagem de Código 4.2: ~/.bashrc exemplo

(Adicione a seguinte linha ao ~/.bashrc do seu sistema)
exec zsh

Outro método para trocar shells é usar o comando chsh (um utilitário usado para trocar a shell de login de um usuário). Um usuário comum pode trocar a shell de login apenas para sua própria conta. Como root, você pode trocar a shell de login para qualquer usuario.

Listagem de Código 4.3: Trocando a shell para zsh permanentemente com chsh

(Substitua "nome" pelo seu nome de usuário)
$ chsh -s /bin/zsh nome
_________________
while ( love & passion ) {
for( fight = 0 ; rights < freedom ; rights++ )
fight = standup( rights );
free( zion );
}
Back to top
View user's profile Send private message
mark_alec
Bodhisattva
Bodhisattva


Joined: 11 Sep 2004
Posts: 6066
Location: Melbourne, Australia

PostPosted: Tue May 15, 2007 10:55 am    Post subject: Reply with quote

Moved from Portuguese to Documentação, Ferramentas e Dicas.
_________________
www.gentoo.org.au || #gentoo-au
Back to top
View user's profile Send private message
stilldre
n00b
n00b


Joined: 14 May 2007
Posts: 11
Location: Brasil

PostPosted: Tue May 15, 2007 3:47 pm    Post subject: Obrigado Reply with quote

Realmente o post precisava mudar de seção, pois se trata da tradução de uma guia da documentação. Muito obrigado.
_________________
while ( love & passion ) {
for( fight = 0 ; rights < freedom ; rights++ )
fight = standup( rights );
free( zion );
}
Back to top
View user's profile Send private message
MetalGod
Bodhisattva
Bodhisattva


Joined: 10 Mar 2003
Posts: 816
Location: Portugal

PostPosted: Wed Aug 08, 2007 3:59 am    Post subject: Reply with quote

wow fiquei impressionado eu sabia que a zsh era bastante mais poderosa que a bash mas este howto esta o maximo.
Parabens
_________________
ex: Gentoo Linux Developer: amd64 media-optical sound gnome
ex: Portuguese Moderator
------------------------------------------------------------------------------
God Doesn't Play Dice
Back to top
View user's profile Send private message
Hal[PT]
n00b
n00b


Joined: 09 Feb 2003
Posts: 33
Location: Lisbon

PostPosted: Thu Aug 30, 2007 9:00 pm    Post subject: Mais algumas dicas sobre a zsh Reply with quote

Outras coisas "interessantes" na utilização da zsh...

Problemas com teclas especiais? (Home,End)
Se a zsh não estiver a gostar das teclas Home e End a solução é simples:
Code:
$ cat
Carregar na tecla Home, há de aparecer algo assim: ^[[1~
Carregar na tecla End, há de aparecer algo assim: ^[[4~

O código das teclas pode variar. Eu dependendo do terminal apanho com vários códigos. Depois é só editar os ficheiros de init (como o .zprofile) acrescentando o seguinte:
Code:
bindkey '^[[1~' beginning-of-line
bindkey '^[[4~' end-of-line

claro está, substituindo o código da tecla por aquele que apareceu quando correu o cat. Pode ainda chegar a soluções mais sofisticadas usando a variável $TERM. Nos meus ficheiros tenho algo como
Code:
if [[ $TERM = "rxvt" ]]; then
    bindkey '^[[7~' beginning-of-line
    bindkey '^[[8~' end-of-line
else
    bindkey '^[[1~' beginning-of-line
    bindkey '^[OH' beginning-of-line
    bindkey '^[[4~' end-of-line
    bindkey '^[OF' end-of-line
    bindkey '^[[3~' delete-char
fi


Procura no histórico on-the-fly
Quantas vezes não acontece querer ver um comando que se fez há já algum tempo e então carregar 238491248 vezes na tecla para cima ou ter de fazer um grep ao ficheiro de history... Pois com a zsh isto pode ser brutalmente simplificado. Eu uso este maravilhoso keybinding para me salvar a vida nessas situações:
Code:
bindkey '^R' history-beginning-search-backward

O que é que isto faz? Sempre que estou na linha de comandos e faço Ctrl+R, aparece uma segunda prompt para escrever a search string. A prompt do comando mostra o último comando que se identifica com a dita cuja. Em jeito de printscreen...
Code:
$ comando muito complicado que queria encontrar
bck-i-search: complic_
Esta feature é super útil e quando a gente se habitua passa a fazer imensa falta!


Corrigir só onde deve...
Às vezes a correcção automática da zsh pode ser muito irritante. Por exemplo para renomear um ficheiro com "mv malexcrito malescrito" ele vai perguntar se o segundo argumento "malescrito" deve ser substituído pelo nome do ficheiro que ele encontra, oferecendo-se assim para substituir o comando por "mv malexcrito malexcrito"... nada do que a gente quer. Faz portanto sentido para certos comandos desactivar a correcção automática. Algo que se pode fazer da seguinte maneira (neste caso particular: mv, cp, mkdir e rm)
Code:
alias mv='nocorrect mv'       # no spelling correction on mv
alias cp='nocorrect cp'       # no spelling correction on cp
alias mkdir='nocorrect mkdir' # no spelling correction on mkdir
alias rm='nocorrect rm' # no spelling correction on rm


E para acabar...
Só dizer que a zsh é a melhor shell :) Ela dá até para fazer pipocas, mas ainda não consegui descobrir como :roll:
Back to top
View user's profile Send private message
stilldre
n00b
n00b


Joined: 14 May 2007
Posts: 11
Location: Brasil

PostPosted: Sat Sep 01, 2007 1:44 pm    Post subject: Reply with quote

Muito bom complemento, obrigado!
Lembrando que a documentação em inglês pode ser encontrada nos links abaixo:
http://zsh.sunsite.dk/Doc/
e
http://zsh.sunsite.dk/Intro/intro_toc.html
_________________
while ( love & passion ) {
for( fight = 0 ; rights < freedom ; rights++ )
fight = standup( rights );
free( zion );
}
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Portuguese Documentação, Ferramentas e Dicas All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum