Welcome, Guest. Please login or register.
+  Linux Soft Forum
|-+  Īnvaţă» Tips&Tricks» ZSH pe Gentoo
[Picture 161] [Picture 160] [Picture 159]
Username:
Password:
 
Pages: [1] 2   Go Down
  Print  
Author Topic: ZSH pe Gentoo  (Read 3728 times)
0 Members and 1 Guest are viewing this topic.
mudrii
Veteran
**

« on: January 05, 2007, 01:29:42 AM »

Daca tot pe forum sa discutat despre zsh si sa facut mult TAM TAM Wink am zis sa ma bag si eu cu un howo pt gentoo Wink
ZSH il folosesc de ceva vreme si nu sunt pe departe expert dar pentru cei ce vor sa-l incerce ca intradevar merita vedeti howto-ul de mai jos.

Deci haideti sa incepem.
Totul ce este mai jos a fost testat de catre mine dar nu garantezi ca va merge pt toate configuratiile.
1.Instalarea
Instalam zsh
Code:
emerge zsh zsh-completion

2. Configurarea
Dupa ce am terminat de compilat zsh putem incarca zsh-ul pentru asta tastati in consola zsh
Code:
$ 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

Odata instalat zsh vine defaul configurat destul de rudimentar de acea va trebui ceva configurat inainte sa avem un shell functional.

Tab-completion
In gentoo pentru a uteliza una din cele mai puternice optiuni ale lui zsh tab-completation > trebuieste activata
Code:
% autoload -U compinit
% compinit

Stilul autocompletation implicit al lui zsh este destul de primitiv de acea vom modifica acest stil pentru al face mai user friendly.
Code:
% zstyle ':completion:*:descriptions' format '%U%B%d%b%u'
% zstyle ':completion:*:warnings' format '%BSorry, no matches for: %d%b'

Este o idee buna daca vom activa si optiunea pt autocorectarea comenzilor greshit introduse
Code:
% setopt correctall

Prompts
ZSH vine cu un prompt default destul de urat de acea vom schimba promtul in unul care ni se potriveste cel mai bine.
Pentru asta trebuieste activata optiunea avansata pentru modificarea promptului curent.
Code:
% autoload -U promptinit
% promptinit
Acum putem vedea mai multe exemple de prompt preconfigurate co comanda
Code:
% prompt -p
Pentru a vedea doar lista fara exemple utelizati
Code:
% prompt -l
Acum putem schimba promptul care ne place cel mai mult in cazul de mai jos am ales promptul gentoo
Code:
% prompt gentoo
O alta optiune puteti crea propriul prompt utelizand variabila PS1
Code:
% export PS1="[Test Prompt] > "
[Test Prompt] >
Vedeti lista de mai jos pentru posibile optiuni in crearea promptului personal
Code:
%T System time (HH:MM)
%* System time (HH:MM:SS)
%D System date (YY-MM-DD)
%n Your username
%B - %b Begin - end bold print
%U - %u Begin - end underlining
%d Your current working directory
%~ Your current working directory, relative to ~
%M The computer's hostname
%m The computer's hostname (truncated before the first period)
%l Your current tty
Exemplu
Code:
% export PS1="[%* - %D] %d %% "
[08:44:23 - 06-02-18] /home/username %

History
Default instalat zsh in gentoo nu vine cu optiunea History al comenzilor configurat de acea va trebui configurata de catre utelizator
Activarea optunii zsh history
Code:
% export HISTSIZE=2000
% export HISTFILE="$HOME/.history"
% export SAVEHIST=$HISTSIZE
Activam optiunea eliminarii inregistarrilor dublicate
Code:
% setopt hist_ignore_all_dups
ZSH are o otiune eliminarea in istoria comenzilor rulate a celor comenzi ce au un spatiu in fata, deci activam si aceasta optiune
Code:
% setopt hist_ignore_space
##Exemplu
%  cat /proc/cpuinfo
##observati un spatiu suplimentar in fata comenzii cat /proc/cpuinfo comanda nu va fi salvata in history

Optiuni suplimentare pentru zsh
Putem opta pentru o gama larga de optuni mai jos vom descrie doar doua cele mai utelizate.
Optiunea autocd care va elimina necesitatea introducerii comenzii cd "change directory" vom putea direct accesa directorul prin tastarea numelui acestuia fara comanda cd
Code:
% setopt autocd
##tastati /etc in loc de cd /etc
Daca standardul bash-like globbing nu va satisface putem opta pentru optiuni mai avansate pt globbing (similar cu expresiile regulate)
Code:
% setopt extendedglob
##Optiunea ne va permite executarea de query de exemplu cp ^*.(tar|bz2|gz).

Salvarea setarilor
Pentru a salva modificarile aduse lui ZSH avem doua posibilitati si anume salvarea setarilor pt toti utelizatorii logati in sistem vom edita scriptul de configurare /etc/zsh/zshrc sau daca vrem sa salvam configurarile de mai sus numai pt un sigur utelizator vom edita ~/.zshrc.
In cazul de mai jos editam fisierul pt utelizatorul curent
Code:
% vi ~/.zshrc
#!/bin/zsh
# completion
autoload -U compinit
compinit
# correction
setopt correctall
# prompt
autoload -U promptinit
promptinit
prompt gentoo
#Setting ignoring of duplicates
setopt hist_ignore_all_dups
#Preventing particular entry from being recorded
setopt hist_ignore_space
#Setting autocd option
setopt autocd
#Setting extended globbing
setopt extendedglob

Pentru cei ce vor ca zsh sa devina shellul implicit vom utiliza comanda usermod ca root
Code:
# usermod -s /bin/zsh userlogin
##Unde userlogin este numele utelizatorului din sistem

Pentru utelizatori ce nu au acess root vom edita fisierul de initializare ~/.bashrc si vom adauga inregistrarea
Code:
% echo "exec zsh" >> ~/.bashrc

O a trea optiunea este utelizarea aplicatiei chsh care permite schimbarea shelului utelizatorului logat sau in cazul root poate schimba shell-ul la orice utelizator din system.
Code:
% chsh -s /bin/zsh username

Referinte;
http://aperiodic.net/phil/prompt/
http://www.faqs.org/faqs/unix-faq/shell/shell-differences/
http://zsh.sunsite.dk/Guide/zshguide.html
http://www.gentoo.org/doc/en/zsh.xml

ADDON
Si ca un exemplu final cam asha arata fisierul meu de configurare ~/.zshrc
Code:
#!/bin/zsh

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

# use hashes for faster completion
setopt hash_cmds
setopt hash_dirs
setopt hash_list_all

# use a cache for even faster completion
zstyle ':completion:*' use-cache on
zstyle ':completion:*' cache-path ~/.zsh/cache

# do not complete commands I don't have
zstyle ':completion:*:functions' ignored-patterns '_*'

# ignore filenames already in the command line
zstyle ':completion:*:(rm|kill|diff):*' ignore-line yes

# correction
setopt correctall

# fuzzy match - for autocorrecting 1 error
zstyle ':completion:*' completer _complete _match _approximate
zstyle ':completion:*:match:*' original only
zstyle ':completion:*:approximate:*' max-errors 1 numeric

# prompt
autoload -U promptinit
promptinit
prompt gentoo

# set ignor for duplicates
setopt hist_ignore_all_dups

# preventing particular entry from being recorded
setopt hist_ignore_space

# set autocd option
setopt autocd

# set extended globbing
setopt extendedglob

# history
HISTSIZE=8196
HISTFILE=~/.zsh/history
SAVEHIST=8196
setopt APPEND_HISTORY

# key Setings
bindkey `tput khome` beginning-of-line >/dev/null 2>&1 # Home
bindkey `tput kend` end-of-line >/dev/null 2>&1 # End of Line
bindkey `tput kdch1` delete-char >/dev/null 2>&1 # Del
bindkey `tput kpp` up-history >/dev/null 2>&1
bindkey `tput knp` end-of-history >/dev/null 2>&1
bindkey "^[[A" history-beginning-search-backward
bindkey "^[[B" history-beginning-search-forward
bindkey "^R" history-incremental-search-backward
bindkey "^S" history-incremental-search-forward
bindkey "^[[Z" reverse-menu-complete
bindkey '^[[5~' vi-backward-blank-word # Page Up
bindkey '^[[6~' vi-forward-blank-word  # Page Down

# aliases
alias ls="ls --color=auto"
alias l="ls -la --color=auto"
alias ll="ls -l --color=auto"

eval `dircolors -b`
export ZLS_COLORS=$LS_COLORS

« Last Edit: January 05, 2007, 12:43:13 PM by mudrii » Logged
xplo
Membru
*

« Reply #1 on: January 05, 2007, 10:25:12 AM »

Multumim, pare destul de complet, in stilul celor de pe gentoo.ro  Smiley
Logged
Licaon
Membru
*


« Reply #2 on: January 06, 2007, 05:09:35 AM »

poză?
Logged

mudrii
Veteran
**

« Reply #3 on: January 06, 2007, 05:14:50 AM »

Poza la ce Huh?Huh??

Arata cam asah promptul

gen2serv ~ #
Logged
b3tzi
Membru
*

Dus cu pluta.


WWW
« Reply #4 on: January 06, 2007, 07:30:32 PM »

Poza la ce Huh?Huh??

Arata cam asah promptul

gen2serv ~ #

lol
Logged

Licaon
Membru
*


« Reply #5 on: January 06, 2007, 08:41:17 PM »

pai daca to teai "chinui" sal customizezi...aratal in actiune!
Logged

mudrii
Veteran
**

« Reply #6 on: January 06, 2007, 09:18:25 PM »

Pai Licaon
Ar trebui sa fac video ca sa vezi care este diferenta si cu comentariile de rigoare chiar ca nu ai ce vedea la screen shoot nu difera cu nimic cum arata consola de una bash nu este un GUI environment unde intradevar poate sa creaza o impresie despre functionalitate etc.
Sfatul meu e sa-l incerci si numai asha vei putea aprecia si vedea care sunt diferentele.
Logged
oblio
Admini
**


WWW
« Reply #7 on: January 06, 2007, 09:20:29 PM »

Mai ales că n-are ce să-ţi strice, fă back up al configului, şi pune configul acesta. La fel şi pentru .zshrc-ul meu happy
Logged

Distribuţie: ubuntu | Localitate: Bucureşti | Vārstă: 24

Oh! Everything has a point, and if it doesn't, then there's a point to it.

Oblio's
Licaon
Membru
*


« Reply #8 on: January 06, 2007, 09:36:21 PM »

...mda...marog..pachetu de Zenwalk nare tema 'gentoo' asa ca stau cu tema 'suse'.
am pus zsh ca login la useru meu curent... vedem cum mere Smiley
Logged

Licaon
Membru
*


« Reply #9 on: January 13, 2007, 05:02:17 PM »

destul de fun pana acu...nu ca as folosi mari chestii la shell...adica mai mult completionu, care e marfa
intrebare: cum fac ca atunci cand selectez o comanda anterioara cursorul sa fie la sfarsitul comenzii si nu la inceput?
Logged

gheorghe
Veteran
**


« Reply #10 on: January 13, 2007, 05:14:29 PM »

ctrl + e

Daca ai keybindinguri emacs, adica default.

Cine n-are ce face si are keybindinguri vi

esc  $ si apoi a ca sa scrii.


/LE: La mine vad ca implicit promptul e dupa comanda, si n-am nici o optiune "speciala" prin el.
« Last Edit: January 13, 2007, 05:21:29 PM by gheorghe » Logged
Licaon
Membru
*


« Reply #11 on: January 14, 2007, 09:01:30 AM »

sau apăs END Sad
dar e o tasta in plus... si e un pic cam aiurea, ca deh...reflexul...
alte idei?

@gheorghe: dami si mie .zshrc-u tau sai fac diff cu ala a lu mudrii

/LE: observ ceva... daca e cursorul la inceputu comenzii mai poti mere sus-jos in History... (si faza cu autocompletul de history bazat pe literele deja scrise) ...dar daca eshti la sfarsit nu mai poti mere sus-jos in history... Sad
« Last Edit: January 14, 2007, 09:48:53 AM by Licaon » Logged

gheorghe
Veteran
**


« Reply #12 on: January 14, 2007, 10:19:54 AM »

Asta e un zsh din cygwin cu prompt urat
Code:
# Lines configured by zsh-newuser-install
bindkey -e
# End of lines configured by zsh-newuser-install
# The following lines were added by compinstall
zstyle :compinstall filename '/home/Administrator/.zshrc'

autoload -Uz compinit
compinit
# End of lines added by compinstall

autoload promptinit
promptinit
prompt clint

Nimic special la el...
Logged
unixlust
Membru
*


« Reply #13 on: February 11, 2007, 09:14:28 PM »

Code:
# usermod -s /bin/zsh userlogin
# chsh -s /bin/zsh username

Daca editezi /etc/passwd si schimbi de acolo shellul din /bin/bash in /bin/zsh nu are exact acelasi efect ?
« Last Edit: February 11, 2007, 09:14:54 PM by unixlust » Logged

my blog

And on the 8th day, God gave the people Google so that all the problems of the universe could be researched from one central place. And it was good.
Licaon
Membru
*


« Reply #14 on: February 11, 2007, 10:44:17 PM »

o fi avand, ai o problema cu usermod ?
Logged

Pages: [1] 2   Go Up
  Print  
 
Jump to: