Ero sivun ”Zsh” versioiden välillä

Linux.fista
Siirry navigaatioon Siirry hakuun
(→‎Linkkejä: lisää linkkejä)
(asetuksista ym. yleistä laajennusta)
Rivi 1: Rivi 1:
Z shell eli zsh on runsaasti ominaisuuksia sisältävä, kehittynyt [[komentotulkki]] Unix-järjestelmille. Sitä voi käyttää sekä normaalina kirjautumiskomentotulkkina että skriptikielenä.
Z shell eli zsh on kehittynyt [[komentotulkki]] Unix-järjestelmille. Sitä voi käyttää sekä normaalina kirjautumiskomentotulkkina että skriptikielenä. Sen kehitys aloitettiin 1990, ja se on tällä hetkellä luultavasti eniten ominaisuuksia sisältävä Unix-komentotulkki. Jotta ominaisuudet eivät veisi liikaa muistitilaa, on valtaosa niistä sijoitettu erikseen ladattaviin funktioihin. Zsh huolehtii itse komentorivin editoinnista (ZLE), kun se esimerkiksi [[Bash]]issa on ulkoistettu jokseenkin rajoittuneelle [[Readline]]-kirjastolle. Zsh:ssa on ollut [[Unicode]]-tuki helmikuussa 2006 julkaistusta 4.3.1-versiosta lähtien.


== Ominaisuuksia ==
== Ominaisuuksia ==
*Ohjelmoitava komennontäydennystoiminto, joka auttaa yleisimpien komentojen argumenttien täydentämisessä (sisältää tuon muutamalle sadalle yleisimmälle komennolle)
*Ohjelmoitava komennontäydennystoiminto, joka auttaa yleisimpien komentojen argumenttien täydentämisessä (sisältää tuon muutamalle sadalle yleisimmälle komennolle). Myös esimerkiksi man-sivujen nimien täydennys toimii. Esimerkki:
*Jaettu komentohistoria kaikille samaan aikaan päälläoleville zsh-istunnoille
[matti@masiina] ~ % yum c
check-update  -- Check if any updates are available
clean        -- Clean local yum cache 
*Mahdollisuus jakaa komentohistoria kaikille samaan aikaan päälläoleville zsh-istunnoille
*Muuttujien ja taulukoiden edistynyt hallinta
*Muuttujien ja taulukoiden edistynyt hallinta
*Oikoluku
*Prompt-teemat
*Oikoluku, esimerkiksi komento ''pwero'' täydentyy ''poweroff''iksi.
*Yhteensopivuustila (zsh:n saa tarvittaessa esimerkiksi vaikuttamaan [[sh]]:lta, kun sitä ajetaan /bin/sh:na)
*Yhteensopivuustila (zsh:n saa tarvittaessa esimerkiksi vaikuttamaan [[sh]]:lta, kun sitä ajetaan /bin/sh:na)
*Valmiusriviteemat, esimerkiksi mahdollisuus pitää valmiusrivitekstiä ruudun oikealla puolella ja määrittää sen piiloutumaan automaattisesti kirjoitettaessa pitkiä komentoja
*Itsekirjoitetut funktiot (laajennukset)
 
==Asetukset==
Kuten useimpien muidenkin ohjelmien [[Asetustiedostojen perusteet|asetustiedostoja]], on zsh:n asetustiedostoja kahdenlaisia, koko järjestelmän laajuisia, jotka ovat muotoa /etc/foo ja käyttäjäkohtaisia, jotka ovat muotoa ~/.foo (~ tarkoittaa käyttäjän kotihakemistoa ja piste on piilotiedoston merkki). Järjestelmänlaajuinen tiedosto ajetaan yleensä ennen käyttäjäkohtaista. Zsh:n käynnistämisen ja sulkemisen yhteydessä ajattavat asetustiedostot ovat seuraavat:
*'''/etc/zshenv ja ~/.zshenv '''
/etc/zshenv ajetaan ensimmäisenä aina zsh:n käynnistyessä siitäkin huolimatta, vaikka zsh olisi käynnistetty käynnistystiedostojen ajon estävällä -f-valitsimella (setopt NO_RSC). ~/.zshrc tottelee -f-valitsinta.
*/'''etc/zprofile ja ~/.zprofile '''
ajetaan zshenv:n jälkeen mikäli käyttäjä kirjautuu sisään kyseisellä zsh-istunnolla, eli kyseessä on ''kirjautumiskomentotulkki''.
*'''/etc/zshrc ja ~/.zshrc '''
Luetaan zshenvin (ja zprofilen) jälkeen, mikäli zsh käynnistetään ''interaktiivisena komentotulkkina''. Komentotulkki on interaktiivinen, kun sitä ei käytetä skriptin ajamiseen, vaan komennot syötetään itse reaaliajassa.
*'''/etc/zlogin ja ~/.zlogin '''
ajetaan zshrc:n jälkeen, mikäli kyseessä on kirjautumiskomentotulkki.
*'''~/.zlogout ja /etc/zlogout'''
ajetaan kirjautumiskomentotulkista poistuttaessa. Käyttäjäkohtainen tiedosto ajetaan muista poiketen ennen järjestelmänlaajuista tiedostoa.
 
Seuraavassa on esimerkki zshrc-tiedostosta. '''Lue ennen käyttöönottoa.'''
 
# Määritetään promptin (komentorivillä aina näkyvät merkit) ulkoasu. Muuttuja
# PROMPT on sama kuin PS1. %n tarkoittaa koneen ja %m käyttäjän nimeä. %~ on
# nykyinen työhakemisto ja %# on valmiusmerkki (tavallisilla käyttäjillä % ja
# rootilla #). Tulos näyttää tältä: [kayttaja@kone] /usr/bin/ %
# %~:n voi korvata %d:llä jolloin esim. kotihakemiston nimeä ei lyhenetä ~:nä.
# zsh:ssa on myös mahdollista käyttää valmiita prompt-teemoja.
PROMPT='[%n@%m] %~ %# '
# Määritellään komentorivin oikeassa laidassa näkyvä teksti (valinnainen).
# %t tarkoittaa kellonaikaa.
#RPROMPT='%t'
# Käynnistetään (uuden tyylin mukaiset) täydennystoiminnot
autoload -U compinit
# Emacs-tyylinen koventorivin muokkaus
#bindkey -e
# Vi-tyylinen komentorivin muokkaus
#bindkey -v
# Sallii tab-täydennyksen myös sanan keskellä
setopt COMPLETE_IN_WORD
# Pidetään taustaprosessit täydellä nopeudella
#setopt NOBGNICE
# Liitetään zsh-istunnon päättyessä syötetyt komennot historiatiedoston loppuun
# sen nollamisen sijaan
setopt APPEND_HISTORY
# Liitetään syötetyt komennot historiatiedostoon välittömästi niiden syöttämisen
# jälkeen
setopt INC_APPEND_HISTORY
# Jaettu komentohistoria samanaikaisesti päälläolevien zsh-istuntojen kesken
#setopt SHARE_HISTORY
# Älä näytä montaa identtistä riviä haettaessa komentohistoriasta (CTRL+R)
setopt HIST_FIND_NO_DUPS
# Älä lisää identtisiä peräkkäisiä komentoja komentohistoriaan.
# Jos esim. kirjoitat 30 kertaa peräkkäin "ls", lisätään näistä vain yksi.
#setopt HIST_IGNORE_DUPS
# Poistaa kaikki edeltävät identtidet rivit komentohistoriasta, vaikka näiden
# komentojen välillä olisi annettu muita komentoja.
#setopt HIST_IGNORE_ALL_DUPS
# Ei ikinä piipata
setopt NO_BEEP
#Ladataan väritoiminnot
autoload -U colors
compinit ZLS_COLORS
# Asetetaan ls-komennon käyttämät värit ('''muunna kaikki yhdelle riville''')
export  LS_COLORS='no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:
bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:
*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:
*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:
*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:
*.rpm=00;31:*.deb=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:
*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:'
# Asetetaan zsh-täydennystoiminto käyttämään samoja värejä kuin ls
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
# Asetetaan muutamia [[alias|aliaksia]]
alias stx="startx >& /dev/null &"
alias top="top -d1"
alias ls="ls --color=auto"
alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
alias mnt="mount"
# Listaa vain hakemistot ja hakemistoihin viittaavat symboliset linkit
alias lsd='ls -ld *(-/DN)'
# Listaa vain pisteellä alkavat tiedostot
alias lsa='ls -ld .*'
# Asetetaan komentohistoriatiedosto
export HISTFILE=~/.history
# Asetetaan historiatiedoston suurin mahdollinen koko riveinä
export HISTSIZE=999999999999
# Asetetaan kerralla historiatiedostoon tallennettavien rivien maksimimäärä
export SAVEHIST=999999999999
# Lisätään hakemistot /usr/local/bin/ ja $HOME/bin [[PATH]]-muuttujaan
export PATH="$PATH:/usr/local/bin:$HOME/bin"
# Korjataan Home- End- ja backspace-näppäinten toiminta
bindkey '\e[1~' beginning-of-line
bindkey '\e[4~' end-of-line
bindkey '^[[3~' delete-char
# Korjataan backspace-näppäimen toiminta [[xterm]]issä
case $TERM in (xterm*)
                bindkey '\e[H' beginning-of-line
                        bindkey '\e[F' end-of-line ;;
                esac
_force_rehash() {
  (( CURRENT == 1 )) && rehash
  return 1
}
zstyle ':completion:::::' completer _force_rehash _complete _approximate


== Linkkejä ==
== Linkkejä ==
Rivi 13: Rivi 144:
*[http://zsh.sunsite.dk/Guide/ Zsh-opas]
*[http://zsh.sunsite.dk/Guide/ Zsh-opas]
*[http://www.zshwiki.org/ Zsh-wiki]
*[http://www.zshwiki.org/ Zsh-wiki]
*[http://grml.org/zsh/zsh-lovers.html Zsh-lovers]


[[Luokka:Komentorivi]]
[[Luokka:Komentorivi]]
[[Luokka:Komentotulkit]]
[[Luokka:Komentotulkit]]
[[Luokka:Asetustiedostot]]
[[Luokka:Ohjeet]]

Versio 21. helmikuuta 2007 kello 05.29

Z shell eli zsh on kehittynyt komentotulkki Unix-järjestelmille. Sitä voi käyttää sekä normaalina kirjautumiskomentotulkkina että skriptikielenä. Sen kehitys aloitettiin 1990, ja se on tällä hetkellä luultavasti eniten ominaisuuksia sisältävä Unix-komentotulkki. Jotta ominaisuudet eivät veisi liikaa muistitilaa, on valtaosa niistä sijoitettu erikseen ladattaviin funktioihin. Zsh huolehtii itse komentorivin editoinnista (ZLE), kun se esimerkiksi Bashissa on ulkoistettu jokseenkin rajoittuneelle Readline-kirjastolle. Zsh:ssa on ollut Unicode-tuki helmikuussa 2006 julkaistusta 4.3.1-versiosta lähtien.

Ominaisuuksia

  • Ohjelmoitava komennontäydennystoiminto, joka auttaa yleisimpien komentojen argumenttien täydentämisessä (sisältää tuon muutamalle sadalle yleisimmälle komennolle). Myös esimerkiksi man-sivujen nimien täydennys toimii. Esimerkki:
[matti@masiina] ~ % yum c
check-update  -- Check if any updates are available
clean         -- Clean local yum cache  
  • Mahdollisuus jakaa komentohistoria kaikille samaan aikaan päälläoleville zsh-istunnoille
  • Muuttujien ja taulukoiden edistynyt hallinta
  • Prompt-teemat
  • Oikoluku, esimerkiksi komento pwero täydentyy poweroffiksi.
  • Yhteensopivuustila (zsh:n saa tarvittaessa esimerkiksi vaikuttamaan sh:lta, kun sitä ajetaan /bin/sh:na)
  • Itsekirjoitetut funktiot (laajennukset)

Asetukset

Kuten useimpien muidenkin ohjelmien asetustiedostoja, on zsh:n asetustiedostoja kahdenlaisia, koko järjestelmän laajuisia, jotka ovat muotoa /etc/foo ja käyttäjäkohtaisia, jotka ovat muotoa ~/.foo (~ tarkoittaa käyttäjän kotihakemistoa ja piste on piilotiedoston merkki). Järjestelmänlaajuinen tiedosto ajetaan yleensä ennen käyttäjäkohtaista. Zsh:n käynnistämisen ja sulkemisen yhteydessä ajattavat asetustiedostot ovat seuraavat:

  • /etc/zshenv ja ~/.zshenv

/etc/zshenv ajetaan ensimmäisenä aina zsh:n käynnistyessä siitäkin huolimatta, vaikka zsh olisi käynnistetty käynnistystiedostojen ajon estävällä -f-valitsimella (setopt NO_RSC). ~/.zshrc tottelee -f-valitsinta.

  • /etc/zprofile ja ~/.zprofile

ajetaan zshenv:n jälkeen mikäli käyttäjä kirjautuu sisään kyseisellä zsh-istunnolla, eli kyseessä on kirjautumiskomentotulkki.

  • /etc/zshrc ja ~/.zshrc

Luetaan zshenvin (ja zprofilen) jälkeen, mikäli zsh käynnistetään interaktiivisena komentotulkkina. Komentotulkki on interaktiivinen, kun sitä ei käytetä skriptin ajamiseen, vaan komennot syötetään itse reaaliajassa.

  • /etc/zlogin ja ~/.zlogin

ajetaan zshrc:n jälkeen, mikäli kyseessä on kirjautumiskomentotulkki.

  • ~/.zlogout ja /etc/zlogout

ajetaan kirjautumiskomentotulkista poistuttaessa. Käyttäjäkohtainen tiedosto ajetaan muista poiketen ennen järjestelmänlaajuista tiedostoa.

Seuraavassa on esimerkki zshrc-tiedostosta. Lue ennen käyttöönottoa.

# Määritetään promptin (komentorivillä aina näkyvät merkit) ulkoasu. Muuttuja 
# PROMPT on sama kuin PS1. %n tarkoittaa koneen ja %m käyttäjän nimeä. %~ on
# nykyinen työhakemisto ja %# on valmiusmerkki (tavallisilla käyttäjillä % ja
# rootilla #). Tulos näyttää tältä: [kayttaja@kone] /usr/bin/ % 
# %~:n voi korvata %d:llä jolloin esim. kotihakemiston nimeä ei lyhenetä ~:nä. 
# zsh:ssa on myös mahdollista käyttää valmiita prompt-teemoja.
PROMPT='[%n@%m] %~ %# '

# Määritellään komentorivin oikeassa laidassa näkyvä teksti (valinnainen). 
# %t tarkoittaa kellonaikaa.
#RPROMPT='%t'

# Käynnistetään (uuden tyylin mukaiset) täydennystoiminnot
autoload -U compinit

# Emacs-tyylinen koventorivin muokkaus
#bindkey -e 

# Vi-tyylinen komentorivin muokkaus
#bindkey -v

# Sallii tab-täydennyksen myös sanan keskellä
setopt COMPLETE_IN_WORD

# Pidetään taustaprosessit täydellä nopeudella
#setopt NOBGNICE

# Liitetään zsh-istunnon päättyessä syötetyt komennot historiatiedoston loppuun 
# sen nollamisen sijaan
setopt APPEND_HISTORY

# Liitetään syötetyt komennot historiatiedostoon välittömästi niiden syöttämisen 
# jälkeen
setopt INC_APPEND_HISTORY

# Jaettu komentohistoria samanaikaisesti päälläolevien zsh-istuntojen kesken
#setopt SHARE_HISTORY

# Älä näytä montaa identtistä riviä haettaessa komentohistoriasta (CTRL+R)
setopt HIST_FIND_NO_DUPS

# Älä lisää identtisiä peräkkäisiä komentoja komentohistoriaan.
# Jos esim. kirjoitat 30 kertaa peräkkäin "ls", lisätään näistä vain yksi.
#setopt HIST_IGNORE_DUPS

# Poistaa kaikki edeltävät identtidet rivit komentohistoriasta, vaikka näiden
# komentojen välillä olisi annettu muita komentoja.
#setopt HIST_IGNORE_ALL_DUPS

# Ei ikinä piipata
setopt NO_BEEP

#Ladataan väritoiminnot
autoload -U colors
compinit ZLS_COLORS

# Asetetaan ls-komennon käyttämät värit (muunna kaikki yhdelle riville)
export  LS_COLORS='no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:
bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:
*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:
*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:
*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:
*.rpm=00;31:*.deb=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:
*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:'

# Asetetaan zsh-täydennystoiminto käyttämään samoja värejä kuin ls
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}

# Asetetaan muutamia aliaksia
alias stx="startx >& /dev/null &"
alias top="top -d1"
alias ls="ls --color=auto"
alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
alias mnt="mount"

# Listaa vain hakemistot ja hakemistoihin viittaavat symboliset linkit
alias lsd='ls -ld *(-/DN)'

# Listaa vain pisteellä alkavat tiedostot
alias lsa='ls -ld .*'

# Asetetaan komentohistoriatiedosto
export HISTFILE=~/.history

# Asetetaan historiatiedoston suurin mahdollinen koko riveinä 
export HISTSIZE=999999999999

# Asetetaan kerralla historiatiedostoon tallennettavien rivien maksimimäärä
export SAVEHIST=999999999999

# Lisätään hakemistot /usr/local/bin/ ja $HOME/bin PATH-muuttujaan
export PATH="$PATH:/usr/local/bin:$HOME/bin"

# Korjataan Home- End- ja backspace-näppäinten toiminta
bindkey '\e[1~' beginning-of-line
bindkey '\e[4~' end-of-line
bindkey '^[[3~' delete-char

# Korjataan backspace-näppäimen toiminta xtermissä
case $TERM in (xterm*)
               bindkey '\e[H' beginning-of-line
                       bindkey '\e[F' end-of-line ;;
               esac

_force_rehash() {
 (( CURRENT == 1 )) && rehash
 return 1
}
zstyle ':completion:::::' completer _force_rehash _complete _approximate

Linkkejä