Kataloglar o'rniga toifalar yoki Linux uchun semantik fayl tizimi

Ma'lumotlarni tasniflashning o'zi qiziqarli tadqiqot mavzusidir. Men zarur bo'lib tuyuladigan ma'lumotlarni to'plashni yaxshi ko'raman va men doimo fayllarim uchun mantiqiy katalog ierarxiyasini yaratishga harakat qildim va bir kuni tushimda fayllarga teglar belgilash uchun chiroyli va qulay dasturni ko'rdim va men yashay olmayman deb qaror qildim. yana shunday.

Ierarxik fayl tizimlari muammosi

Foydalanuvchilar ko'pincha keyingi yangi faylni qaerga saqlashni tanlash muammosi va o'z fayllarini topish muammosiga duch kelishadi (ba'zida fayl nomlari odam tomonidan umuman eslab qolishi uchun mo'ljallanmagan).

Vaziyatdan chiqish yo'li odatda an'anaviy fayl tizimiga qo'shimcha bo'lgan semantik fayl tizimlari bo'lishi mumkin. Ulardagi kataloglar semantik atributlar bilan almashtiriladi, ular teglar, toifalar va metadata deb ham ataladi. Men “toifa” atamasini tez-tez ishlataman, chunki... Fayl tizimlari kontekstida "teg" so'zi ba'zida biroz g'alati bo'ladi, ayniqsa "pastki teglar" va "teg taxalluslari" paydo bo'lganda.

Fayllarga toifalarni belgilash faylni saqlash va qidirish muammosini katta darajada bartaraf qiladi: agar siz faylga tayinlangan toifalardan kamida bittasini eslab qolsangiz (yoki taxmin qilsangiz), fayl hech qachon koʻzdan yoʻqolmaydi.

Ilgari bu mavzu Habré-da bir necha marta ko'tarilgan (vaqt, два, uchta, to'rtta va hokazo), bu erda men o'z yechimimni tasvirlayman.

Amalga oshirish yo'li

Yuqorida aytib o'tilgan tushdan so'ng, men daftarimda toifalar bilan kerakli ishlashni ta'minlaydigan buyruq interfeysini tasvirlab berdim. Keyin men bir yoki ikki hafta ichida Python yoki Bash yordamida prototip yozishga qaror qildim va keyin Qt yoki GTK-da grafik qobiq yaratish ustida ishlashim kerak edi. Haqiqat, har doimgidek, ancha qattiqroq bo'lib chiqdi va rivojlanish kechiktirildi.

Asl g'oya, birinchi navbatda, toifalarni yaratish, o'chirish, fayllarga toifalarni belgilash va fayllardan toifalarni o'chirish uchun qulay va ixcham buyruq qatori interfeysi bilan dastur yaratish edi. Men dasturga qo'ng'iroq qildim vitis.

Yaratish uchun birinchi urinish vitis hech narsa bilan yakunlanmadi, chunki ko'p vaqt ish va kollejga sarflana boshladi. Ikkinchi urinish allaqachon bir narsa edi: magistrlik dissertatsiyasi uchun men rejalashtirilgan loyihani yakunlashga va hatto GTK qobig'ining prototipini yaratishga muvaffaq bo'ldim. Ammo bu versiya shunchalik ishonchsiz va noqulay bo'lib chiqdiki, ko'p narsalarni qayta ko'rib chiqishga to'g'ri keldi.

Men uchinchi versiyani o'zim juda uzoq vaqt ishlatganman, bir necha ming fayllarimni toifalarga o'tkazganman. Bunga, shuningdek, amalga oshirilgan bash yakuni ham katta yordam berdi. Ammo ba'zi muammolar, masalan, avtomatik toifalarning yo'qligi va bir xil nomdagi fayllarni saqlash qobiliyati hali ham saqlanib qoldi va dastur allaqachon o'zining murakkabligi ostida egilgan edi. Shunday qilib, men dasturiy ta'minotni ishlab chiqishning murakkab muammolarini hal qilish zaruratiga keldim: batafsil talablarni yozish, funktsional test tizimini ishlab chiqish, qadoqlash bo'yicha ko'rsatmalarni o'rganish va boshqalar. Men bu kamtarona ijodni erkin jamoaga taqdim etish uchun rejamga yetib keldim. Kategoriyalar kontseptsiyasi orqali boshqarish kabi maxsus fayllarni boshqarish kutilmagan muammolar va muammolarni keltirib chiqaradi va ularni hal qilishda vitis o'z atrofida yana beshta loyihani ishlab chiqdi, ulardan ba'zilari maqolada aytib o'tiladi. Hozirgacha vitis Men grafik qobiqni sotib olmadim, lekin buyruq satridan fayl toifalarini ishlatish qulayligi men uchun oddiy grafik fayl boshqaruvchisining afzalliklaridan ustundir.

Foydalanish misollar

Oddiydan boshlaylik - kategoriya yarating:

vitis create Музыка

Misol sifatida unga bir nechta kompozitsiyani qo'shamiz:

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

"Show" kichik buyrug'i yordamida "Musiqa" toifasi tarkibini ko'rishingiz mumkin:

vitis show Музыка

Siz uni "ochiq" kichik buyrug'i yordamida o'ynashingiz mumkin.

vitis open Музыка

Chunki Agar bizda "Musiqa" toifasida faqat bitta fayl bo'lsa, u holda faqat bitta fayl ishga tushadi. Fayllarni standart dasturlari bilan ochish uchun men alohida yordamchi dastur yaratdim vts-fs-ochiq (xdg-open yoki mimeopen kabi standart vositalar menga bir qator sabablarga ko'ra mos kelmadi; lekin, agar biror narsa bo'lsa, sozlamalarda universal faylni ochish uchun boshqa yordamchi dasturni belgilashingiz mumkin). Ushbu yordamchi dastur turli xil ish muhitlari bilan turli xil tarqatishlarda yaxshi ishlaydi, shuning uchun uni vitis bilan birga o'rnatishni tavsiya etaman.

Bundan tashqari, fayllarni ochish uchun dasturni to'g'ridan-to'g'ri belgilashingiz mumkin:

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

Kataloglar o'rniga toifalar yoki Linux uchun semantik fayl tizimi

Keling, ko'proq toifalar yarataylik va "tayinlash" yordamida fayllarni qo'shamiz. Agar fayllar hali mavjud bo'lmagan toifalarga tayinlangan bo'lsa, sizdan ularni yaratish so'raladi. -yes bayrog'i yordamida keraksiz so'rovdan qochish mumkin.

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

Endi biz “Statistik paket R: ehtimollik nazariyasi va matematik statistika.pdf” fayliga “Matematika” toifasini qo‘shmoqchimiz. Biz bilamizki, bu fayl allaqachon "R" toifasiga kiritilgan va shuning uchun biz Vitis tizimidagi toifa yoʻlidan foydalanishimiz mumkin:

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

Yaxshiyamki, bash tugallanishi buni osonlashtiradi.

Har bir fayl uchun toifalar roʻyxatini koʻrish uchun --categories bayrogʻidan foydalanib, nima boʻlganini koʻrib chiqamiz:

vitis show R --categories

Kataloglar o'rniga toifalar yoki Linux uchun semantik fayl tizimi

Fayllar formati, turi (formatlarni birlashtiradi) va fayl kengaytmasi bo'yicha avtomatik ravishda tasniflanganligini unutmang. Agar so'ralsa, ushbu toifalarni o'chirib qo'yish mumkin. Keyinchalik, albatta, ularning nomlarini mahalliylashtiraman.

Turli xillik uchun "Matematikaga" yana bir narsa qo'shamiz:

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

Va endi narsalar qiziqarli bo'ladi. Kategoriyalar o'rniga birlashma, kesish va ayirish amallari bilan ifodalar yozish mumkin, ya'ni to'plamlar ustida amallardan foydalanish mumkin. Masalan, "Matematika" ning "R" bilan kesishishi bitta faylga olib keladi.

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

“Matematika”dan “R” tiliga havolalarni ayiraylik:

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

Biz musiqa va R tilini maqsadsiz birlashtira olamiz:

vitis show Музыка u: R

-n bayrog'i raqamlar va/yoki diapazonlar bo'yicha so'rov natijasidan kerakli fayllarni "olib tashlash" imkonini beradi, masalan, -n 3-7, yoki undan ham murakkabroq narsa: -n 1,5,8-10,13. Ko'pincha ro'yxatdagi kerakli fayllarni ochish imkonini beruvchi ochiq kichik buyruq bilan foydalidir.

Kataloglar o'rniga toifalar yoki Linux uchun semantik fayl tizimi

Biz odatiy katalog ierarxiyasidan foydalanishdan uzoqlashayotgan bo'lsak-da, ko'pincha ichki toifalarga ega bo'lish foydali bo'ladi. Keling, "Matematika" toifasi ostida "Statistika" kichik toifasini yaratamiz va ushbu toifani tegishli faylga qo'shamiz:

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

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

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

Kataloglar o'rniga toifalar yoki Linux uchun semantik fayl tizimi

Bu faylda endi “Matematika” o‘rniga “Matematik/Statistika” toifasi borligini ko‘rishimiz mumkin (qo‘shimcha havolalar kuzatiladi).

To'liq yo'lga murojaat qilish noqulay bo'lishi mumkin, keling, "global" taxallus yarataylik:

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

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

Kataloglar o'rniga toifalar yoki Linux uchun semantik fayl tizimi

Faqat oddiy fayllar emas

Internet havolalari

Har qanday ma'lumotni saqlashni birlashtirish uchun, hech bo'lmaganda, Internet manbalariga havolalarni tasniflash foydali bo'ladi. Va bu mumkin:

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

HTML sahifaning sarlavhasi va .desktop kengaytmasi bilan maxsus joyda fayl yaratiladi. Bu GNU/Linux-dagi an'anaviy yorliq formati. Bunday yorliqlar avtomatik ravishda NetworkBookmarks sifatida tasniflanadi.

Tabiiyki, yorliqlar foydalanish uchun yaratilgan:

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

Buyruqni bajarish brauzerda yangi saqlangan havolani ochishga olib keladi. Internet manbalarining toifalarga ajratilgan yorliqlari brauzer xatcho'plari o'rnini bosishi mumkin.

Fayl qismlari

Fayllarning alohida qismlari uchun toifalarga ega bo'lish ham foydalidir. Yomon iltimos emas, a? Ammo hozirgi dastur faqat oddiy matnli fayllar, audio va video fayllarga ta'sir qiladi. Aytaylik, kontsertning ma'lum bir qismini yoki kinodagi kulgili lahzani belgilash kerak, keyin assigndan foydalanganda -fragname, -start, -finish bayroqlaridan foydalanish mumkin. Keling, "DuckTales" dan ekran pardasini saqlaymiz:

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

vitis open Заставки

Aslida, faylni kesish sodir bo'lmaydi, buning o'rniga, fayl turini, faylga yo'lni, fragmentning boshi va oxirini tavsiflovchi fragmentga ko'rsatgich fayli yaratiladi. Fragmentlarga ko'rsatgichlarni yaratish va ochish men ushbu maqsadlar uchun maxsus yaratilgan yordamchi dasturlarga topshirilgan - bular mediafragmenter va fragplayer. Birinchisi yaratadi, ikkinchisi ochiladi. Audio va video yozuvlar bo'lsa, media fayl VLC pleer yordamida ma'lum bir pozitsiyadan ma'lum bir pozitsiyaga ishga tushiriladi, shuning uchun u tizimda ham bo'lishi kerak. Avvaliga men buni mplayer asosida qilmoqchi edim, lekin negadir bu to'g'ri vaqtda joylashishni aniqlash bilan juda qiyshiq edi.
Bizning misolimizda “Duck Tales intro.fragpointer” fayli yaratiladi (u maxsus joyga joylashtiriladi), so‘ngra fayl boshidan (yaratishda –start ko‘rsatilmagani uchun) 59-sonli fragment o‘ynaladi. ikkinchi belgi, undan keyin VLC yopiladi.

Yana bir misol, biz taniqli rassomning kontsertidagi bitta spektaklni tasniflashga qaror qilganimizda:

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

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

Ochilgach, fayl kerakli joyga kiritiladi va to'rt yarim daqiqadan so'ng yopiladi.

Hammasi qanday ishlaydi + qo'shimcha funktsiyalar

Kategoriyalarni saqlash

Semantik fayl tizimini tashkil qilish haqida o'ylashning boshida uchta yo'l aqlga keldi: ramziy havolalarni saqlash, ma'lumotlar bazasi orqali, XML-da tavsiflash orqali. Birinchi usul g'alaba qozondi, chunki ... bir tomondan, uni amalga oshirish oson, boshqa tomondan, foydalanuvchi fayl tizimidan to'g'ridan-to'g'ri toifalarga qarash imkoniyatiga ega (va bu qulay va muhim). Foydalanishning boshida vitis “Vitis” katalogi va “.config/vitis/vitis.conf” konfiguratsiya fayli foydalanuvchining uy katalogida yaratilgan. Kategoriyalarga mos keladigan kataloglar ~/Vitis da yaratilgan va bu toifa kataloglarida asl fayllarga ramziy havolalar yaratilgan. Turkum taxalluslari ham ularga havolalardir. Albatta, uy katalogida "Vitis" katalogining mavjudligi ba'zi odamlarga mos kelmasligi mumkin. Biz boshqa istalgan joyga o'tishimiz mumkin:

vitis service set path /mnt/MyFavoriteDisk/Vitis/

Muayyan nuqtada, turli joylarda tarqalgan fayllarni toifalarga bo'lish mantiqiy emasligi aniq bo'ladi, chunki ularning joylashuvi o'zgarishi mumkin. Shuning uchun, boshlash uchun men o'zim uchun katalog yaratdim, u erda men ahmoqona hamma narsani tashlab, unga barcha toifalarni berdim. Keyin men ushbu lahzani dastur darajasida rasmiylashtirish yaxshi bo'ladi, deb qaror qildim. "Fayl maydoni" tushunchasi shunday paydo bo'ldi. Foydalanishning boshida vitis Bunday joyni darhol o'rnatish zarar qilmaydi (bizga kerak bo'lgan barcha fayllar u erda saqlanadi) va avtomatik saqlashni yoqing:

vitis service add filespace /mnt/MyFavoriteDisk/Filespace/

vitis service set autosave yes

Avtomatik saqlashsiz, "tayinlash" kichik buyrug'idan foydalanganda, qo'shilgan faylni fayl maydoniga saqlamoqchi bo'lsangiz, --save bayrog'i talab qilinadi.

Bundan tashqari, siz bir nechta fayl bo'sh joy qo'shishingiz va ularning ustuvorliklarini o'zgartirishingiz mumkin; bu juda ko'p fayllar mavjud bo'lganda va ular turli xil muhitlarda saqlanganida foydali bo'lishi mumkin. Men bu imkoniyatni bu erda ko'rib chiqmayman; tafsilotlarni dastur yordamida topish mumkin.

Semantik fayl tizimini ko'chirish

Qanday bo'lmasin, Vitis katalogi va fayl bo'shliqlari nazariy jihatdan ba'zan bir joydan ikkinchi joyga ko'chishi mumkin. Buni amalga oshirish uchun men alohida yordamchi dastur yaratdim havola muharriri, havolalarni ommaviy tahrirlash, yo'l qismlarini boshqalar bilan almashtirish mumkin:

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

Birinchi holda, /mnt/MyFavoriteDisk/Vitis/ dan uy katalogiga o'tganimizdan so'ng, taxalluslar bilan bog'liq ramziy havolalar tahrirlanadi. Ikkinchi holda, fayl maydonining joylashishini o'zgartirgandan so'ng, Vitis-dagi barcha havolalar o'z yo'lining bir qismini almashtirish so'roviga muvofiq yangilariga o'zgartiriladi.

Avtomatik toifalar

Agar siz buyruqni bajarsangiz vitis service get autocategorization, siz sukut bo'yicha avtomatik toifalar format (Format va Tur) va fayl kengaytmasi (Kengaytma) bo'yicha tayinlanganligini ko'rishingiz mumkin.

Bu, masalan, PDF-fayllar orasida biror narsani topish yoki EPUB va FB2-dan saqlangan narsalarni ko'rish kerak bo'lganda foydali bo'ladi, siz shunchaki so'rovni bajarishingiz mumkin.

vitis show Format/MOBI u: Format/FB2

Shunday bo'ldiki, fayl yoki mimetip kabi standart GNU/Linux vositalari menga to'liq mos kelmadi, chunki ular formatni har doim ham to'g'ri aniqlay olmaydi; Men fayl imzolari va kengaytmalari asosida o'z dasturimni amalga oshirishim kerak edi. Umuman olganda, fayl formatlarini aniqlash mavzusi tadqiqot uchun qiziqarli mavzu bo'lib, alohida maqolaga loyiqdir. Hozircha aytishim mumkinki, men dunyodagi barcha formatlar uchun haqiqiy tan olishni ta'minlamadim, lekin umuman olganda, u allaqachon yaxshi ishlamoqda. To'g'ri, EPUB endi formatni ZIP sifatida belgilaydi (umuman olganda, bu oqlanadi, lekin amalda buni oddiy xatti-harakatlar deb hisoblamaslik kerak). Hozircha bu xususiyatni eksperimental deb hisoblang va xatolar haqida xabar bering. G'alati holatlarda siz har doim fayl kengaytmalari toifalaridan foydalanishingiz mumkin, masalan, Extension/epub.

Agar format bo'yicha avtotoifalar yoqilgan bo'lsa, ba'zi formatlarni turi bo'yicha guruhlaydigan avtotoifalar ham yoqiladi: "Arxivlar", "Rasmlar", "Video", "Audio" va "Hujjatlar". Ushbu kichik toifalar uchun mahalliylashtirilgan nomlar ham qilinadi.

Nima aytilmaydi

vitis Bu juda ko'p qirrali vosita bo'lib chiqdi va bir vaqtning o'zida hamma narsani qamrab olish qiyin. Yana nima qilishingiz mumkinligini qisqacha aytib o'taman:

  • toifalarni o'chirish va fayllardan olib tashlash mumkin;
  • ifoda so'rovlari natijalari ko'rsatilgan katalogga ko'chirilishi mumkin;
  • fayllarni dastur sifatida ishga tushirish mumkin;
  • Show buyrug'i ko'p variantlarga ega, masalan, nomi/o'zgartirish sanasi yoki kirish/hajmi/kengaytma bo'yicha saralash, fayl xossalari va asl nusxalarga yo'llarni ko'rsatish, yashirin fayllarni ko'rsatishni yoqish va h.k.;
  • Internet manbalariga havolalarni saqlaganingizda, HTML sahifalarining mahalliy nusxalarini ham saqlashingiz mumkin.

To'liq ma'lumotni foydalanuvchi yordamida topish mumkin.

istiqbollari

Skeptiklar ko'pincha "bu teglarni hech kim o'rnatmaydi" deb aytishadi. O'z misolimdan foydalanib, men buning aksini isbotlashim mumkin: men allaqachon olti mingdan ortiq fayllarni toifalarga ajratdim, mingdan ortiq toifalar va taxalluslar yaratdim va bunga arziydi. Bir jamoa qachon vitis open План ishlar roʻyxatini yoki bitta buyruq bilan oching vitis open LaTeX Stolyarovning LaTeX layout tizimi haqidagi kitobini ochganingizda, fayl tizimidan "eski uslubda" foydalanish allaqachon ma'naviy jihatdan qiyin.

Shu asosda bir qator g'oyalar paydo bo'ladi. Masalan, siz joriy ob-havo, bayram, haftaning kuni, kun yoki yil vaqtiga qarab tematik musiqani yoqadigan avtomatik radio qilishingiz mumkin. Mavzuga yanada yaqinroq bo'lgan musiqa pleyeri toifalar haqida biladi va to'plamlardagi kabi toifalar bo'yicha operatsiyalarni ifodalash orqali musiqani ijro eta oladi. "Yuklashlar" katalogini kuzatadigan va yangi fayllarni turkumlashtirishni taklif qiladigan demon yaratish foydalidir. Va, albatta, biz oddiy grafik semantik fayl boshqaruvchisi qilishimiz kerak. Bir vaqtlar men hatto fayllardan jamoaviy foydalanish uchun korxona uchun veb-xizmatni yaratdim, lekin u yuqori darajadagi ishlashga erishgan bo'lsa-da, u ustuvor emas edi va ahamiyatsiz bo'lib qoldi. (Kitidagi katta o'zgarishlar tufayli vitis, undan endi foydalanish mumkin emas.)

bu yerda kichik demo

Kataloglar o'rniga toifalar yoki Linux uchun semantik fayl tizimi

xulosa

Vitit ma'lumotlar bilan ishlash uslubini tubdan o'zgartirishga qaratilgan birinchi urinish emas, lekin men o'z g'oyalarimni amalga oshirish va GNU GPL litsenziyasi ostida amalga oshirishni hamma uchun ochiq qilish muhim deb hisobladim. Qulaylik uchun x86-64 uchun deb to'plami yaratilgan; u barcha zamonaviy Debian distributivlarida ishlashi kerak. ARM bilan bog'liq bo'lgan barcha dasturlarda kichik qiyinchiliklar mavjud edi vitis, yaxshi ishlaydi), lekin kelajakda ushbu platforma (armhf) uchun ishchi paket tuziladi. Fedora 30-dagi muammolar va ko'plab RPM distributivlari bo'ylab tarqalish qiyinligi tufayli men hozircha RPM paketlarini yaratishni to'xtatdim, ammo keyinchalik paketlar hali ham ularning kamida ikkitasi uchun yaratiladi. Ayni paytda siz foydalanishingiz mumkin make && make install yoki checkinstall.

E'tiboringiz uchun barchangizga rahmat! Umid qilamanki, ushbu maqola va ushbu loyiha foydali bo'lishi mumkin.

Loyiha omboriga havola

Manba: www.habr.com

a Izoh qo'shish