Flokkar í staðinn fyrir möppur, eða merkingarfræðilegt skráarkerfi fyrir Linux

Gagnaflokkun sjálf er áhugavert rannsóknarefni. Ég elska að safna upplýsingum sem virðast nauðsynlegar og ég hef alltaf reynt að búa til rökrétt möppustigveldi fyrir skrárnar mínar, og einn daginn í draumi sá ég fallegt og þægilegt forrit til að úthluta töggum á skrár, og ég ákvað að ég gæti ekki lifað svona lengur.

Vandamálið við stigveldisskráarkerfi

Notendur standa oft frammi fyrir því vandamáli að velja hvar á að vista næstu nýju skrá og vandamálið við að finna eigin skrár (stundum er skráarnöfn alls ekki ætlað að muna eftir einstaklingi).

Leiðin út úr stöðunni getur verið merkingarfræðileg skráarkerfi, sem eru venjulega viðbót við hefðbundið skráarkerfi. Möppum í þeim er skipt út fyrir merkingareiginleika, einnig kölluð merki, flokkar og lýsigögn. Ég mun nota hugtakið „flokkur“ oftar, vegna þess að... Í samhengi við skráarkerfi er orðið "merki" stundum svolítið skrítið, sérstaklega þegar "undirmerki" og "merkisamnefni" koma fyrir.

Að úthluta flokkum á skrár útilokar að mestu vandamálið við að geyma og leita að skrá: ef þú manst eftir (eða giskar á) að minnsta kosti einum af flokkunum sem úthlutað er á skrá, þá mun skráin aldrei hverfa af sjónarsviðinu.

Áður var þetta efni tekið upp oftar en einu sinni á Habré (tími, два, þrír, fjórir o.s.frv.), hér lýsi ég lausninni minni.

Leið til framkvæmda

Strax eftir nefndan draum lýsti ég í minnisbók minni stjórnviðmótinu sem veitir nauðsynlega vinnu með flokka. Síðan ákvað ég að eftir viku eða tvær gæti ég skrifað frumgerð með Python eða Bash og þá þyrfti ég að vinna að því að búa til grafíska skel í Qt eða GTK. Raunveruleikinn, eins og alltaf, reyndist mun harðari og þróunin tafðist.

Upprunalega hugmyndin var fyrst og fremst að búa til forrit með þægilegu og hnitmiðuðu skipanalínuviðmóti sem myndi búa til, eyða flokkum, úthluta flokkum á skrár og eyða flokkum úr skrám. Ég hringdi í forritið vits.

Fyrsta tilraun til að búa til vits endaði í engu þar sem mikill tími fór að fara í vinnu og háskóla. Önnur tilraunin var nú þegar eitthvað: fyrir meistararitgerðina tókst mér að klára fyrirhugað verkefni og jafnvel gera frumgerð af GTK skelinni. En sú útgáfa reyndist svo óáreiðanleg og óþægileg að margt þurfti að hugsa upp á nýtt.

Ég notaði reyndar þriðju útgáfuna sjálfur í mjög langan tíma, eftir að hafa flutt nokkur þúsund af skrám mínum í flokka. Þetta var einnig mjög auðveldað með því að útfæra bash lokið. En nokkur vandamál, eins og skortur á sjálfvirkum flokkum og getu til að geyma skrár með sama nafni, voru enn eftir og forritið var þegar beygt undir eigin flókið. Þannig komst ég að þörfinni á að leysa flókin hugbúnaðarþróunarvandamál: skrifa ítarlegar kröfur, þróa virkt prófunarkerfi, kynna sér umbúðaleiðbeiningar og margt fleira. Ég er nú kominn að áætlun minni, svo að hægt sé að kynna þessa auðmjúku sköpun fyrir hinu frjálsa samfélagi. Sérstök skráastjórnun eins og stjórnun í gegnum hugmyndina um flokka vekur upp óvænt vandamál og vandamál, og við að leysa þau vits aflaði fimm verkefna til viðbótar í kringum sig, sem sum hver verða nefnd í greininni. Hingað til vits Ég hef ekki keypt myndræna skel, en þægindin við að nota skráarflokka frá skipanalínunni vega nú þegar þyngra fyrir mig alla kosti venjulegs grafísks skráarstjóra.

Dæmi um notkun

Byrjum einfalt - búðu til flokk:

vitis create Музыка

Við skulum bæta samsetningu við það sem dæmi:

vitis assign Музыка -f "The Ink Spots - I Don't Want To Set The World On Fire.mp3"

Þú getur skoðað innihald flokksins „Tónlist“ með „show“ undirskipuninni:

vitis show Музыка

Þú getur spilað það með því að nota „opna“ undirskipunina.

vitis open Музыка

Vegna þess að Ef við höfum aðeins eina skrá í flokknum „Tónlist“ mun aðeins sú ræsa. Í þeim tilgangi að opna skrár með sjálfgefnum forritum þeirra bjó ég til sérstakt tól vts-fs-opinn (venjuleg verkfæri eins og xdg-open eða mimeopen henta mér ekki af ýmsum ástæðum; en ef eitthvað er, í stillingunum geturðu tilgreint annað tól fyrir alhliða skráaropnun). Þetta tól virkar vel á mismunandi dreifingu með mismunandi vinnuumhverfi, svo ég mæli með að setja það upp ásamt vitis.

Þú getur líka beint tilgreint forritið til að opna skrár:

vitis open Музыка --app qmmp

Flokkar í staðinn fyrir möppur, eða merkingarfræðilegt skráarkerfi fyrir Linux

Við skulum búa til fleiri flokka og bæta við skrám með því að nota „úthluta“. Ef skrám er úthlutað í flokka sem eru ekki enn til, ertu beðinn um að búa þær til. Hægt er að forðast óþarfa beiðni með því að nota -yes flaggið.

vitis assign Программирование R -f "Введение в R.pdf" "Статистический пакет R: теория вероятностей и матстатистика.pdf" --yes

Nú viljum við bæta flokknum „Stærðfræði“ við skrána „Tölfræðipakki R: líkindafræði og stærðfræðitölfræði.pdf“. Við vitum að þessi skrá er þegar flokkuð sem "R" og því getum við notað flokkaslóðina frá Vitis kerfinu:

vitis assign Математика -v "R/Статистический пакет R: теория вероятностей и матстатистика.pdf"

Sem betur fer gerir bash lokið þetta auðvelt.

Við skulum sjá hvað gerðist, með því að nota --categories fána til að sjá lista yfir flokka fyrir hverja skrá:

vitis show R --categories

Flokkar í staðinn fyrir möppur, eða merkingarfræðilegt skráarkerfi fyrir Linux

Athugaðu að skrárnar hafa einnig verið flokkaðar sjálfkrafa eftir sniði, gerð (sameinar snið) og skráarendingu. Hægt er að slökkva á þessum flokkum ef þess er óskað. Seinna mun ég örugglega staðfæra nöfn þeirra.

Við skulum bæta einhverju öðru við „Stærðfræði“ fyrir fjölbreytni:

vitis assign Математика -f "Математический анализ - 1984.pdf" Перельман_Занимательная_математика_1927.djvu 

Og nú verða hlutirnir áhugaverðir. Í stað flokka er hægt að skrifa orðasambönd með aðgerðum samruna, skurðar og frádráttar, það er að segja aðgerðir á mengi. Til dæmis mun skurðpunktur „Math“ og „R“ leiða til einni skrá.

vitis show R i: Математика

Við skulum draga tilvísanir í tungumálið „R“ frá „Stærðfræði“:

vitis show Математика  R  #или vitis show Математика c: R

Við getum markmiðslaust sameinað tónlist og R tungumálið:

vitis show Музыка u: R

-n fáninn gerir þér kleift að „draga út“ nauðsynlegar skrár úr niðurstöðu beiðninnar með tölum og/eða sviðum, til dæmis, -n 3-7, eða eitthvað flóknara: -n 1,5,8-10,13. Það er oft gagnlegt með opna undirskipuninni, sem gerir þér kleift að opna þær skrár sem þú vilt af lista.

Flokkar í staðinn fyrir möppur, eða merkingarfræðilegt skráarkerfi fyrir Linux

Á meðan við erum að hverfa frá því að nota hefðbundið skráastigveldi er oft gagnlegt að hafa hreiðra flokka. Við skulum búa til undirflokk "Tölfræði" undir flokknum "Stærðfræði" og bæta þessum flokki við viðeigandi skrá:

vitis create Математика/Статистика

vitis assign Математика/Статистика -v "R/Введение в R.pdf"

vitis show Математика --categories

Flokkar í staðinn fyrir möppur, eða merkingarfræðilegt skráarkerfi fyrir Linux

Við getum séð að þessi skrá hefur nú flokkinn „Stærðfræði/tölfræði“ í stað „Stærðfræði“ (auka hlekkir eru raktir).

Það getur verið óþægilegt að takast á við alla leiðina, við skulum búa til „alþjóðlegt“ samnefni:

vitis assign Математика/Статистика -a Статистика

vitis show Статистика

Flokkar í staðinn fyrir möppur, eða merkingarfræðilegt skráarkerfi fyrir Linux

Ekki bara venjulegar skrár

Nettenglar

Til að sameina geymslu hvers kyns upplýsinga væri að minnsta kosti gagnlegt að flokka tengla á internetauðlindir. Og þetta er mögulegt:

vitis assign Хабр Цветоаномалия -i https://habr.com/ru/company/sfe_ru/blog/437304/ --yes

Skrá verður búin til á sérstökum stað með haus HTML síðunnar og endingunni .desktop. Þetta er hefðbundið flýtileiðarsnið í GNU/Linux. Slíkar flýtileiðir eru sjálfkrafa flokkaðar sem netbókamerki.

Auðvitað eru flýtileiðir búnar til til að nota:

vitis open Цветоаномалия

Framkvæmd skipunarinnar veldur því að nývisti tengillinn opnast í vafranum. Flokkaðar flýtileiðir að internetheimildum geta komið í staðinn fyrir bókamerki vafra.

Skráarbrot

Það er líka gagnlegt að hafa flokka fyrir einstaka stykki af skrám. Ekki slæm beiðni, ha? En núverandi útfærsla hingað til hefur aðeins áhrif á einfaldar textaskrár, hljóð- og myndskrár. Segjum að þú þurfir að merkja ákveðinn hluta tónleika eða fyndið augnablik í kvikmynd, þá þegar þú notar assign geturðu notað fánana -fragname, -start, -finish. Við skulum vista skjávarann ​​frá "DuckTales":

vitis assign vitis assign -c Заставки -f Duck_Tales/s01s01.avi --finish 00:00:59 --fragname "Duck Tales intro"

vitis open Заставки

Í raun og veru á sér ekki stað nein skráaklipping; í staðinn er búið til bendiskrá á brotið sem lýsir skráargerðinni, slóðinni að skránni, upphafi og enda brotsins. Gerð og opnun ábendinga á brot er falin tólum sem ég gerði sérstaklega í þessum tilgangi - þetta eru mediafragmenter og fragplayer. Sá fyrsti skapar, sá annar opnast. Þegar um er að ræða hljóð- og myndupptökur er miðlunarskráin ræst úr ákveðinni til ákveðinnar stöðu með VLC spilaranum, þannig að hún verður líka að vera í kerfinu. Mig langaði fyrst að gera þetta út frá mplayer en einhverra hluta vegna var það mjög skakkt með staðsetningu á réttu augnabliki.
Í dæminu okkar er skráin „Duck Tales intro.fragpointer“ búin til (hún er sett á sérstakan stað) og síðan er brot spilað frá upphafi skráarinnar (þar sem –start var ekki tilgreint við gerð) þar til 59. annað mark, eftir það lokar VLC .

Annað dæmi er þegar við ákváðum að flokka staka frammistöðu á tónleikum eftir frægan listamann:

vitis assign Лепс "Спасите наши души" -f Григорий Лепc - Концерт Парус - песни Владимира Высоцкого.mp4 --fragname "Спасите наши души" --start 00:32:18 --finish 00:36:51

vitis open "Спасите наши души"

Þegar hún er opnuð verður skráin innifalin í viðkomandi stöðu og lokar eftir fjórar og hálfa mínútu.

Hvernig þetta virkar allt + viðbótareiginleikar

Geymsla flokka

Strax í upphafi hugsunar um að skipuleggja merkingarfræðilegt skráarkerfi komu þrjár leiðir upp í hugann: með því að geyma táknræna tengla, í gegnum gagnagrunn, með lýsingu í XML. Fyrsta aðferðin vann, því... annars vegar er auðvelt í framkvæmd og hins vegar hefur notandinn möguleika á að skoða flokka beint úr skráarkerfinu (og það er þægilegt og mikilvægt). Í upphafi notkunar vits „Vitis“ skráin og „.config/vitis/vitis.conf“ stillingarskráin eru búnar til í heimaskrá notandans. Möppur sem samsvara flokkum eru búnar til í ~/Vitis og táknrænir tenglar á upprunalegu skrárnar eru búnar til í þessum flokkaskrám. Samnefni flokka eru líka bara tenglar á þá. Auðvitað gæti tilvist „Vitis“ skrárinnar í heimaskránni ekki hentað sumu fólki. Við getum skipt yfir á hvaða annan stað sem er:

vitis service set path /mnt/MyFavoriteDisk/Vitis/

Á ákveðnum tímapunkti verður ljóst að það er lítið vit í að flokka skrár sem eru dreifðar á mismunandi staði, þar sem staðsetning þeirra getur breyst. Þess vegna, til að byrja með, bjó ég til möppu fyrir sjálfan mig, þar sem ég dumpaði öllu heimskulega og gaf því alla flokka. Þá ákvað ég að það væri gaman að formfesta þetta augnablik á námsstigi. Svona birtist hugtakið „skjalarými“. Í upphafi notkunar vits Það myndi ekki skaða að setja upp slíka staðsetningu strax (allar skrár sem við þurfum verða geymdar þar) og virkja sjálfvirka vistun:

vitis service add filespace /mnt/MyFavoriteDisk/Filespace/

vitis service set autosave yes

Án sjálfvirkrar vistunar, þegar „úthluta“ undirskipuninni er notað, verður --save fáninn nauðsynlegur ef þú vilt vista bættu skrána á skráarrýmið.

Þar að auki geturðu bætt við nokkrum skráarrýmum og breytt forgangsröðun þeirra; þetta getur verið gagnlegt þegar það eru margar skrár og þær eru geymdar á mismunandi miðlum. Ég mun ekki íhuga þennan möguleika hér; nánari upplýsingar er að finna í forritshjálpinni.

Merkingarfræðileg skráakerfisflutningur

Engu að síður, Vitis skráin og skráarrýmin geta fræðilega séð stundum færst á milli staða. Til að láta það virka bjó ég til sérstakt tól link-ritstjóri, sem getur breytt hlekkjum í einu, skipt út hluta slóðarinnar fyrir aðra:

cp -r /mnt/MyFavoriteDisk/Vitis/ ~/Vitis
link-editor -d ~/Vitis/ -f /mnt/MyFavoriteDisk/Vitis/ -r ~/Vitis/ -R
cp -r /mnt/MyFavoriteDisk/Filespace/ ~/MyFiles
link-editor -d ~/Vitis/ -f /mnt/FlashDrive-256/Filespace/ -r ~/MyFiles -R

Í fyrra tilvikinu, eftir að við höfum flutt úr /mnt/MyFavoriteDisk/Vitis/ í heimaskrána, er táknrænum hlekkjum sem tengjast samnöfnunum breytt. Í öðru tilvikinu, eftir að staðsetning skráarrýmisins hefur verið breytt, er öllum tenglum í Vitis breytt í nýja í samræmi við beiðni um að skipta um hluta af slóð þeirra.

Sjálfvirkir flokkar

Ef þú keyrir skipunina vitis service get autocategorization, þú getur séð að sjálfgefið er sjálfvirkum flokkum úthlutað eftir sniði (sniði og gerð) og skráarendingu (viðbót).

Þetta er gagnlegt þegar þú þarft til dæmis að finna eitthvað meðal PDF-skjala eða skoða það sem þú hefur vistað af EPUB og FB2, þú getur einfaldlega keyrt beiðnina

vitis show Format/MOBI u: Format/FB2

Það gerðist bara þannig að staðlað GNU/Linux verkfæri eins og skrá eða mimetype hentaði mér ekki einmitt vegna þess að þau ákveða ekki alltaf sniðið rétt; ég þurfti að gera mína eigin útfærslu byggða á skráarundirskriftum og viðbótum. Almennt séð er efnið að skilgreina skráarsnið áhugavert efni til rannsókna og á skilið sérstaka grein. Í bili get ég sagt að kannski hef ég ekki veitt sanna viðurkenningu fyrir öll snið í heiminum, en almennt er það nú þegar að virka vel. Að vísu skilgreinir EPUB sniðið sem ZIP (almennt séð er þetta réttlætanlegt, en í reynd ætti þetta ekki að teljast eðlileg hegðun). Í bili skaltu íhuga þennan eiginleika tilrauna og tilkynna allar villur. Í undarlegum aðstæðum geturðu alltaf notað skráarendingarflokka, til dæmis, Viðbót/epub.

Ef sjálfvirkir flokkar eftir sniði eru virkir eru sjálfvirkir flokkar sem flokka sum snið eftir tegundum einnig virkjaðir: „Archives“, „Pictures“, „Video“, „Audio“ og „Documents“. Staðbundin nöfn verða einnig gerð fyrir þessa undirflokka.

Hvað er ekki sagt

vits Það reyndist vera mjög margþætt verkfæri og það er erfitt að ná yfir allt í einu. Leyfðu mér að nefna stuttlega hvað annað sem þú getur gert:

  • flokkum er hægt að eyða og fjarlægja úr skrám;
  • Hægt er að afrita niðurstöður tjáningarfyrirspurna í tilgreinda möppu;
  • hægt er að keyra skrár sem forrit;
  • Sýna skipunin hefur marga möguleika, til dæmis að flokka eftir nafni/dagsetningu breytinga eða aðgangi/stærð/viðbót, sýna skráareiginleika og slóðir að frumritum, gera kleift að birta faldar skrár o.s.frv.;
  • Þegar þú vistar tengla á netheimildir geturðu líka vistað staðbundin afrit af HTML síðum.

Allar upplýsingar er að finna í notendahjálpinni.

Horfur

Efasemdarmenn segja oft að „enginn mun setja þessi merki sjálfur“. Með mínu eigin dæmi get ég sannað hið gagnstæða: Ég hef nú þegar flokkað meira en sex þúsund skrár, búið til meira en þúsund flokka og samnefni og það var þess virði. Þegar eitt lið vitis open План opnaðu verkefnalistann þinn eða þegar þú ert með einni skipun vitis open LaTeX Þegar þú opnar bók Stolyarovs um LaTeX útlitskerfið er það nú þegar siðferðilega erfitt að nota skráarkerfið „á gamla mátann“.

Á þessum grunni vakna ýmsar hugmyndir. Til dæmis geturðu búið til sjálfvirkt útvarp sem kveikir á þematónlist í samræmi við núverandi veður, frí, vikudag, tíma dags eða árs. Jafnvel nær efninu er tónlistarspilari sem veit um flokka og getur spilað tónlist með tjáningu með aðgerðum á flokkum sem á settum. Það er gagnlegt að búa til púka sem mun fylgjast með "Downloads" skránni og bjóða upp á að flokka nýjar skrár. Og auðvitað ættum við að búa til venjulegan grafískan merkingarskrárstjóra. Einu sinni bjó ég meira að segja til vefþjónustu fyrir fyrirtækið til sameiginlegrar notkunar á skrám, en hún var ekki í forgangi og varð óviðkomandi, þó hún hafi náð háum árangri. (Vegna mikilla breytinga á vits, það er ekki lengur nothæft.)

hér er smá demo

Flokkar í staðinn fyrir möppur, eða merkingarfræðilegt skráarkerfi fyrir Linux

Ályktun

vitis er ekki fyrsta tilraunin til að gjörbreyta vinnustílnum með gögn, en ég taldi mikilvægt að útfæra hugmyndir mínar og gera útfærsluna aðgengilega almenningi undir GNU GPL leyfinu. Til hægðarauka hefur verið gerður deb pakki fyrir x86-64; hann ætti að virka á öllum nútíma Debian dreifingum. Það voru minniháttar erfiðleikar á ARM (meðan öll önnur forrit tengdust vits, virkar fínt), en í framtíðinni verður tekinn saman vinnupakki fyrir þennan vettvang (armhf). Ég hef hætt að búa til RPM pakka í bili vegna vandamála á Fedora 30 og erfiðleika við að dreifa yfir margar RPM dreifingar, en síðari pakkar verða samt gerðir fyrir að minnsta kosti nokkra þeirra. Í millitíðinni geturðu notað make && make install eða checkinstall.

Þakka ykkur öllum fyrir athyglina! Ég vona að þessi grein og þetta verkefni geti verið gagnlegt.

Tengill á verkefnageymslu

Heimild: www.habr.com

Bæta við athugasemd