Daca tot pe forum sa discutat despre zsh si sa facut mult TAM TAM

am zis sa ma bag si eu cu un howo pt gentoo

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
emerge zsh zsh-completion
2. Configurarea
Dupa ce am terminat de compilat zsh putem incarca zsh-ul pentru asta tastati in consola zsh
$ 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
% 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.
% 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
% 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.
% autoload -U promptinit
% promptinit
Acum putem vedea mai multe exemple de prompt preconfigurate co comanda
% prompt -p
Pentru a vedea doar lista fara exemple utelizati
% prompt -l
Acum putem schimba promptul care ne place cel mai mult in cazul de mai jos am ales promptul gentoo
% prompt gentoo
O alta optiune puteti crea propriul prompt utelizand variabila PS1
% export PS1="[Test Prompt] > "
[Test Prompt] >
Vedeti lista de mai jos pentru posibile optiuni in crearea promptului personal
%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
% 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
% export HISTSIZE=2000
% export HISTFILE="$HOME/.history"
% export SAVEHIST=$HISTSIZE
Activam optiunea eliminarii inregistarrilor dublicate
% 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
% 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
% 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)
% 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
% 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
# 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
% 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.
% 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.htmlhttp://www.gentoo.org/doc/en/zsh.xmlADDON
Si ca un exemplu final cam asha arata fisierul meu de configurare ~/.zshrc
#!/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