Zsh (Česky)
Zsh je mocný shell se kterým je možno pracovat jako s interaktivním shellem i jako se interpretrem skriptovacího jazyka. Je sice kompaktibilní se shellem Bash, nabízí však další možnosti jako:
- Rychlost
- Vylepšené doplňování klávesou TAB
- Vzlepšený globbing
- Vylepšená práce s poli
- Plně přizpůsobitelný
Zsh Faq nabízí více důvodů proč používat Zsh.
Contents
Instrukce pro instalaci
Než začneš, zjisti který shell právě používáš:
$ echo $SHELL
Instalace
Pro instalaci Zsh balíku, spusť:
# pacman -S zsh
Před nastavením Zsh jako impliticní shell se ujisti jestli byl nainstalován korektně jeho spuštěním např. v okně xtermu nebo tty:
$ zsh
Pokud instalace proběhla hladne, měl by jsi teď vidět neznámý prompt, zatím prostě napiš:
$ exit
Nastavení Zsh jako implicitní shell
Pro změnu uživatelského implicitního shellu bez rootovských oprávnění se používá příkaz chsh. Příkaz chsh lze použít pro změnu implicitního shellu bez rootovských oprvávnění jen pokud je shell uveden v souboru /etc/shells
. Pokud jsi Zsh instaloval použitím pacmana, Zsh již by měl mít odpovídající záznam v /etc/shells
.
Pro pokračování potřebuješ znát plnou cestu k Zsh, proto spusť:
$ which zsh
Změn implicitní shelll pro práve přihlášeného uživatele:
$ chsh -s /bin/zsh
Alternativní cesta ke změně shellu vede přes příkaz usermod. Nevýhodou této metody je potřeba mít k pc rootovský přístup. Více uživatelských účtů může být změněno rychle jako root, použitím příkazu usermod nebo chsh.
Změna implicitního shellu pro více uživatelů použitím příkazu usermod:
# usermod -s /bin/zsh uzivatel
Změna implicitního shellu pro více uživatelů použitím příkazu chsh:
# chsh -s /bin/zsh username
Po opětovném přihlášení si můžeš ověřit, zda je Zsh opravdu tvým implicitním shellem:
$ echo $SHELL
Pokud nemáš rootovská práva a Zsh není zapsán v souboru /etc/shells
ale i přesto by jsi rád používal Zsh jako implicitní shell, přejdi na tento záznam ve Zsh FAQ.
Konfigurace
Prestože je Zsh použitelný 'out of the box', skoro určitě nebude nastavený tak jak by sis přál. Kvůli velkému množství možných nastavení dostupných v Zsh se může vytváření konfiguračního souboru stát časově velice náročnou záležitostí.
Dále je přiložený ukázkový konfigurační soubor, poskytuje několik základních nastavení. Pokud chceš použít tento konfigurační soubor, ulož jej jako .zshrc
ve svém domovském adresáři. Poté jej již můžeš upravovat bez potřeby odhlašování se tímto příkazem:
$ source ~/.zshrc
Ukázkový .zshrc
Tady je základní .zshrc
, který by měl být pro začátek dostačující:
~/.zshrc
autoload -U compinit promptinit compinit promptinit # Tohle nastaví defaultní prompt na walters theme prompt walters
/etc/zprofile
Stejně jako /etc/profile
, který používá Bash, tento soubor je pro globální nastavení Zsh + je to dobré místo pro pouštění skriptů z /etc/profile.d/
a nastavování proměnných prostředí jako např. $PATH.
Při nastavování $PATH atd. v .zshrc
a používání login manažeru jako např. kdm, můžeš zjistit že tyto nastavení nebyly přebrány okením manažerem, zatímco používají /etc/zprofile
.
Obecně řečeno, můžes skopírovat /etc/profile
do /etc/zprofile
.
Ukázková konfigurace:
/etc/zprofile
############### # Zsh profil # ############### export PATH="/bin:/usr/bin:/sbin:/usr/sbin:/usr/X11R6/bin:/opt/bin" export MANPATH="/usr/man:/usr/X11R6/man" export LESSCHARSET="latin1" export LESS="-R" # nahraje profily z adresáře /etc/profile.d # (pokud chceš některý z profilů zakázaz, prostě z příslušného souboru odstraň právo pro spouštění) if [ `ls -A1 /etc/profile.d/
Doplňování příkazů
Asi nejpůsobivější funkcí Zshellu jsou jeho rozšířené schopnosti doplňování. Přinejmenším budeš chtít povolit automatické doplňování ve tvém .zshrc
. Pro povolení automatického doplňování, přidej následující:
~/.zshrc
autoload -U compinit compinit
Pro automatické doplňování obohacené o možnost výběru kurzorovými šipkami přidej toto:
~/.zshrc
zstyle ':completion:*' menu select
Nastavení kláves
Zsh nečte obsah souboru /etc/inputrc
, který říká co který příkaz zaslaný emulátorem terminálu znamená. Pro povolení standardních kláves, přidej něco jako toto:
~/.zshrc
# Nastavení kláves bindkey "\e[1~" beginning-of-line bindkey "\e[4~" end-of-line bindkey "\e[5~" beginning-of-history bindkey "\e[6~" end-of-history bindkey "\e[3~" delete-char bindkey "\e[2~" quoted-insert bindkey "\e[5C" forward-word bindkey "\eOc" emacs-forward-word bindkey "\e[5D" backward-word bindkey "\eOd" emacs-backward-word bindkey "\e\e[C" forward-word bindkey "\e\e[D" backward-word bindkey "^H" backward-delete-word # pro rxvt bindkey "\e[8~" end-of-line bindkey "\e[7~" beginning-of-line # pro ne RH/Debian xterm, nemůže ublížit RH/DEbian xtermu bindkey "\eOH" beginning-of-line bindkey "\eOF" end-of-line # pro freebsd konzoli bindkey "\e[H" beginning-of-line bindkey "\e[F" end-of-line # doplňování uprostřed řádku bindkey '^i' expand-or-complete-prefix
Výzvy příkazového řádku
Tady je rychlý a jednoduchý způsob jak nastavit barevnou výzvu příkazového řádku. Ujisti se že výzva je nastavena na autoload ve tvém .zshrc
. Toho může být dosáhnuto přídáním:
~/.zshrc
autoload -U promptinit promptinit
Nyní si můžeš vypsat dostupné výzvy příkazového řádku:
$ prompt -l
To try one of the commands that is listed, use the command prompt followed by the name of the prompt you like. For example, to use the "walters" prompt, you would enter:
$ prompt walters
Rozšířený .zshrc
Tohle je ukázka rozšířeného .zshrc
:
~/.zshrc
########################################################### # Vlastnosti Zsh export HISTFILE=~/.zsh_history export HISTSIZE=50000 export SAVEHIST=50000 eval `dircolors -b` autoload -U compinit compinit setopt autopushd pushdminus pushdsilent pushdtohome setopt autocd setopt cdablevars setopt ignoreeof setopt interactivecomments setopt nobanghist setopt noclobber setopt HIST_REDUCE_BLANKS setopt HIST_IGNORE_SPACE setopt SH_WORD_SPLIT setopt nohup # PS1 a PS2 export PS1="$(print '%{\e[1;34m%}%n%{\e[0m%}'):$(print '%{\e[0;34m%}%~%{\e[0m%}')$ " export PS2="$(print '%{\e[0;34m%}>%{\e[0m%}')" # Proměnné použité později v Zsh export EDITOR="gvim -geom 82x35" export BROWSER=links export XTERM="aterm +sb -geometry 80x29 -fg black -bg lightgoldenrodyellow -fn -xos4-terminus-medium-*-normal-*-14-*-*-*-*-*-iso8859-15" ################################################################## # Pár věcí k usnadnění práce # povol approximate zstyle ':completion:*' completer _complete _match _approximate zstyle ':completion:*:match:*' original only zstyle ':completion:*:approximate:*' max-errors 1 numeric # doplňování pomocí klávesy TAB pro PID :D zstyle ':completion:*:*:kill:*' menu yes select zstyle ':completion:*:kill:*' force-list always # příkaz cd nevybere rodičovský adresář zstyle ':completion:*:cd:*' ignore-parents parent pwd ################################################################## # Nastavení kláves # http://mundy.yazzy.org/unix/zsh.php # http://www.zsh.org/mla/users/2000/msg00727.html typeset -g -A key bindkey '^?' backward-delete-char bindkey '^[[1~' beginning-of-line bindkey '^[[5~' up-line-or-history bindkey '^[[3~' delete-char bindkey '^[[4~' end-of-line bindkey '^[[6~' down-line-or-history bindkey '^[[A' up-line-or-search bindkey '^[[D' backward-char bindkey '^[[B' down-line-or-search bindkey '^[[C' forward-char ################################################################## # Aliasy # Nastavíme automatické rozpoznání koncovek souborů alias -s html=$BROWSER alias -s org=$BROWSER alias -s php=$BROWSER alias -s com=$BROWSER alias -s net=$BROWSER alias -s png=feh alias -s jpg=feh alias -s gif=feg alias -s sxw=soffice alias -s doc=soffice alias -s gz=tar -xzvf alias -s bz2=tar -xjvf alias -s java=$EDITOR alias -s txt=$EDITOR alias -s PKGBUILD=$EDITOR # Normální aliasy alias ls='ls --color=auto -F' alias lsd='ls -ld *(-/DN)' alias lsa='ls -ld .*' alias f='find |grep' alias c="clear" alias dir='ls -1' alias gvim='gvim -geom 82x35' alias ..='cd ..' alias nicotine='/home/paul/downloads/nicotine-1.0.8rc1/nicotine' alias ppp-on='sudo /usr/sbin/ppp-on' alias ppp-off='sudo /usr/sbin/ppp-off' alias firestarter='sudo su -c firestarter' alias mpg123='mpg123 -o oss' alias mpg321='mpg123 -o oss' alias vba='/home/paul/downloads/VisualBoyAdvance -f 4' alias hist="grep '$1' /home/paul/.zsh_history" alias irssi="irssi -c irc.freenode.net -n yyz" alias mem="free -m" alias msn="tmsnc -l hutchy@subdimension.com" # ekvivalentní příkazu less alias -g L='|less' # command S equivalent to command &> /dev/null & # ekvivalentní příkazu &> /dev/null & # napiš jméno adresáře pro vstoupení do něj compctl -/ cd
Je zde mnoho dalších možností jak si upravit chování Zsh, zjevně příliš mnoho pro probírání zde, podívej se na Zsh manuál pro více informací.
Ukázkové .zshrc soubory
Zde je seznam .zshrc
souborů. Klidně přidej svůj vlastní:
- Øyvind 'Mr.Elendig' Heggstad <=> Základní nastavení, s dynamickou výzvou příkazového řádku a titulkem okna/hardinfo <=> http://arch.har-ikkje.net/configs/home/dot.zshrc
Povolení Unicode (zastaralé)
The latest versions of Zsh support unicode characters. To enable it, just rebuild the package with the Arch Build System. Poslední verze Zsh podporují unicode znaky. Pro jejich povolení znovu sestvat balík s pomocí Arch Build System.
A přidej volbu --enable-multibyte do:
PKGBUILD
build() { cd $startdir/src/$pkgname-$pkgver ./configure --prefix=/usr --bindir=/bin \ --enable-etcdir=/etc/zsh \ --enable-zshenv=/etc/zsh/zshenv \ --enable-zlogin=/etc/zsh/zlogin \ --enable-zlogout=/etc/zsh/zlogout \ --enable-zprofile=/etc/profile \ --enable-zshrc=/etc/zsh/zshrc \ --enable-maildir-support \ --with-curses-terminfo \ --enable-zsh-secure-free \ --enable-multibyte
Odinstalace
Pro případ že se rozhodneš, že Zsh není shell pro tebe a budeš se chtít vrátit Bashi. Nejprve musíš změnit tvůj implicitní shell na Bash.
Následuj, Zsh#Nastavení Zsh jako implicitní shell[broken link: invalid section] pro změnu shellu zpět na Bash, jen nahraď Zsh Bashem.
Nyní můžeš bezpečně odstranit balík Zsh.
Pokud jsi nenásledoval instrukce viz výše, stále ještě můžeš změnt implicitní shell zpět na Bash pomocí editace /etc/passwd jako root. Ukázka:
z:
uzivatel:x:1000:1000:Full Name,,,:/home/username:/bin/zsh
na:
uzivatel:x:1000:1000:Full Name,,,:/home/username:/bin/bash
Zdroje
- IRC kanál: #zsh at irc.freenode.org