V našem seriálu jsme na několik dílů zabrousili do hlubin disku. (Mělčích hlubin. Hodně mělkých. Respektive jsme vypluli rovně po hladině, ale pod námi ty hlubiny jsou.) Jak si zorganizovat adresáře (soukromě), kterým správcem se do nich koukat (Krusaderem) a v tomhle textu si povíme něco o menších logických celcích, jednotlivých souborech.
Při formátování disku vybíráme souborový systém. Ten si drží seznam podpoložek, kterým (aspoň na Linuxu a podobných) říkáme inody – soubory a adresáře. Souborový systém drží o každé inodě metadata. Kdy se naposled změnila? Kterému uživateli patří? Smí ji editovat uživatel z jiné skupiny?
Linux řadí každého uživatele do několika skupin a soubor patří pod jednoho uživatele a jednu skupinu a matici práv: informaci, zda majitel, skupina nebo všichni ostatní mohou inodu číst, psát do ní nebo ji přímo spouštět. To jsou ta písmenka rwx – read, write, execute, která vidíte u výpisů z disku.
Přístupová práva u adresářů určují, zda do nich uživatel může zapisovat soubory, pak jsou různé příznaky, které se vyvinuly pro specifikou potřebu, a pokaždé, když si myslíte, že už víte všechno, nastoupí symlinky a roury a šifrované vnořené souborové systémy a sandboxy a celé je to hrozně složité.
Dost o metadatech. Důležité pro nás je, že souborový systém sděluje, na jakých cestách uchovává obsahy jednotlivých souborů. Kde jsou ty balíky jedniček a nul, jimž říkejme soubory textové či binární, podle toho, jestli je přečteme sami očima, nebo na ně potřebujeme jiný program.
Nás dnes zajímají především soubory textové, kde je upravovat a jak se v nich vyznat, když se popletou.
Editace
Každou chvíli se nám dostanou pod ruku nějaká menší data ke zpracování. Jestli už jste podnikli rešerši a našli se v Sublime Textu, VSCode, asi zůstanete, kde jste. Jestli jste spokojeni s Atomem, už jste asi nespokojeni, teď po 12 letech skončil. Jestli víte, že znáte Vim, nic vám nenabídnu. Ale pokud zůstáváte věrni geditu, který hnízdí předinstalován na Ubuntu, nebo trpíte v příkazové řádce s nanem, nabízím mnoho. Už několikrát jsem propagoval editor Kate. Proč vlastně?
Je rozumně velký, patří k sympatickým přátelům z KDE (takže jestli máte nějakou aplikaci KDE, bude ještě menší, využiv jejich knihoven) a umožní vám růst. Po čemkoli zatoužíte, s trochou štěstí potkáte v bohatých chodbách menu.
join zase spojíte řádky do jednoho. A šikovnou F10 přepínáte zalomení řádků – aby se vám vešly/nevešly na obrazovku.
Panel Ctrl+R k nahrazování textu báječně zvládá regulární výrazivo, jakmile potřebujete hromadně přehodit nějaké uvozovky. Jakmile editujete soubor, k jehož editaci potřebujete práva administrátora, Kate je schopen si o ně při ukládání říci, místo aby vás do poslední chvíle napínal a pak milostivě prohlásil, že tohle tedy ukládat nebude, ať si vyberete jinou lokaci.
Jako každá slušná aplikace podporuje Kate více tabů, a to ještě dost pokročile. Nový tab pro rychlé věci vyvoláte nepřekvapivým Ctrl+N a naopak cennější data editujete v existujících souborech: máte-li zkratku na příkaz kate ~/muj_tridici_soubor.txt, Kate vás vždy hodí na správný tab.
Porovnávání
Nevíte, jestli se soubory liší a čím. Které řádky přibyly a které se změnily? Jedno odpoledne jsem si říkal, že bych měl takový nástroj naprogramovat a zcela při tom pohořel. Dostával jsem se do čím dál těžších smyček… Ale není horší krádeže myšlenky, než když “ji někdo ukradne sto let před vaším narozením”, zjistil jsem snadno, že jsem nebyl první programátor na světě s podobnou potřebou. Nástroj diff existuje přes půl století a jeho hlubiny těžko kdy pochopím.
Ovšem obtížně chápu i jeho výstup – proto vznikly grafické alternativy. Krusader implicitně používá bratranecký program Kompare od KDE, který je jen nadstavbou diffu. Já si oblíbil Meld z rodiny GNOME. Jeho výhodou je, že nepoužívá diff jako takový, ale ukazuje rozdíly v jednotlivých písmenkách (zatímco diff pracuje jen s řádky). Rozdílný řádek označí, ale ještě více označí dané znaky.
Skvěle se mi hodil na Ondřeje Neffa. Ještě někdy na základce jsem zaznamenal knížku Tma, jejíž téma mnou zalomcovalo, ale neuměl jsem moc číst. Když jsem se k ní dostal jako dospělý, ukázalo se, že Neff, zhrzený polistopadovým vývojem, mezitím román přepracoval a já tak četl jinou verzi. Co změnil? Hořel jsem zvědavostí a nechal si text namlídlit. Program zřetelně ukázal autorovy změny, nejprve kusé, pak čím dál větší, tu slovo změnil, tu vypustil celý odstavec, až do doby, kdy se děj zcela odklání.
Takže do Settings / Configure / Dependencies / diff utility zadejte /usr/bin/meld a Kompare používejte jenom na binární soubory – tam je rychlejší.