Myš je pro kočku: Vnitřek souboru

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 rwxread, write, execute, která vidíte u výpisů z disku.

🚧 Na první pohled se Linux může zdát méně benevolentní než Windows, uživatel po přechodu každou chvíli zakopává o potíže s právy. Navykne si volat chmod 777 na celé kolo… Věříte si v problematice? Schválně, řekněte, jak nastavit, aby uživatel měl přístup jenom ke vnořeným adresářům, ale ne k vyšším, ani nižším?

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.

📸 Mediální soubory jako JPG obsahují také metadata, do nich ale zapisuje foťák a pro souborový systém jsou běžnou součástí obsahu. Datum změny souboru se může lišit od vnitřního data a vy pak marně pátráte, kdy fotka byla pořízena a jaké bylo zrovna časové pásmo.

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.

Získali jste text s proloženými řádky… a chystáte se mazat jeden po druhém? No to snad ne! Naberu text Ctrl+A, přejdu do příkazového rozhraní F7 a zadám rmblank, odstranit prázdné řádky. Příkazů znám jen několik, ale všechny se hodí. Zkratkou Ctrl+J jako

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.


Program Meld srovnává i tři soubory najednou. Funkci využijete nejčastěji při slučování větví v gitu, po stranách jsou různé verze, uprostřed pak společný předek větví, kde očistíte konfliktní změny.

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ší.

Autor:

Zanechte komentář

Všechny údaje jsou povinné. E-mail nebude zobrazen.

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..