Spolu se spoustou novinek se do Fedory „Verne“ dostal ne moc známý program
autojump. Jelikož si vždy po vydání nové verze Fedory přečtu dokumentaci
k novému vydání
, program jsem objevil, vyzkoušel a oblíbil si.

Všichni to známe, skákání z jednoho adresáře do druhého. K tomu nám slouží
pochopitelně příkaz shellu „cd“. Ten používáme ve chvíli, kdy potřebujeme
měnit aktuální pracovní adresář. Pakliže si potřebujeme „odskočit“ do jiného
adresáře s úmyslem vrátit se zpět, jsou v Bashi k dispozici vestavěné příkazy
pushd a popd. Vypadá to nějak takto:

cd ~/Práce
Práce> # pracuji, makám, prostě do toho buším
Práce> pushd ~/Hudba
Hudba> cp -av HeavyMetal/ /media/iAudio
Hudba> popd
Práce> _

Tento přístup je sice účinný, ale jelikož se předpokládá návrat do původního
adresáře, jsou cesty ukládány do zásobníku, což nemusí být vždy výhodné.
Adresáře se nám tam pak zbytečně hromadí. To si uvědomil také autor programu
autojump, a navíc se zamyslel.

Moderní internetový prohlížeč vytváří databázi všech adres, které uživatel
napíše do adresního řádku. Ty, které píše nejčastěji, preferuje ve výsledcích
hledání a v doplňování. Je to velmi pohodlné, uživatel prohlížeč sám „naučí“
adresy, které používá nejčastěji. Ten můj například už dávno ví, že napíšu-li
do adresního řádku „ph“ jde se na http://www.phoronix.com. Mimochodem
Phoronix.com je takový linuxový „živě.cz“, ovšem ve světovém měřítku.

Idea je tedy jasná - program vytváří databázi adresářů a umožní se rychle mezi
nimi přepínat. Jenže u programu autojump se šlo ještě dál - program nepočítá
jen kolikrát do daného adresáře přejdete, ale hlavně čas, který v něm
strávíte. Čas je hlavní a rozhodující kritérium. Pojďme se tedy na autojump
podívat podrobněji.

Instalace je snadná a přímočará. Program samotný má minimum závislostí a malou
velikost (cca 40 kB). Přidán byl do Fedory 16.

yum -y install autojump

Balíček toho opravdu moc neobsahuje, tak to mám rád:

$ rpm -ql autojump
/etc/profile.d/autojump.bash
/etc/profile.d/autojump.sh
/usr/bin/autojump
/usr/bin/jumpapplet
/usr/share/man/man1/autojump.1.gz

Přiznám se že jsem podváděl, odstranil jsem z výpisu ikonu a krátkou
dokumentaci. Necítím se však vinen.

Jak vidno na výpise nahoře, autojump se nainstaluje do systémového profilu.
Pro správnou funkčnost tedy stačí odhlásit všechny otevřené terminály.
Součástí instalace je i applet, který dokáže sledovat terminály GNOME a KDE,
nicméně ten jsem nepotřeboval použít. Ani vás to nemusí trápit, pokud váš
terminál spouští login shell.

Jen tak na okraj, autojump je kompatibilní se shelly bash a zsh. Podpora pro
druhý jmenovaný je zatím jen v upstreamu.

V první fázi je potřeba autojump „naučit“, takže si můj článek hoďte do
oblíbených (můžete rovnou přidat i můj blog) a pár dní program
používejte. Pak si přečtěte následující kapitolku.

Přes kaluže

Samotné použití je velmi snadné, interakce probíhá pomocí dvou příkazů:
jumpstat a j. První jmenovaný je vlastně alias na autojump --stat
a druhý je funkcí shellu, která volá ten samý program. Nejprve se podíváme,
jak jsme na tom:

$ jumpstat
1.0:    /home/lzap/.xchat2/xchatlogs
3.0:    /home/lzap/bin
15.0:   /home/lzap/Download
32.0:   /home/lzap/CloudForms/katello
51.0:   /home/lzap/CloudForms/katello/scripts/system-test
120.0:  /home/lzap/Mutt
212.0:  /home/lzap/CloudForms/katello/src
Total key weight: 576. Number of stored paths: 37

Výpis jsem trošku zkrátil o položky, které měly váhu 1.0 (těch bylo
z pochopitelných důvodů nejvíc). A nyní můžeme „skákat“:

$ j

Skočí do nejpoužívanějšáho adresáře (s nejvyšší indexem). V mém případě by to
byl adresář katello/src.

$ j

Pokud použijete stejný příkaz ještě jednou (tj. bez parametru), ocitnete se
v druhém nejpoužívanějším. U mě Mutt. Při opakovaném použití bude autojump
alternovat mezi prvním a druhým.

$ j down

Vyhledá adresář vyhovující danému výrazu bez ohledu na velikosti písmen,
přičemž vyhledávací algoritmus podstupuje „odspodu“ (tedy od
nejpoužívanějších), ale bere v ohled aktuální adresář. Zjednodušeně řečeno
alternuje mezi všemi adresářemi ze seznamu, což lze pěkně ukázat na
následujícím příkladu:

$ j cloud
/home/lzap/CloudForms/katello/src
$ j cloud
/home/lzap/CloudForms/katello/scripts/system-test
$ j cloud
/home/lzap/CloudForms/katello
$ j cloud
/home/lzap/CloudForms/katello/src

Pokud se tedy hned napoprvé nedostanete do kýžené destinace, stačí použít
Ctrl-p (platí pro Bash), šipku nahoru (pro ty, kdo rádi posouvají ruce po
klávesnici) nebo hledaný výraz zpřesnit.

Kdyby vás to zajímalo, tak autojump je napsaný v Pythonu a data ukládá do
~/.local/share/autojump. Licence? GNU GPL verze 3. V případě, že chcete
autorovi pomoci s vývojem, poslat opravu nebo prostě jen mrknout na zdrojáky,
navštivte stránku projektu.

Autojump je milý a rychlý program, který mi zpříjemnil práci. Oblíbit si ho
není žádná věda a já doufám, že padne do oka i vám.