ot acidmax(17-10-2003)

reiting (29)   [ dobre ]  [ zle ]

Printer Friendly Variant za otpechatvane

Sudurzhanie:
----------------------------------------------------
1. Obshta informatsiia.
2. Izpolzvane na avtomatichnoto dopulvane na komandi.
3. Dopulvane chrez menyu.
4. Drugi vuzmozhnosti.
5. Konfiguratsionni failove
6. Komanden red.
7. Finalni dumi.
8. Resursi.
9. Primeren .zshrc konfiguratsionen fail.
-----------------------------------------------------



[1. Obshta informatsiia]

Sushtestvuva goliamo raznoobrazie ot shell-ove (komandni interpretatori za konzola). Niakoi sa dobri za skriptirane, drugi za interaktivna rabota i tochno zsh spada kum vtorite (koeto ne mu prechi sushtevremenno da e dobur za skriptirane). Demonstriraneto na moshtta na zsh ostavia zakoravelite bash potrebiteli sus otvorena usta, taka che reshih da vi zapoznaia nakratko sus vuzmozhnostite mu.

Ako niamate zsh instaliran na mashinata si, mozhete da go vzemete ot http://www.zsh.org/ ili ot instalatsionnoto CD na distributsiiata vi.

Nezavisimo ot tova kolko moshten e zsh, toi ne e shiroko razprostranen. Osnovnata prichina za tova e, che toi ne e podrazbirashtiia se shell za Linuks distributsiite. Tazi chest se pada na GNU bash i ne e iznenadvashto, che povecheto Linuks potrebiteli izpolzvat edinstveno nego.

Edin ot problemite pri zapoznavane sus zsh e che trudno da se reshi otkude da se zapochne. Rukovodstvoto e dostupno na http://zsh.sunsite.dk/Doc/ , sushto taka ima i Rukovodstvo na Potrebitelia, namirashto se na http://zsh.sunsite.dk/Guide/, no te sa prepulneni s informatsiia i ne e napulno iasno kak da se izpolzvat edni ot nai-interesnite funktsii na shell-a. Za shtastie, i bash i zsh vzaimstvat osnovnite idei ot sh, taka che prehvurlianeto na vashata bash konfiguratsiia na zsh ne e trudno.



[2. Izpolzvane na avtomatichnoto dopulvane na komandi]

Zsh ima udivitelno moshtni vuzmozhnosti za dopulvane na komandi s [Tab] no povecheto potrebiteli greshno predpolagat, che tova e neshto koeto otnema mnogo vreme za konfigurirane i ne si struva. Viarvate ili ne, neobhodimi sa samo dva reda vuv vashiiat .zshrc fail za da zaredite tsialata biblioteka za dopulvane:

-- [~/.zshrc] -----------------------------
autoload -U compinit
compinit
-------------------------------------------

Fukntsiiata "compinit" zadeistva tsialata sistema za dopulvane, kato zarezhda dopulvashta funktsiia za vsiako Linuks prilozhenie koeto zsh mozhe da startira. Tui kato niamame nuzhda da dopulvame vsiaka komanda v Linuks po vreme na sesiiata, triabva da optimizirame vremeto za startirane na zsh i izpolzvaneto na pametta. Za da stane tova, compinit deklarira vsiaka funktsiia za dopulvane da bude avtomatichno zarezhdana (autoload). Autoload ukazva, che funktsiiata sushtestvuva, no definitsiiata i ne biva prochetena, dokato komandata ne bude izpolzvana. Vsiaka funktsiia, definirashta vuzmozhnostite za dopulvane na dadena Linuks komanda se namira vuv fail sus imeto na komandata, namirasht se v direktoriia, ukazana ot promenlivata na obkruzhenieto FPATH. Optsiiata "-U" na autoload ukazva, che za che za funktsiiata compinit niama da se izpolzvat sukrateni imena (aliases). Vsushtnost, pri zarezhdane na compinit, autoload vinagi izpolzva "-U" zaradi vuzmozhni problemi kogato funktsiia zavisi ot alias.

Krainiiat rezultat ot vsichko tova e, che klavisha Tab ima otgovor za vsichko:
* ls -[Tab] vi dava spisuk sus vsichki optsii na ls;
* man ip[Tab] pokazva vsichki man stranitsi, zapochvashti sus "ip";
* mutt -f=[Tab] preglezhda direktoriiata ~/Mail i vrushta spisuk sus vsichki direktorii za da izberete;
* w3m [Tab] pokazva vsichki naskoro poseteni adresi ot brauzura (ot faila history);

Za finna nastroika na avtomatichnoto dopulvane mozhete da izpolzvate sredstvoto "compinstall". To predostavia upravliavan chrez menyu interfeis kum niakoi ot po-ekzotichnite vuzmozhnosti na sistemata za dopulvane. Mozhete da nastroite vuzmozhnosti kato proverka na pravopisa, otsvetiavane na spisuka s vuzmozhnosti, pokazani sled natiskane na [Tab], chuvstvitelnost kum malki/golemi bukvi i drugi.



[3. Dopulvane chrez menyu]

Edna ot nai-vpechatliavashtite vuzmozhnosti na avtomatichnoto dopulvane na zsh e izbiraneto chrez menyu izmezhdu rezultatite, pokazani sled [Tab]. Sled kato veche imate spisuka, natiskaneto oshte vednuzh na [Tab] vklyuchva menyuto v pokazanite rezultati i mozhete da izbirate sus strelkite na klaviaturata. Niakoi shte kazhat: Nali moga da se napisha oshte edna-dve bukvi i da se dopulni zhelanoto, vmesto da se razhozhdam iz menyuta... Otgovora na tozi razumen dovod e, che mozhete da zadavate pri kolko rezultata da se poiaviava menyuto i taka ako imate ednotipni po ime failove i ukazhete che pri poveche ot 10 rezultata iskate menyu, shte vi e po-lesno da izberete faila, koito vi triabva. Nuzhdaete se ot slednite redove vuv .zshrc:

--- [~/.zshrc] --------------------------------------------
# zarezhdame bibliotekata za dopulvane s menyuta
zmodload -i zsh/complist

# iskam menyu pri dve ili poveche vuzmozhnosti za dopulvane
zstyle ':completion:*' menu select=2

# tova e interesno, zatova e obiasneno po-dolu
bindkey -M menuselect '^x' accept-and-infer-next-history

# GNU ls tsvetove v rezultatite ot dopulvaneto
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
-----------------------------------------------------------

Redut "bindkey -M menuselect '^x' accept-and-infer-next-history" dobavia edna mnogo udobna funktsiia. Dokato ste v menyuto za izbor i ste nad direktoriia, mozhete da natisnete Ctl+X i shte vlezete v neia. Taka imate maluk failov menidzhur na vashe razpolozhenie. Oshte - po tozi nachin mozhete da vlizate v razlichni arhivi (GNU tar, zip) i da razgledate sudurzhanieto im. Mozhete sushto i da razkompresirate chasti ot tezi arhivi ako dopulvate s menyu "tar zxvf fail.tar.gz [Tab][Tab]".



[4. Drugi vuzmozhnosti]

Silata na zsh ne e samo v avtomatichnoto dopulvane. Ima nad 150 optsii, koito se zadavat sus setopt i sa dokumentirani v man stranitsata zshoptions.
Naprimer, sledniiat red ulesniava rabotata sus direktorii:

setopt autocd autopushd \ pushdignoredups

Autocd vi pozvoliava da napishete imeto na direktoriiata, za da vlezete v neia. Sled tova, vseki put kato vlezete v direktoriia, autopushd ia dobavia kum vremennata pamet za imena na direktorii, a pushdignoredups predotvratiava nalichieto na dublikati tam.

V rezultat na tova, sled kato se razhodite malko iz direktoriite, sus komandata "dirs -v" preglezhdate sudurzhanieto na pametta, primerno:

-------------------------------------
acidmax@support:~/> dirs -v
0 /var/log
1 /opt/kde
2 /etc/rc.d
3 /etc
4 /usr/bin
-------------------------------------

Ako iskate da se vurnete v /usr/bin , prosto triabva da napishete "~4" i ste tam.



[5. Konfiguratsionni failove]

Pri startiraneto si, zsh chete niakolko konfiguratsionni faila. Koi shte sa te zavisi ot nachina po koito e startiran shell-a. Ima dva osnovni tipa shell-ove - interaktivni i ne-interaktivni. Poslednite chetat komandite si ot fail, izvikan ili chrez "zsh fail" ili chrez shebang reda v nachaloto mu - #!/bin/zsh.

Interaktivniia shell poluchava komandi ot terminala, na koito raboti potrebitelia. Shell-a za vlizane vuv sistemata e spetsialen tip interaktiven shell - izvikva se ot programata login.

Vseki ot goreizbroenite tipove shell izpolzva spetsifichna grupa ot konfiguratsionni failove. Vsichki promeni, svurzani s konfiguratsiiata na zsh triabva da budat otrazeni v pravilnite failove. Eto koi failove se izpolzvat ot vseki tip shell, podredeni po reda na izpulnenieto si:

* Login shell: /etc/zshenv ; $ZDOTDIR/.zshenv ; /etc/zprofile ; $ZDOTDIR/.zprofile ; /etc/zshrc ; $ZDOTDIR/.zshrc ; /etc/zlogin ; $ZDOTDIR/.zlogin ;
* Interaktiven: /etc/zshenv ; $ZDOTDIR/.zshenv ; /etc/zshrc ; $ZDOTDIR/.zshrc ;
* Ne-interaktiven: /etc/zshenv ; $ZDOTDIR/.zshenv ;

Ako ne e definirana promenlivata na obkruzhenieto $ZDOTDIR se izpolzva $HOME, a zprofile (ksh-stil) i zlogin (csh-stil) sa tuk samo po istoricheski prichini. Tui kato zshenv se prochita pri vsiako startirane na kakuvto ida e tip shell, stremezha e razmerut mu da e minimalen. Obiknovenno se izpolzva za definirane na promenlivite na obkruzhenieto.



[6. Komanden red]

Komandniiat red e oshte neshto, koeto obiknovenno se nastroiva po vkusa na potrebitelia. Ako ste sviknali da nastroivate prompt-a sus v bash sus promenlivata $PS1 tuk tia niama da raboti, tui kato tam se izpolzvat za razdeliteli "\", a zsh izpolzva "%". Nalaga se da prenapishete promenlivata v zsh-stil. Poglednete v sektsiiata "Prompt extension" na man stranitsata zshmisc za poveche informatsiia.

Ako niamate namerenie da modifitsirate komandniia red po vash vkus, mozhete da probvate gotovite, koito idvat sus zsh. Dobavete kum .zshrc slednite redove:

--- [~/.zshrc] -----------------------
autoload -U promptinit
promptinit
prompt vid_na_komandniia_red
--------------------------------------

Mozhete da vidite vashite nalichni komandni redove sus komandata "prompt -l", a ako iskate da vidite kak izglezhdat, izpolzvaite "prompt -p". Za da pregledate i modifitsirate promenlivata PS1 (kakto i vsiaka druga promenliva) napishete "vared PS1". Eto kakvo pokazva tia v moia sluchai (izpolzvam gotov prompt "suse"  :

--------------------------------------
acidmax@support:~/> vared PS1
%n@%m:%~/>
--------------------------------------

Kursorut e na dolniia red i vi pozvoliava lesno redaktirane na prompt-a sus strelkite.



[7. Finalni dumi]

Kakto vidiahte, mezhdu bash i zsh ima dosta razliki. Vupreki tova dvata shell-a imat mnogo obshto. Goliama chast ot vashata bash konfiguratsiia mozhete da prehvurlite na zsh bez ili sus malko promeni. Naprimer sukratenite imena na komandi i deklariraneto na promenlivite na obkruzhenieto sa napulno suvmestimi. Vse pak ako izpolzvate niakoi ot spetsifichnite za bash funktsii, shte se nalozhi da prekarate izvestno vreme, prehvurliaiki gi na zsh.

Ako uspiah da vi sublaznia, startiraite chsh i izberete zsh za vash shell (ne zabraviaite da napishete pulniia put do zsh). Sledvashtiia put kogato vlezete v sistemata, shte budete posreshtnati ot zsh prompt  .



[8. Resursi]

* Domashna stranitsa na proekta Z Shell: http://www.zsh.org/ (ogledalno kopie na http://zsh.sunsite.dk/ ).
* CHesto Zadavani Vuprosi (FAQ): http://zsh.sunsite.dk/FAQ/
* Arhiv na poshtenskite spisutsi: http://www.zsh.org/mla/



[9. Primeren .zshrc konfiguratsionen fail]

--- [~/.zshrc] ---------------------------------------------

#!/bin/zsh

### Zarezhdane na funktsiite za dopulvane
autoload -U compinit
compinit


### Zarezhdane na funktsiite za promiana na komandniia red
autoload -U promptinit
promptinit


### Tip na komandniia red
prompt suse


### Nastroiki za dopulvane chrez menyu
zmodload -i zsh/complist
zstyle ':completion:*' menu select=2
bindkey -M menuselect '^x' accept-and-infer-next-history
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}


### Drugi nastroiki
setopt ALWAYS_LAST_PROMPT # neobhodimo za dopulvaneto chrez menyu
setopt NO_BEEP # spirane na dosadnite beeps
setopt NO_LIST_BEEP

---------------------------------------------------------------



<< Postfix - burz, siguren i lesen za upravlenie | Lynx - sila, kogato znaesh kak da ia polzvash ;) >>