2015. január 3., szombat

Hatékony munkakörnyezet készítése Zsh terminállal

A Linux rendszerek felhasználói általában terminálok segítségével érik el céljaikat. Fejlesztőként nagy segítség lehet egy jól összerakott Linux környezet, de átlagfelhasználóként is fontos annak használhatósága. A Linux és OSX rendszereken általában a Bash shell az alapértelmezett, ennél azonban sokkal jobban testreszabhatóbb és fejlettebb az ezen cikk alapjául is szolgáló Zsh.

## Zsh telepítés
$ sudo apt-get install zsh
## beállítás alapértelmezett shell-ként
$ chsh -s `which zsh`

A legjobb dolog a Zsh-val kapcsolatban, hogy funkcionalitása pluginekkel könnyen kiterjeszthető. A legnépszerűbb módja a Zsh konfiguráció kezelésének az Oh My Zsh, mely a Zsh felhasználói közösség által készített keretrendszer.

## Oh My Zsh telepítés
$ curl -L http://install.ohmyz.sh | sh

jump, z

A pluginek az Oh My Zsh telepítésével már fel is lettek telepítve, csak engedélyezni kell őket a ~/.zshrc fájlban. Az elérhető pluginekről itt lehet bővebben olvasni. A következő plugineket mindenkinek ajánlom, sokkal produktívabbá teszik a parancssoros környezeteket, korábban már Bash shell-nél is használtam őket. A jump nevű kiegészítéssel gyakran használt könyvtárakat menthetünk el könyvjelzőként és később gyorsan ugorhatunk hozzá; míg a z plugin egy autojump variáns, amely megjegyzi, hogy milyen mappákba lépünk be gyakran és reguláris kifejezések illesztésével megpróbál a legjobb mappába ugrani. Példa a használatukra:

## jump
$ cd /very/very/very/very/very/long/path
## mentés könyvjelzőbe
$ mark longpath
$ cd ~/
## ugrás könyvjelzőhöz
$ jump longpath
$ pwd
/very/very/very/very/very/long/path
## mentett könyvjelzők listázása
$ marks
longpath  -> /very/very/very/very/very/long/path
## könyvjelző törlése
$ unmark longpath
## z
$ cd ~/
## legjobban illeszkedő mappába ugrás
$ z path
$ pwd
/very/very/very/very/very/long/path

Syntax highlight

Egy másik nagyon jó kiegészítés, amely nincs benne az alap pluginek között a shell syntax highlight. Ezt a feature-t a Fish shellből kölcsönözték és rendkívül hasznos, hogy az enter leütése nélkül is látszik, hogy helyes-e az adott parancs.

## syntax highlight plugin telepítése
$ cd ~/.oh-my-zsh/custom/plugins
$ git clone git://github.com/zsh-users/zsh-syntax-highlighting.git
## hozzáadás a ~/.zshrc plugins listához
$ sed 's/plugins=(\(.*\))/plugins=(\1 zsh-sytax-highlighting)/' -i ~/.zshrc

apt-fast

Ha voltál már vele úgy, hogy untad a hosszan tartó apt-get vagy aptitude letöltéseket, akkor ez a kiegészítés szintén neked szól. Az apt-fast egy wrapper, mely párhuzamosan több szálon tölti le a csomagokat, így drasztikusan csökkentve a letöltések várakozási idejét. Az Oh My Zsh keretrendszer tartalmaz autocomplete funkciót az apt-fast-hoz is.

## apt-fast telepítése
$ sudo add-apt-repository 'deb http://ppa.launchpad.net/saiarcot895/myppa/ubuntu utopic main'
$ sudo apt-get update
$ sudo apt-get install apt-fast

t

A következő kis program más módon teszi még használhatóbbá a terminálunkat. Ez pedig a t, mely egy rendkívül egyszerű, kevés feature-rel rendelkező, de azokat nagyon jól végző TODO list manager. Erőssége abban rejlik, hogy a teendőinket szöveges fájlba tárolja el, mely tulajdonságot - a Linux rendszereken megszokott módon - sok féleképpen kihasználhatunk: szerkeszthetjük, feldolgozhatjuk bármilyen szövegszerkesztővel, verziókezelhetjük, szinkronizálhatjuk gépek között teendőinket. Használata nagyon egyszerű:

## taskok létrehozása
$ t First task.
$ t Second task.
## taskok listázása
$ t
1 - First task.
2 - Second task.
## task törlése
$ t -f 1
$ t
2 - Second task.
## task szerkesztése
$ t -e 2 Other task.
$ t
2 - Other task.

Telepítése:

## t telepítése
$ mkdir -p ~/.scripts/t
$ git clone https://github.com/sjl/t.git ~/.scripts/t
$ mkdir ~/.tasks
## alias létrehozása t-re
$ alias t='python ~/.scripts/t/t.py --task-dir ~/.tasks --list tasks'

alias

Az Oh My Zsh rengeteg operációsrendszer specifikus alias-t tartalmaz, melyek könnyebbé teszik a munkát, de néhány sajáttal kiegészíteném a listát.

alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
alias .....="cd ../../../.."
alias ......="cd ../../../../.."

## biztonságos fájlműveletek
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

## telepítés egyszerűsítése
alias install='sudo apt-fast -y install' 
alias search='apt-cache search' 
alias purge='sudo apt-fast -y purge'

## vágólapkezelés
alias xclip='xclip -selection c'

## t
alias t='python ~/.scripts/t/t.py --task-dir ~/.tasks --list tasks'

Az xclip parancs segítségével terminálból vágólapra helyezhetünk szövegeket a következő módon:

## ilyenkor az 123 szöveg lesz a vágólapon
$ echo 123 | xclip

Összefoglalás

Látható, hogy a terminálunkból egy igen hatékony eszközt tudunk varázsolni, egy kis munkával. Ha fejlesztő vagy, nem nagyon lehet elkerülni a parancssoros környezetek használatát, így érdemes azok használatát megtanulni, és hogy ez ne járjon akkora fájdalommal, érdemes úgy beállítani a környezetet, hogy abból a legtöbbet tudjuk kihozni.