Efikasno korišćenje editora, regularnih izraza i hook-ova u Z-shell-u
Uvod
Z-shell, poznat i kao zsh
, predstavlja moćan interpretator komandne linije za operativne sisteme bazirane na Unix-u. Pored standardnih funkcija kao što su komandna linija, istorija i automatsko dovršavanje, Z-shell nudi i niz naprednih opcija, uključujući editore, regularne izraze i hook-ove.
U ovom tekstu, detaljno ćemo istražiti kako se ove funkcije mogu efikasno koristiti kako biste unapredili produktivnost i automatizovali zadatke u okviru Z-shell-a.
Editovanje teksta
Z-shell integriše dva ugrađena editora: zle
i vi
. zle
se odlikuje jednostavnošću korišćenja i oslanja se na prečice na tastaturi, dok vi
nudi robustnije mogućnosti za obradu teksta.
Korišćenje zle
editora
Nakon aktivacije KEYMAP-a, možete upotrebljavati sledeće tastere za navigaciju i modifikaciju teksta u komandnoj liniji:
- Strelice: za kretanje unutar linije komande
- Ctrl+A: za prelazak na početak linije komande
- Ctrl+E: za prelazak na kraj linije komande
- Backspace i Delete: za brisanje teksta
- Ctrl+Y: za vraćanje obrisanog teksta
- Ctrl+W: za brisanje reči levo od kursora
- Ctrl+U: za brisanje reči desno od kursora
Korišćenje vi
editora
Za ulazak u vi
režim, pritisnite Esc
, a zatim v
. Kada ste u vi
režimu, možete koristiti sledeće komande za editovanje:
- h, j, k, l: za kretanje unutar linije komande
- w, b: za kretanje po rečima
- x, d: za brisanje teksta
- y: za kopiranje teksta
- p: za lepljenje teksta
- u: za poništavanje promena
- Ctrl+C: za izlazak iz
vi
režima
Regularni izrazi
Regularni izrazi predstavljaju moćan alat za pretragu i manipulaciju tekstualnim podacima. Z-shell podržava regularne izraze koji su kompatibilni sa Perl sintaksom.
Osnove regularnih izraza
- .: odgovara bilo kom pojedinačnom karakteru
- \d: odgovara bilo kojoj cifri
- \w: odgovara bilo kom alfanumeričkom karakteru ili podvlaci
- \s: odgovara bilo kom praznom prostoru
- .*: odgovara bilo kojoj kombinaciji karaktera
- [abc]: odgovara bilo kom karakteru unutar datog skupa
- [^abc]: odgovara bilo kom karakteru koji nije u datom skupu
- ^: odgovara početku niza
- $: odgovara kraju niza
Upotreba regularnih izraza u Z-shell-u
Regularni izrazi se u Z-shell-u mogu koristiti na sledeće načine:
- Upoređivanje nizova: Komanda
[[ $variable =~ regex ]]
testira da li vrednost promenljive odgovara datom regularnom izrazu. - Pretraga i zamena nizova: Komanda
sed
se može koristiti za pretragu i zamenu nizova koristeći regularne izraze. - Filtriranje nizova: Komanda
grep
služi za filtriranje redova koji odgovaraju specificiranom regularnom izrazu.
Hook-ovi
Hook-ovi su segmenti koda koji se izvršavaju kada se određeni događaji pojave u Z-shell-u. Z-shell poseduje niz ugrađenih hook-ova koji vam omogućavaju da prilagodite ponašanje samog shell-a.
Ugrađeni hook-ovi
Neki od najkorisnijih ugrađenih hook-ova su:
- precmd: izvršava se pre pokretanja bilo koje komande
- preexec: izvršava se neposredno pre pokretanja komande
- chpwd: izvršava se prilikom promene trenutnog radnog direktorijuma
- logout: izvršava se pri izlasku iz Z-shell-a
Kreiranje sopstvenih hook-ova
Možete kreirati sopstvene hook-ove koristeći komandu zle -N
. Na primer, možete definisati prečicu na tastaturi za brzo prelaženje na početak linije:
zle -N goto-bol zle -a goto-bol "^A"
Zaključak
Editori, regularni izrazi i hook-ovi su snažne funkcije koje omogućavaju poboljšanje produktivnosti i automatizaciju zadataka u Z-shell-u. Učenjem i primenom ovih alata, možete prilagoditi Z-shell svojim potrebama i unaprediti vaše iskustvo u radu sa komandnom linijom.
Česta pitanja
1. Šta je KEYMAP?
KEYMAP je skup prečica na tastaturi koje koristite za izvršavanje raznih operacija u Z-shell-u.
2. Koje su prednosti korišćenja vi
editora?
vi
editor je napredniji od zle
editora i nudi veći spektar komandi za obradu teksta.
3. Kako mogu da koristim regularni izraz za pretragu komandi u istoriji?
Možete koristiti komandu: history | grep regex
4. Kako definišem prilagođeni hook koji se aktivira prilikom promene trenutnog radnog direktorijuma?
zle -N cwd-hook zle -a cwd-hook chpwd
5. Koji su neki dodatni ugrađeni hook-ovi koji su korisni u Z-shell-u?
- preexec_notify: izvršava se pre pokretanja svake komande i pruža dodatne informacije o komandi
- chprompt: izvršava se kada se komandna linija menja
- zle-line-init: izvršava se prilikom inicijalizacije komandne linije
6. Kako mogu dobiti više informacija o hook-ovima u Z-shell-u?
Možete koristiti sledeće resurse:
* Zvanična dokumentacija o hook-ovima
* Saveti o hook-ovima u Z-shell-u
7. Koji dodaci se mogu koristiti za unapređenje Z-shell iskustva?
Neki od popularnijih dodataka su:
* Oh-My-Zsh
* Zsh-syntax-highlighting
* Zsh-autosuggestions
8. Gde mogu dobiti pomoć za Z-shell?
Možete potražiti pomoć na sledećim kanalima: