Zsh on tehokas komentotulkki, joka toimii sekä interaktiivisena komentotulkkina että skriptikielen tulkkina. Vaikka se on yhteensopiva POSIX sh:n kanssa (ei oletusarvoisesti, vain jos antaa emulate sh
), se tarjoaa etuja, kuten paremman tabulaattoritäydennyksen ja globbingin.
Zsh FAQ tarjoaa lisää syitä Zsh:n käyttämiseen.
Asennus
Käyttäjät voivat ennen aloittamista haluta nähdä, mikä komentotulkki on tällä hetkellä käytössä:
$ echo $SHELL
Asenna zsh-paketti. Jos haluat lisää täydennysmäärityksiä, asenna myös zsh-completions-paketti.
Alustava konfigurointi
Varmista, että Zsh on asennettu oikein, suorittamalla terminaalissa seuraava:
$ zsh
Siellä pitäisi nyt näkyä zsh-newuser-install, joka opastaa sinut peruskonfiguroinnin läpi. Jos haluat ohittaa tämän, paina q
. Jos et nähnyt sitä, voit kutsua sen manuaalisesti komennolla:
$ autoload -Uz zsh-newuser-install$ zsh-newuser-install -f
Zsh:n ottaminen oletusarvoiseksi komentosuorittimeksi
Vaihda komentosuorittimeksi /usr/bin/zsh
. Katso komentorivin shell#Esimerkkikuoren muuttaminen.
~/.bashrc
:stä ~/.zshrc
:aan (esim. kehotteen ja aliakset) ja ~/.bash_profile
:stä ~/.zprofile
:ään (esim. koodi, joka käynnistää X-ikkunajärjestelmän).Käynnistys- ja sammutustiedostot
- Katso A User’s Guide to the Z-Shell -oppaasta selitykset interaktiivisista ja sisäänkirjautuneista kuorista sekä siitä, mitä kannattaa laittaa käynnistystiedostoihin.
- Voisit harkita vakiopolun käyttöönottoa Zsh:n konfiguraatiotiedostoja varten.
- Jos
$ZDOTDIR
:tä ei ole määritetty, käytetään sen sijaan$HOME
. - Jos optio
RCS
ei ole asetettu missään tiedostossa, mitään konfiguraatiotiedostoja ei lueta kyseisen tiedoston jälkeen. - Jos optio
GLOBAL_RCS
ei ole asetettu missään tiedostossa, mitään globaaleja konfiguraatiotiedostoja (/etc/zsh/*
) ei lueta kyseisen tiedoston jälkeen.
Käynnistettäessä Zsh lukee oletusarvoisesti komennot seuraavista tiedostoista seuraavassa järjestyksessä edellyttäen, että ne ovat olemassa.
-
/etc/zsh/zshenv
Käytetään ympäristömuuttujien asettamiseen kaikille käyttäjille; se ei saisi sisältää komentoja, jotka tuottavat tulostetta tai olettavat, että komentotulkki on liitetty TTY:hen. Kun tämä tiedosto on olemassa, se luetaan aina, tätä ei voi ohittaa. -
$ZDOTDIR/.zshenv
Käytetään käyttäjän ympäristömuuttujien asettamiseen; se ei saisi sisältää komentoja, jotka tuottavat tulostetta tai olettavat, että komentotulkki on liitetty TTY:hen. Kun tämä tiedosto on olemassa, se luetaan aina. -
/etc/zsh/zprofile
Käytetään komentojen suorittamiseen käynnistyksen yhteydessä kaikille käyttäjille, luetaan käynnistettäessä komentotulkkina. Huomaa, että Arch Linuxissa se sisältää oletuksena yhden rivin, jonka lähteet ovat/etc/profile
. Katso alla oleva varoitus, ennen kuin haluat poistaa sen!-
/etc/profile
Tämän tiedoston pitäisi olla lähteenä kaikilla POSIX sh-yhteensopivilla kuorilla sisäänkirjautumisen yhteydessä: se asettaa$PATH
ja muut ympäristömuuttujat ja sovelluskohtaiset (/etc/profile.d/*.sh
) asetukset sisäänkirjautumisen yhteydessä.
-
-
$ZDOTDIR/.zprofile
Käytetään käyttäjän komentojen suorittamiseen käynnistyksen yhteydessä, luetaan käynnistettäessä sisäänkirjautumisen komentosuorittimena. Käytetään tyypillisesti graafisten istuntojen automaattiseen käynnistykseen ja istunnon laajuisten ympäristömuuttujien asettamiseen. -
/etc/zsh/zshrc
Käytetään interaktiivisen komentotulkin asetusten asettamiseen ja komentojen suorittamiseen kaikille käyttäjille, luetaan käynnistettäessä interaktiivisena komentotulkkina. -
$ZDOTDIR/.zshrc
Käytetään käyttäjän interaktiivisen komentotulkin asetusten asettamiseen ja komentojen suorittamiseen, luetaan käynnistettäessä interaktiivisena komentotulkkina. -
/etc/zsh/zlogin
Käytetään kaikkien käyttäjien komentojen suorittamiseen alkuperäisen etenemisen päättyessä, luetaan käynnistettäessä kirjautumiskuorena. -
$ZDOTDIR/.zlogin
Käytetään käyttäjän komentojen suorittamiseen alkuperäisen etenemisen päättyessä, luetaan käynnistettäessä kirjautumiskuorena. Käytetään tyypillisesti komentorivin apuohjelmien automaattiseen käynnistämiseen. Ei pitäisi käyttää graafisten istuntojen automaattiseen käynnistämiseen, koska tässä vaiheessa istunto saattaa sisältää konfiguraatiota, joka on tarkoitettu vain interaktiiviselle komentotulkille. -
$ZDOTDIR/.zlogout
Käytetään komentojen suorittamiseen, kun sisäänkirjautumiskomentotulkki poistuu. -
/etc/zsh/zlogout
Käytetään kaikkien käyttäjien komentojen suorittamiseen, kun sisäänkirjautumiskomentotulkki poistuu.
Katso graafinen esitys.
-
$HOME/.profile
ei ole osa Zsh:n käynnistystiedostoja eikä Zsh:n käyttämä lähde, ellei Zsh:ta kutsuta nimelläsh
taiksh
ja käynnistetä sisäänkirjautumiskuorena. Lisätietoja sh- ja ksh-yhteensopivuustiloista on kohdassa zsh(1) § COMPATIBILITY. - Archin zsh-paketissa käytetyt polut poikkeavat man-sivuilla käytetyistä oletuspoluista (FS#48992).
/etc/zsh/zprofile
, muuten se rikkoo muiden sellaisten pakettien eheyden, jotka tarjoavat joitain skriptejä kohdasta /etc/profile.d/
.Zsh:n konfigurointi
Vaikka Zsh on käyttökelpoinen suoraan laatikosta, sitä ei lähes varmasti ole määritetty niin kuin useimmat käyttäjät haluaisivat sitä käyttää. Mutta koska Zsh:ssä on paljon muokkausmahdollisuuksia, Zsh:n konfigurointi voi olla pelottava ja aikaa vievä kokemus.
Yksinkertainen .zshrc
Alhaalla on esimerkki konfigurointitiedostosta. Se tarjoaa kunnollisen joukon oletusasetuksia sekä antaa esimerkkejä monista tavoista, joilla Zsh:ta voidaan muokata. Jotta voit käyttää tätä konfiguraatiota, tallenna se tiedostoksi nimeltä .zshrc
.
source ~/.zshrc
.Tässä on yksinkertainen .zshrc
:
~/.zshrc
autoload -Uz compinit promptinitcompinitpromptinit# Tämä asettaa oletuskehotteeksi walters-teemaneprompt walters
Katso #Kehotteiden teemat saadaksesi lisätietoja kehotteiden teemajärjestelmästä.
$PATH:n konfigurointi
Zsh sitoo muuttujan PATH
muuttujaan path
array. Ne synkronoidaan automaattisesti. Näin voimme helposti manipuloida PATH
muuttujaa yksinkertaisesti muuttamalla arraya. Katso lisätietoja kohdasta A User’s Guide to the Z-Shell.
Rivillä typeset -U PATH path
, jossa -U
tarkoittaa uniikkia, komennetaan komentotulkkia hylkäämään kaksoiskappaleet sekä $PATH
:stä että $path
:stä
~/.zshenv
typeset -U PATH pathpath=("$HOME/.local/bin" /other/things/in/path "$path")export PATH
Komentojen täydentäminen
Zsh:n kenties kiehtovin ominaisuus on sen edistyneet automaattisen täydentämisen mahdollisuudet. Ota ainakin automaattinen täydennys käyttöön kohdassa .zshrc
. Ottaaksesi automaattisen täydennyksen käyttöön lisää ~/.zshrc
:
~/.zshrc
autoload -Uz compinitcompinit
Ylläoleva konfiguraatio sisältää ssh/scp/sftp-isäntänimien täydennyksen, mutta jotta tämä ominaisuus toimisi, käyttäjät eivät saa ottaa käyttöön ssh:n isäntänimien hashingia (esim.eli vaihtoehtoa HashKnownHosts
ssh-asiakkaan konfiguraatiossa).
Automaattista täydennystä nuolinäppäinohjatulla käyttöliittymällä varten lisää seuraava:
~/.zshrc
zstyle ':completion:*' menu select
Valikon aktivoimiseksi paina kahdesti Tab
.
Komentorivikytkentöjen automaattista täydentämistä varten aliaksia varten lisää seuraava:
~/.zshrc
setopt COMPLETE_ALIASES
Automaattisen täydentämisen ottamiseksi käyttöön etuoikeutetuissa ympäristöissä etuoikeutetuissa komennoissa (esim.esim. jos täydennät komennon, joka alkaa sudo-komennolla, täydennyskomentosarjat yrittävät määrittää myös sudo-komennon täydennykset), sisällytä:
~/.zshrc
zstyle ':completion::complete:*' gain-privileges 1
Näppäinsidonnaisuudet
Zsh ei käytä readlinea, sen sijaan se käyttää omaa ja tehokkaampaa Zsh-linjaeditoria (ZLE). Se ei lue /etc/inputrc
tai ~/.inputrc
. Tutustu ZLE:n konfigurointiin lukemalla Zsh-linjaeditorin tarkempi tarkastelu ja omien widgettien luominen.
ZLE:llä on Emacs-tila ja vi-tila. Jos jokin ympäristömuuttujista VISUAL
tai EDITOR
sisältää merkkijonon vi
, käytetään vi-tilaa; muussa tapauksessa käytetään oletuksena Emacs-tilaa. Aseta tila eksplisiittisesti bindkey -e
:llä tai bindkey -v
:lla vastaavasti Emacs-tilaa tai vi-tilaa varten.
Näppäinsidonnat määritetään yhdistämällä näppäimen painallusta vastaava pakosarja ZLE-vidgettiin. Käytettävissä olevat widgetit, niiden toimintojen kuvaukset ja oletusnäppäinsidonnaisuudet on lueteltu kohdissa zshzle(1) § STANDARD WIDGETS ja zshcontrib(1) § ZLE FUNCTIONS.
Suositeltu tapa asettaa näppäinsidonnaisuudet Zsh:ssä on käyttää terminfo(5):stä saatavia merkkijono-ominaisuuksia. Esimerkiksi:
~/.zshrc
# luodaan zkbd-yhteensopiva hash;# jos haluat lisätä muita avaimia tähän hashiin, katso: man 5 terminfotypeset -g -A keykey="${terminfo}"key="${terminfo}"key="${terminfo}"key="${terminfo}"key="${terminfo}"key="${terminfo}"key="${terminfo}"key="${terminfo}"key="${terminfo}"key="${terminfo}"key="${terminfo®"# setup key accordingly}"" ]] && bindkey -- "${key}" rivin alku}" ]] && bindkey -- "${key}" end-of-line}" ]] && bindkey -- "${key}" overwrite-mode}" ]] && bindkey -- "${key}" backward-delete-char}" ]] && bindkey -- "${key}" delete-char}" ]] && bindkey -- "${key}" up-line-or-history}" ]] && bindkey -- "${key}" down-line-or-history}" ]] && bindkey -- "${key}" backward-char}" ]] && bindkey -- "${key}" forward-char}" ]] && bindkey -- "${key}" beginning-of-buffer-or-history}" ]] && bindkey -- "${key}" end-of-buffer-or-history}" ]] && bindkey -- "${key}" reverse-menu-complete# Lopuksi varmista, että päätelaite on sovellustilassa, kun zle on# aktiivinen. Vain silloin $terminfon arvot ovat voimassa.if ((( ${+terminfo} && ${+terminfo} )); thenautoload -Uz add-zle-hook-widgetfunction zle_application_mode_start { echoti smkx }function zle_application_mode_stop { echoti rmkx }add-zle-hook-widget -Uz zle-line-init zle_application_mode_start add-zle-zle-hook-widget -Uz zle-line-finish zle_application_mode_stopfi
Historiahaku
Sinun on asetettava key
-matriisi ja varmistettava, että ZLE siirtyy sovellustilaan, jotta voit käyttää seuraavia ohjeita; katso #Key bindings.
Historiahaun ottamiseksi käyttöön lisää nämä rivit .zshrc
tiedostoon:
~/.zshrc
autoload -Uz up-line-or-beginning-search down-line-or-beginning-searchzle -N up-line-or-beginning-searchzle -N down-line-or-beginning-searchzle}" ]] && bindkey -- "${key}" up-line-or-beginning-search}" ]] && bindkey -- "${key}" down-line-or-beginning-search
Tällä tavalla vain nykyistä riviä nykyiseen kursorin sijaintiin asti vastaavat aiemmat komennot näytetään, kun Up
– tai Down
-näppäimiä painetaan.
Shift-, Alt-, Ctrl- ja Meta-modifikaattorit
xterm-yhteensopivissa päätelaitteissa voidaan käyttää user_caps(5):stä saatuja laajennettuja näppäinmäärittelyjä. Nämä ovat yhdistelmiä Shift
, Alt
, Ctrl
ja Meta
yhdessä Up
, Down
, Left
, Right
, PageUp
, PageDown
, Home
, End
tai Del
kanssa. Katso zkbd-lähteestä luettelo modifiointinäppäinten ja näppäinyhdistelmien suositelluista nimistä.
Esimerkiksi, jos Ctrl+Left
siirtyy edellisen sanan alkuun ja Ctrl+Right
siirtyy seuraavan sanan alkuun:
~/.zshrc
key="${terminfo}"key="${terminfo}"}" ]] && bindkey -- "${key}" backward-word}" ]] && bindkey -- "${key}" forward-word
Kehotteet
Zsh tarjoaa vaihtoehdot käyttää kehotteiden teemaa tai käyttäjille, jotka ovat tyytymättömiä teemoihin (tai haluavat laajentaa niiden käyttökelpoisuutta), mahdollisuuden rakentaa oma kehote.
Kehotteiden teemat
Kehotteiden teemat ovat nopea ja helppo tapa luoda Zsh:lle värillinen kehote. Katso zshcontrib(1) § PROMPT TEEMAT saadaksesi tietoa prompt-teemoista ja siitä, miten voit kirjoittaa oman teeman.
Käyttääksesi teemaa, varmista, että prompt-teemajärjestelmä on asetettu automaattiseen lataukseen kohdassa .zshrc
. Tämä voidaan tehdä lisäämällä nämä rivit osoitteeseen:
~/.zshrc
autoload -Uz promptinitpromptinit
Saatavilla olevat prompt-teemat luetellaan komennolla:
$ prompt -l
Käyttääksesi esimerkiksi teemaa walters
kirjoita:
$ prompt walters
Käytä tätä komentoa esikatsellaksesi kaikkia käytettävissä olevia teemoja:
$ prompt -p
Prompt-teemojen manuaalinen asennus
Teemoja on mahdollista asentaa manuaalisesti ilman ulkoisia konfiguraatiohallinnan työkaluja. Paikallista asennusta varten luo ensin kansio ja lisää se fpath
-joukkoon, esim:
$ mkdir ~/.zprompts$ fpath=("$HOME/.zprompts" "$fpath")
Luo nyt teematiedoston symbolinen linkki tähän kansioon:
$ ln -s mytheme.zsh ~/.zprompts/prompt_mytheme_setup
Jos sen sijaan haluat asentaa teeman globaalisti, tee näin:
# ln -s mytheme.zsh /usr/share/zsh/functions/Prompts/prompt_mytheme_setup
Nyt sinun pitäisi pystyä aktivoimaan se käyttämällä:
$ prompt mytheme
Jos kaikki toimii, voit muokata .zshrc
-kansiota vastaavasti.
Kehotusteemojen lisääminen ilman erillistä tiedostoa jokaiselle
Kehotusteemojen lisäämisen oman tiedoston kautta lisäksi on mahdollista lisätä teemoja toisesta tiedostosta (kuten sinun .zshrc
:sta), esim:
~/.zshrc
# Lataa promptinitautoload -teema -Uz promptinit && promptinit# Määritä teemaeprompt_mytheme_setup() { PS1="%~%#"}# Lisää teema promptiinysprompt_themes+=( mytheme )# Lataa teemaeprompt mytheme
Räätälöity prompti
Tämän artikkelin tai osion on laajennettava.
PROMPT
esimerkki. (Keskustelu Talk:Zsh#:ssa)Lisäksi kaikille kuorille yhteisen ensisijaisen vasemmanpuoleisen kehotteen PS1
(PROMPT
, prompt
) lisäksi Zsh tukee myös oikeanpuoleista kehotetta RPS1
(RPROMPT
). Nämä kaksi muuttujaa on ne, jotka haluat asettaa mukautettuun arvoon.
Muut erikoiskehotteet, kuten PS2
(PROMPT2
), PS3
(PROMPT3
), PS4
(PROMPT4
), RPS1
(RPROMPT
), RPS2
(RPROMPT2
) ja SPROMPT
, selostetaan kohdassa zshparam(1) § PARAMETERS USED BY THE SHELL.
Kaikki kehotteet voidaan mukauttaa kehotteiden escapeilla. Käytettävissä olevat komentokehotteiden pakosekvenssit on lueteltu kohdassa zshmisc(1) § Komentokehotteiden pakosekvenssien laajentaminen.
Värit
Zsh asettaa värit eri tavalla kuin Bash, sinun ei tarvitse käyttää mutkikkaita ANSI-pakosekvenssejä tai terminaalin ominaisuuksia terminfo(5):stä. Zsh tarjoaa käteviä komentokehotteita etualan värin, taustavärin ja muiden visuaalisten efektien asettamiseen; katso zshmisc(1) § Visuaaliset efektit saadaksesi luettelon niistä ja niiden kuvaukset.
Värit voidaan määritellä käyttämällä desimaalista kokonaislukua, yhden kahdeksan yleisimmin tuetun värin nimeä tai #-merkkinä, jota seuraa RGB-tripletti heksadesimaalimuodossa. Katso lisätietoja fg=väri-ominaisuuden kuvauksesta kohdasta zshzle(1) § CHARACTER HIGHLIGHTING.
Useimmat päätelaitteet tukevat seuraavia värejä nimeltä:
Nimi | Numero |
---|---|
black |
0 |
red |
1 |
green |
2 |
yellow |
3 |
blue |
4 |
magenta |
5 |
cyan |
6 |
white |
7 |
Värinumerot 0-255 xterm 256 värin kanssa yhteensopiville pääteemulaattoreille löytyvät xterm-256-väritaulukosta.
Oikein asetetulla TERM-ympäristömuuttujalla päätelaitteen tuettu enimmäisvärimäärä löytyy terminfo(5)-tietokannasta käyttämällä echoti colors
. Jos kyseessä ovat 24-bittiset värit, tarkista myös COLORTERM-ympäristömuuttuja print $COLORTERM
:llä. Jos se palauttaa 24bit
tai truecolor
, päätelaitteesi tukee 16777216 (224) väriä, vaikka terminfo näyttäisikin pienempää lukua.
- Värit 0-15 voivat vaihdella päätelaite-emulaattoreiden ja niiden käyttämien värimaailmojen välillä.
- Monissa päätelaite-emulaattoreissa lihavoitu teksti näytetään kirkkaammilla väreillä.
- Komennon escapen voi testata esimerkiksi komennolla
print -P "prompt escapes"
:$ print -P '%B%F{red}co%F{green}lo%F{blue}rs%f%b'
- Jos käytät 24-bittisiä värejä, saatat haluta ladata
zsh/nearcolor
-moduulin päätelaitteisiin, jotka eivät tue niitä. Esim:}" -eq '16777216' ]] || zmodload zsh/nearcolor
Katso lisätietoja
zsh/nearcolor
-moduulista kohdasta zshmodules(1) § THE ZSH/NEARCOLOR MODULE.
Esimerkki
Tämä on esimerkki kaksipuolisesta kehotteesta:
PROMPT='%F{green}%n%f@%F{magenta}%m%f %F{blue}%B%~%b%f %# 'RPROMPT=''
Ja näin se näytetään:
Käyttääksesi värejä alueelta 16-255 ja 24-bittistä todellista väriä voit käyttää halutulle värille osoitettua numeroa 0-255 ja sen heksadesimaalista värikoodia vastaavasti:
PROMPT='%F{2}%n%f@%F{5}%m%f %F{4}%B%~%b%f %# 'RPROMPT=''
PROMPT='%F{#c0c0c0}%n%f@%F{#008000}%m%f %F{#800080}%B%~%b%f %# 'RPROMPT=''
Esimerkki .zshrc-tiedostot
- Saadaksesi samat asetukset kuin kuukausittaisissa ISO-julkaisuissa (jotka käyttävät Zsh:tä oletusarvoisesti), asenna grml-zsh-config. Se sisältää grml:n monia hienosäätöjä ja kehittyneitä optimointeja.
- https://github.com/MrElendig/dotfiles-alice/blob/master/.zshrc – perusasetus, dynaamisella kehotteella ja ikkunan otsikolla/hardinfo.
- https://github.com/slashbeast/conf-mgmt/blob/master/roles/home_files/files/DOTzshrc – zshrc useilla ominaisuuksilla, muista tarkistaa kommentit siihen. Huomionarvoisia ominaisuuksia: confirm-toiminto, jolla varmistetaan, että käyttäjä haluaa suorittaa virrankatkaisun, uudelleenkäynnistyksen tai horrostilan, tuki GIT:lle kehotteessa (tehdään ilman vcsinfoa), välilehtien täydentäminen valikolla, nykyisen suoritetun komennon tulostaminen ikkunan otsikkopalkkiin ja paljon muuta.
Katsokaa dotfiles#Käyttäjä-tietovarastoista lisää.
Vinkkejä ja niksejä
Autostartti X:n sisäänkirjautumisen yhteydessä
Katso xinit#Autostartti X:n sisäänkirjautumisen yhteydessä.
Terminaalin asetusten palauttaminen sen jälkeen, kun ohjelma poistuu epänormaalisti
Monet ohjelmat muuttavat päätelaitteen tilaa, eivätkä useinkaan palauta päätelaitteen asetuksia, kun ne poistuvat epänormaalisti (esim. kaatuessaan tai törmätessään SIGINT:iin).
Tämä voidaan yleensä ratkaista suorittamalla reset(1):
$ reset
Seuraavissa kappaleissa kuvataan tapoja, joilla voidaan välttää päätelaitteen manuaalinen nollaaminen.
Komento ttyctl
Komennon ttyctl avulla päätelaite voidaan ”jäädyttää/jäädyttää”. Jos haluat jäädyttää interaktiivisen komentotulkin käynnistyksen yhteydessä, käytä seuraavaa:
~/.zshrc
tyctl -f
Terminaalin nollaaminen pakosekvensseillä
Vaihtoehtoiset rivipiirrosmerkkijoukot voivat sekoittaa terminaalin tavalla, jota ttyctl ei voi estää.
Yksinkertainen ratkaisu on tulostaa päätelaitteen nollaavat pakosekvenssit precmd
-koukkufunktiosta, jotta ne suoritetaan joka kerta ennen kehotteen piirtämistä. Esimerkiksi käyttämällä pakosekvenssiä \e] && (( ${#dirstack} == 0 )); thendirstack=("${(@f)"$(< "$DIRSTACKFILE")"}")}" ]] && cd -- "${dirstack}"fichpwd_dirstack() {print -l -- "$PWD" "${(u)dirstack}" > "$DIRSTACKFILE"}add-zsh-hook -Uz chpwd chpwd_dirstackDIRSTACKSIZE='20'setopt AUTO_PUSHD PUSHD_SILENT PUSHD_TO_HOME## Remove duplicate entriessetopt PUSHD_IGNORE_DUPS## This reverts the +/- operators.setopt PUSHD_MINUS
Now use
$ dirs -v
to print the dirstack. Use cd -<NUM>
palataan takaisin vierailtuun kansioon. Käytä automaattista täydennystä viivan jälkeen. Tämä osoittautuu erittäin käteväksi, jos käytät automaattista täydennysvalikkoa.
cd
, koska molemmissa istunnoissa on ristiriita, kun ne kirjoittavat samaan tiedostoon. cdr
cdr:n avulla voit vaihtaa työhakemiston aiempaan työhakemistoon automaattisesti ylläpidetystä luettelosta. Se tallentaa kaikki merkinnät tiedostoihin, joita ylläpidetään istuntojen välillä ja (oletusarvoisesti) nykyisessä istunnossa olevien päätelaite-emulaattoreiden välillä.
Katso asennusohjeet kohdasta zshcontrib(1) § REMEMBERING RECENT DIRECTORIES (MUISTIINPANOA VASTAAVISTA HAKemistoista).
Help-komento
Toisin kuin Bashissa, Zsh:ssä ei ole käytössä sisäänrakennettua help
-käskyä, sen sijaan Zsh:ssä on käytössä komentokoodi run-help
. Oletusarvoisesti run-help
on alias man
:lle, se voidaan joko suorittaa manuaalisesti liittämällä se komennon eteen tai se voidaan kutsua parhaillaan kirjoitettavalle komennolle näppäimistön pikanäppäimillä Alt+h
tai Esc
h
.
Koska oletusarvoisesti run-help
on pelkkä alias komennolle man, se toimii vain ulkoisissa komennoissa. Parantaaksesi sen toiminnallisuutta niin, että se toimii komentotulkin sisäänrakennetuissa komennoissa ja muissa komentotulkin ominaisuuksissa, sinun on käytettävä run-help
-funktiota. Katso lisätietoja run-help
:stä ja sen aputoiminnoista kohdasta zshcontrib(1).
Lataa ensin run-help
-funktio ja poista sitten olemassa oleva alias run-help
. Yksinkertaisuuden vuoksi help
voidaan aliasoida run-help
:ksi. Lisää esimerkiksi seuraava zshrc
:
autoload -Uz run-help(( ${+aliases} )) && unalias run-helpalias help=run-help
Apulaistoiminnot on otettava käyttöön erikseen:
autoload -Uz run-help-git run-help-ip run-help-openssl run-help-p4 run-help-sudo run-help-svk run-help-svn
Esimerkiksi run-help git commit
-komento avaa nyt man-sivun git-commit(1) git(1):n sijasta git(1).
Persistentti uudelleenkäsittely
Tyypillisesti compinit ei löydä automaattisesti uusia suoritettavia tiedostoja $PATH
:stä. Esimerkiksi uuden paketin asentamisen jälkeen /usr/bin/
:ssä olevat tiedostot eivät tulisi välittömästi tai automaattisesti mukaan suoritukseen. Jotta nämä uudet suoritettavat tiedostot otettaisiin mukaan, täytyisi suorittaa:
$ rehash
Tämä "uudelleenlataus" voidaan asettaa tapahtumaan automaattisesti. Sisällytä yksinkertaisesti seuraava zshrc
:
~/.zshrc
zstyle ':completion:*' rehash true
On-demand rehash
Kuten edellä, pacman voidaan kuitenkin konfiguroida koukkujen avulla pyytämään automaattisesti rehash
, mikä ei aiheuta suorituskykysyistä haittaa jatkuvalle uudelleensyöttämiselle kuten edellä. Ottaaksesi tämän käyttöön, luo /etc/pacman.d/hooks
-hakemisto ja /var/cache/zsh
-hakemisto ja luo sitten koukkutiedosto:
/etc/pacman.d/hooks/zsh.hook
Operation = InstallOperation = UpgradeOperation = RemoveType = PathTarget = usr/bin/*Depends = zshWhen = PostTransactionExec = /usr/bin/install -Dm644 /dev/null /var/cache/zsh/zsh/pacman
Tämä pitää tiedoston muutospäivämäärän /var/cache/zsh/pacman
yhtenevänä viimeisimmän paketin asennus-, päivitys- tai poistoajan kanssa. Tämän jälkeen zsh
on houkuteltava uusimaan oma komentovälimuistinsa, kun se vanhenee, lisäämällä ~/.zshrc
:
~/.zshrc
zshcache_time="$(date +%s%N) "autoload -Uz add-zsh-hookrehash_precmd() { if ]; then local paccache_time="$(date -r /var/cache/zsh/pacman +%s%N)" if ((( zshcache_time < paccache_time )); then rehash zshcache_time="$paccache_time" fi fi}add-zsh-hook -Uz precmd rehash_precmd
Jos koukku precmd
käynnistetään ennen kuin /var/cache/zsh/pacman
päivitetään, viimeistely ei välttämättä toimi ennen kuin uusi kehote käynnistetään. Tyhjän komennon suorittamisen, esim. painamalla enter
, pitäisi riittää.
Vaihtoehtoinen on-demand rehash käyttäen SIGUSR1
Kuten edellä, koukkutiedosto näyttää kuitenkin tältä:
/etc/pacman.d/hooks/zsh-rehash.hook
Operation = InstallOperation = UpgradeOperation = RemoveType = PathTarget = usr/bin/*Depends = zshDepends = procps-ngWhen = PostTransactionExec = /usr/bin/pkill zsh --signal=USR1
zsh
-instansseille. Huomaa, että SIGUSR1:n oletuskäyttäytyminen on terminate, joten kun konfiguroit tämän ensimmäisen kerran, kaikkien käyttäjien kaikki käynnissä olevat zsh
-instanssit (mukaan lukien kirjautumiskuoret) lopettavat, jos ne eivät ole hankkineet alla olevaa trappia. ~/.zshrc
TRAPUSR1() { rehash }
Ylläoleva funktiotrap voidaan korvata listatrapilla trap 'rehash' USR1
. Katso zshmisc(1) § Trap-funktiot trap-tyyppien eroista.
Tämä metodi sitoo välittömästi rehash
kaikki zsh
-instanssit, jolloin ei enää tarvitse painaa enteriä laukaistakseen precmd
.
Sidotaan näppäin ncurses-sovellukseen
Sidotaan ncurses-sovellus näppäimen painallukseen, mutta se ei kuitenkaan hyväksy vuorovaikutusta. Käytä BUFFER
-muuttujaa saadaksesi sen toimimaan. Seuraavassa esimerkissä käyttäjät voivat avata ncmpcpp:n käyttämällä Alt+\
:
~/.zshrc
ncmpcppShow() { BUFFER="ncmpcpp" zle accept-line}zle -N ncmpcppShowbindkey '^2;
\a
. Esimerkiksi:
$ print -n '\e]2;My xterm title\a'
asettaa otsikon
My xterm title
Yksinkertainen tapa saada dynaaminen otsikko on asettaa otsikko precmd
– ja preexec
-koukkufunktioissa. Katso kohdasta zshmisc(1) § Koukkufunktiot luettelo käytettävissä olevista koukkufunktioista ja niiden kuvauksista.
Käyttämällä print -P
voit lisäksi hyödyntää Zsh:n komentokehotteiden escapeita.
- Tittelin tulostaminen voidaan jakaa useampaan komentoon, kunhan ne ovat peräkkäisiä.
- GNU Screen lähettää xterm-otsikon hardstatukseen (
%h
). Jos haluat käyttää Screenin merkkijonojen pakosekvenssejä (esim. värejä varten), sinun on asetettava hardstatus\e_
\e\
– pakosekvenssillä. Muussa tapauksessa, jos merkkijonoeskapseja käytetään\e]2;
\a
, pääteemulaattori saa vääristyneen otsikon, koska se ei pysty tulkitsemaan Screenin merkkijonoeskapseja.
- Älä käytä
print
:n-P
-vaihtoehtoaprint
, kun tulostat muuttujia, jotta niitä ei voida jäsennellä komentokehotteen escapseiksi. - Käytä
q
-parametrin laajennuslippua, kun tulostat muuttujia, jotta niitä ei tulkittaisi komentokehotteina.
~/.zshrc
autoload -Uz add-zsh-hookfunction xterm_title_precmd () {print -Pn -- '\e]2;%n@%m %~\a'] && print -Pn -- '\e_\005{g}%n\005{-}@\005{m}%m\005{-} \005{B}%~\005{-}\e\\\\'}function xterm_title_preexec () {print -Pn -- '\e]2;%n@%m %~ %# ' && print -n -- "${(q)1}\a"] && { print -Pn -- '\e_\005{g}%n\005{-}@\005{m}%m\005{-}%m\005{-} \005{B}%~\005{-} %# ' && print -n -- "${(q)1}\e\\\"; }}if ]; thenadd-zsh-hook -Uz precmd xterm_title_precmdadd-zsh-hook -Uz preexec xterm_title_preexecfi
Terminaali-emulaattorin välilehden otsikko
Jotkut terminaali-emulaattorit ja multiplekserit tukevat välilehden otsikon asettamista. Pakosekvenssit riippuvat päätelaitteesta:
Terminaali | Pakosekvenssit | Kuvaus |
---|---|---|
GNU-näytön | \ek \e\ |
Näytön ikkunan nimi (%t ). |
Konsoli | \e]30; \a |
Konsolin välilehden otsikko. |
Shell-ympäristön havaitseminen
Katsokaa Shell-ympäristön havaitsemista käsittelevästä arkistosta testejä, joilla havaitaan Shell-ympäristö. Tämä sisältää sisäänkirjautumisen/interaktiivisen shellin, Xorg-istunnon, TTY:n ja SSH-istunnon.
/dev/tcp vastaava: ztcp
Käytä zsh/net/tcp
-moduulia:
$ zmodload zsh/net/tcp
Voit nyt luoda TCP-yhteyksiä:
$ ztcp example.com 80
Lyhennys lopettaa komentotulkki osittaisella komentorivillä
Vakiintuneesti Ctrl+d
ei sulje komentotulkkia, jos komentorivi täyttyy, tämä korjaa sen:
.zshrc
exit_zsh() { exit }zle -N exit_zshbindkey '^D' exit_zsh
Kolmannen osapuolen laajennukset
Konfiguraatiokehykset
- oh-my-zsh – Suosittu, yhteisölähtöinen kehys Zsh-konfiguraation hallintaan. Sen mukana tulee valtava määrä hyödyllisiä funktioita, apuohjelmia, laajennuksia ja teemoja.
https://github.com/ohmyzsh/ohmyzsh || oh-my-zsh-gitAUR
- Prezto – Konfiguraatiokehys Zsh:lle. Mukana tulee moduuleja, jotka rikastuttavat komentoriviympäristöä järkevillä oletusasetuksilla, aliaseilla, funktioilla, automaattisella täydennyksellä ja prompt-teemoilla.
https://github.com/sorin-ionescu/prezto || prezto-gitAUR
- ZIM – Konfiguraatiokehys, jossa on huima nopeus ja modulaariset laajennukset. Zim on erittäin helppo mukauttaa, ja siinä on runsaasti moduuleja ja ominaisuuksia tinkimättä nopeudesta tai toiminnallisuudesta.
https://github.com/zimfw/zimfw || zsh-zim-gitAUR
Plugin managerit
- Antibody – Suorituskykyyn keskittyvä plugin manager, joka muistuttaa Antigeniä.
https://github.com/getantibody/antibody || antibodyAUR
- zinit (aiemmin ”zplugin”) – Joustava Zsh-pluginmanageri puhtaalla fpathilla, raporteilla, viimeistelynhallinnalla, turbotilalla
https://github.com/zdharma/zinit || zsh-zplugin-gitAUR
- Antigen – Zsh:n pluginmanageri, inspiraationsa oh-my-zsh:stä ja vundlesta. ABANDONED
https://github.com/zsh-users/antigen || antigen-gitAUR
- zgen – Kevyt ja yksinkertainen plugin manager Zsh:lle. ABANDONED
https://github.com/tarjoilija/zgen || zgen-gitAUR
- zplug – Seuraavan sukupolven laajennustenhallinta Zsh:lle. ABANDONED
https://github.com/zplug/zplug || zplugAUR
Fishin kaltainen syntaksin korostus ja automaattiset ehdotukset
Fish tarjoaa erittäin tehokkaan komentotulkin syntaksin korostuksen ja automaattiset ehdotukset. Jos haluat käyttää molempia Zsh:ssä, voit asentaa zsh-syntax-highlightingin, zsh-autosuggestionsin ja lopuksi lähdet jommankumman tai molemmat tarjotuista skripteistä zshrc:stä:
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zshsource /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
”Komentoa ei löydy” -käsittelijä
Tämä artikkeli tai osio on ehdolla siirrettäväksi kohtaan #Vinkit ja niksit.
pacman -F
, ei ole ”kolmannen osapuolen laajennus”. Vain pkgfile-jutut kuuluvat tähän osioon. (Keskustellaan Talk:Zsh#:ssä)pacman -F ”command not found” handler
pacman sisältää toiminnallisuuden tiedoston sisältävien pakettien etsimiseen. Seuraava komento ei löydy -käsittelijä käyttää pacmania suoraan etsimään vastaavia paketteja, kun tuntematon komento suoritetaan.
~/.zshrc
command_not_found_handler() {local pkgs cmd="$1" files=()printf 'zsh: komentoa ei löytynyt: %s' "$cmd" # tulosta komento ei löytynyt asap, sitten etsi pakettejafiles=(${(f)"$(pacman -F --machinereadable --"/usr/bin/${cmd}")"})if ((( ${#files} )); thenprintf '\r%s voi löytyä seuraavista paketeista:\n' "$cmd "local res=() repo package version filefor file in "$files"; dores=("${(0)file}")repo="$res "package="$res "version="$res "file="$res "printf ' %s/%s %s: /%s\n' "$repo" "$paketti" "$versio" "$tiedosto "doneelseprintf '\n'fireturn 127}
pacman -Fy
. Katso lisätietoja kohdasta pacman#Search for a package that contains a specific file. pkgfile ”command not found” handler
pkgfile sisältää Zsh-skriptitiedoston, joka tarjoaa command_not_found_handler
-toiminnon, joka hakee automaattisesti pkgfile-tietokannasta, kun syötät tunnistamattoman komennon.
Tarpeen on lähdekoodata skripti, jotta se voidaan ottaa käyttöön. Esimerkiksi:
~/.zshrc
source /usr/share/doc/pkgfile/command-not-found.zsh
Asennuksen poisto
Vaihda oletuskuoretulkki ennen zsh-paketin poistamista.
Ajoita seuraava komento:
$ chsh -s /bin/bash user
Käytä sitä jokaiselle käyttäjälle, jonka kirjautumiskomentotulkiksi on määritetty zsh (tarvittaessa myös root). Kun se on valmis, zsh-paketti voidaan poistaa.
Vaihtoehtoisesti voit vaihtaa oletuskomentotulkin takaisin Bashiksi muokkaamalla /etc/passwd
rootina.
/etc/passwd
, sillä se auttaa estämään virheelliset merkinnät ja/tai syntaksivirheet.Muuta esimerkiksi seuraava:
username:x:1000:1000:Full Name,,,:/home/username:/usr/bin/zsh
Tälle:
username:x:1000:1000:Full Name,,,:/home/username:/bin/bash