Ero sivun ”Zsh” versioiden välillä
Pb (keskustelu | muokkaukset) p (pois komentoriviluokasta) |
Pb (keskustelu | muokkaukset) (asetustiedostoesimerkki ym.) |
||
Rivi 1: | Rivi 1: | ||
Z | Zsh eli Z Shell on kehittynyt [[komentotulkki]] Unix-järjestelmille. Sitä voi käyttää sekä normaalina kirjautumiskomentotulkkina että skriptikielenä. Zsh:n 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). Myös esimerkiksi man-sivujen nimien täydennys toimii. Esimerkki: | *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 | [matti@masiina] ~ % [[yum]] c | ||
check-update -- Check if any updates are available | check-update -- Check if any updates are available | ||
clean -- Clean local yum cache | clean -- Clean local yum cache | ||
Rivi 10: | Rivi 10: | ||
*Prompt-teemat | *Prompt-teemat | ||
*Oikoluku, esimerkiksi komento ''pwero'' täydentyy ''poweroff''iksi. | *Oikoluku, esimerkiksi komento ''pwero'' täydentyy ''poweroff''iksi. | ||
*Yhteensopivuustila (zsh:n saa tarvittaessa esimerkiksi | *Globbing-tuki eli tiedostonnimien automaattinen täydennys erilaisten wildcardien avulla. Esimerkiksi seuraava lisäisi merkkijonon foo kyseisen hakemiston jokaisen .txt-päätteisen tiedoston loppuun: | ||
echo "foo" >>*.txt | |||
*Yhteensopivuustila (zsh:n saa tarvittaessa toimimaan esimerkiksi kuin [[sh]], [[csh]] tai [[ksh]]. | |||
*Itsekirjoitetut funktiot (laajennukset) | *Itsekirjoitetut funktiot (laajennukset) | ||
Rivi 40: | Rivi 42: | ||
#RPROMPT='%t' | #RPROMPT='%t' | ||
# | # Asetetaan komentohistoriatiedosto | ||
export HISTFILE=~/.history | |||
# Asetetaan historiatiedoston suurin mahdollinen koko riveinä | |||
export HISTSIZE=999999999 | |||
# Asetetaan kerralla historiatiedostoon tallennettavien rivien maksimimäärä | |||
export SAVEHIST=999999999 | |||
# Lisätään hakemistot /usr/local/bin/ ja $HOME/bin [[PATH]]-muuttujaan | |||
export PATH="$PATH:/usr/local/bin:$HOME/bin" | |||
# Määritetään oletus[[tekstieditori]]. Tämä asetus vaikuttaa myös käytettävään | |||
# näppäinyhdistelmäteemaan ([[vi]] tai [[emacs]]) mikäli sitä ei erikseen | |||
# määritetä bindkey-komennolla. | |||
export EDITOR="[[vim]]" | |||
export VISUAL=$EDITOR | |||
# 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:' | |||
# Komentojen täydennyksen asetuksia. Näiden asetusten luontiin voi myös käyttää | |||
# valmista velhoa, joka käynnistyy komennolla compinstall | |||
# Asetetaan täydennyslistan väreiksi samat, kuin ls:llä | |||
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} | |||
# Ladataan normaalit täydennysfunktiot sekä oikoluku | |||
zstyle ':completion:*' completer _expand _complete _correct _approximate | |||
# Mahdollistaa sekä merkkijonon ensimmäisiin että viimeisiin merkkeihin | |||
# pohjautuvan täydennyksen. | |||
zstyle ':completion:*' expand prefix suffix | |||
# Täydennyslistan aakkosellinen järjestys. Muita vaihtoehtoja ovat mm. size | |||
# (koko), date (muutospäivämäärä), time (muutosaika), access (edellinen avausaika) | |||
# sekä reverse (kääntää tulostuksen) | |||
zstyle ':completion:*' file-sort name | |||
# Täydennettäessä yläpuolisten hakemistojen nimiä (cd ../) ei oteta huomioon nykyistä työhakemistoa | |||
zstyle ':completion:*' ignore-parents pwd | |||
# [[ps]]:n tulosteeseen pohjautuva valikkopohjainen täydennys [[kill]]-komennolle. | |||
zstyle ':completion:*:*:kill:*' menu yes select | |||
zstyle ':completion:*:kill:*' force-list always | |||
# Valikkopohjainen täydennys joka käynnistyy, kun vaihtoehtoja on yli ruudullinen. | |||
zstyle ':completion:*' menu select=long | |||
zstyle ':completion:*' select-prompt %SValikko aktiivinen. Sijainti: %p %s | |||
# | # Isojen ja pienien kirjainten sekä välimerkkien vastaavuus komentojen | ||
# | # oikoluvussa. Toisin sanoen mahdollistaa esimerkiksi komennon 'EMACs' | ||
# täydentämisen 'emacs'iksi. | |||
zstyle ':completion:*' matcher-list '' 'm:{a-zA-Z}={A-Za-z} r:|[._-,]=** r:|=** l:|=*' | |||
# | # Käynnistetään (uuden tyylin mukaiset) täydennystoiminnot | ||
autoload -Uz compinit | |||
compinit | |||
# Sallii tab-täydennyksen myös sanan keskellä | # Sallii tab-täydennyksen myös sanan keskellä | ||
Rivi 77: | Rivi 135: | ||
#setopt HIST_IGNORE_ALL_DUPS | #setopt HIST_IGNORE_ALL_DUPS | ||
# Jos annettua komentoa ei voida suorittaa ja se on hakemistonnimi, niin | |||
# siirrytään automaattisesti tähän hakemistoon (cd). | |||
setopt AUTO_CD | |||
# Ei ikinä piipata | # Ei ikinä piipata | ||
unsetopt BEEP | |||
# Asetetaan muutamia [[alias|aliaksia]] | # Asetetaan muutamia [[alias|aliaksia]] | ||
Rivi 111: | Rivi 157: | ||
alias lsa='ls -ld .*' | alias lsa='ls -ld .*' | ||
# | # Emacs-tyylinen komentorivin muokkaus (oletus) | ||
bindkey -e | |||
# Vi-tyylinen komentorivin muokkaus | |||
#bindkey -v | |||
# Korjataan Home- End- ja backspace-näppäinten toiminta | # Korjataan Home- End- ja backspace-näppäinten toiminta | ||
bindkey '\e[1~' beginning-of-line | bindkey '\e[1~' beginning-of-line | ||
Rivi 138: | Rivi 178: | ||
return 1 | return 1 | ||
} | } | ||
Asetustiedoston muutokset saa helpoiten käyttöön käynnistämällä zsh uudelleen komennolla | Asetustiedoston muutokset saa helpoiten käyttöön käynnistämällä zsh uudelleen komennolla |
Versio 12. toukokuuta 2007 kello 15.02
Zsh eli Z Shell on kehittynyt komentotulkki Unix-järjestelmille. Sitä voi käyttää sekä normaalina kirjautumiskomentotulkkina että skriptikielenä. Zsh:n 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.
- Globbing-tuki eli tiedostonnimien automaattinen täydennys erilaisten wildcardien avulla. Esimerkiksi seuraava lisäisi merkkijonon foo kyseisen hakemiston jokaisen .txt-päätteisen tiedoston loppuun:
echo "foo" >>*.txt
- Yhteensopivuustila (zsh:n saa tarvittaessa toimimaan esimerkiksi kuin sh, csh tai ksh.
- 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' # Asetetaan komentohistoriatiedosto export HISTFILE=~/.history # Asetetaan historiatiedoston suurin mahdollinen koko riveinä export HISTSIZE=999999999 # Asetetaan kerralla historiatiedostoon tallennettavien rivien maksimimäärä export SAVEHIST=999999999 # Lisätään hakemistot /usr/local/bin/ ja $HOME/bin PATH-muuttujaan export PATH="$PATH:/usr/local/bin:$HOME/bin" # Määritetään oletustekstieditori. Tämä asetus vaikuttaa myös käytettävään # näppäinyhdistelmäteemaan (vi tai emacs) mikäli sitä ei erikseen # määritetä bindkey-komennolla. export EDITOR="vim" export VISUAL=$EDITOR # 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:' # Komentojen täydennyksen asetuksia. Näiden asetusten luontiin voi myös käyttää # valmista velhoa, joka käynnistyy komennolla compinstall # Asetetaan täydennyslistan väreiksi samat, kuin ls:llä zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} # Ladataan normaalit täydennysfunktiot sekä oikoluku zstyle ':completion:*' completer _expand _complete _correct _approximate # Mahdollistaa sekä merkkijonon ensimmäisiin että viimeisiin merkkeihin # pohjautuvan täydennyksen. zstyle ':completion:*' expand prefix suffix # Täydennyslistan aakkosellinen järjestys. Muita vaihtoehtoja ovat mm. size # (koko), date (muutospäivämäärä), time (muutosaika), access (edellinen avausaika) # sekä reverse (kääntää tulostuksen) zstyle ':completion:*' file-sort name # Täydennettäessä yläpuolisten hakemistojen nimiä (cd ../) ei oteta huomioon nykyistä työhakemistoa zstyle ':completion:*' ignore-parents pwd # ps:n tulosteeseen pohjautuva valikkopohjainen täydennys kill-komennolle. zstyle ':completion:*:*:kill:*' menu yes select zstyle ':completion:*:kill:*' force-list always # Valikkopohjainen täydennys joka käynnistyy, kun vaihtoehtoja on yli ruudullinen. zstyle ':completion:*' menu select=long zstyle ':completion:*' select-prompt %SValikko aktiivinen. Sijainti: %p %s # Isojen ja pienien kirjainten sekä välimerkkien vastaavuus komentojen # oikoluvussa. Toisin sanoen mahdollistaa esimerkiksi komennon 'EMACs' # täydentämisen 'emacs'iksi. zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z} r:|[._-,]=** r:|=** l:|=*' # Käynnistetään (uuden tyylin mukaiset) täydennystoiminnot autoload -Uz compinit compinit # 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 # Jos annettua komentoa ei voida suorittaa ja se on hakemistonnimi, niin # siirrytään automaattisesti tähän hakemistoon (cd). setopt AUTO_CD # Ei ikinä piipata unsetopt BEEP # 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 .*' # Emacs-tyylinen komentorivin muokkaus (oletus) bindkey -e # Vi-tyylinen komentorivin muokkaus #bindkey -v # 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 }
Asetustiedoston muutokset saa helpoiten käyttöön käynnistämällä zsh uudelleen komennolla
exec zsh