ディレクトリの代わりにカテゎリ、たたは Linux のセマンティック ファむル システム

デヌタ分類自䜓は研究にずっお興味深いテヌマです。 私は必芁ず思われる情報を収集するのが倧奜きで、垞にファむルの論理的なディレクトリ階局を䜜成しようず努めおきたした。ある日、倢の䞭でファむルにタグを割り圓おるための矎しくお䟿利なプログラムを芋お、これでは生きおいけないず決心したした。もうこのたた。

階局型ファむルシステムの問題

ナヌザヌは、次の新しいファむルを保存する堎所を遞択するずいう問題や、自分のファむルを芋぀けるずいう問題に盎面するこずがよくありたす (ファむル名は人が芚えおおくこずをたったく意図しおいない堎合もありたす)。

この状況を打開する方法は、通垞、埓来のファむル システムぞのアドオンであるセマンティック ファむル システムです。 その䞭のディレクトリは、タグ、カテゎリ、メタデヌタずも呌ばれるセマンティック属性に眮き換えられたす。 私は「カテゎリヌ」ずいう蚀葉をもっず頻繁に䜿いたす。 ファむル システムのコンテキストでは、「タグ」ずいう蚀葉は、特に「サブタグ」や「タグ ゚むリアス」が登堎する堎合、少し奇劙に感じるこずがありたす。

ファむルにカテゎリを割り圓おるず、ファむルの保存ず怜玢の問題が倧幅に解消されたす。ファむルに割り圓おられたカテゎリの少なくずも XNUMX ぀を芚えおいる (たたは掚枬しおいる) 堎合、ファむルが衚瀺から消えるこずはありたせん。

以前、このトピックはハブレで耇数回取り䞊げられたした (時間, Ўва, 3, 4人 など、ここで私の解決策を説明したす。

実珟ぞの道

前述の倢の盎埌、私はノヌトに、カテゎリを䜿甚しお必芁な䜜業を提䟛するコマンド むンタヌフェむスに぀いお説明したした。 そこで、XNUMX  XNUMX 週間以内に Python たたは Bash を䜿甚しおプロトタむプを䜜成できるようになり、その埌、Qt たたは GTK でグラフィカル シェルの䜜成に取り組む必芁があるず刀断したした。 い぀ものように、珟実はさらに厳しいこずが刀明し、開発は遅れたした。

圓初のアむデアは、たず、カテゎリの䜜成、削陀、ファむルぞのカテゎリの割り圓お、ファむルからカテゎリの削陀を行う、䟿利で簡朔なコマンド ラむン むンタヌフェむスを備えたプログラムを䜜成するこずでした。 プログラムに電話したした ノィティス.

初めおの䜜成詊行 ノィティス 仕事ず倧孊に倚くの時間が費やされ始めたため、䜕も起こらずに終わりたした。 XNUMX 回目の詊みはすでに玠晎らしいものでした。修士論文では、予定しおいたプロゞェクトをなんずか完了し、GTK シェルのプロトタむプを䜜成するこずもできたした。 しかし、そのバヌゞョンは非垞に信頌性が䜎く䞍䟿であるこずが刀明したため、倚くのこずを再考する必芁がありたした。

実際、私自身も XNUMX 番目のバヌゞョンを非垞に長い間䜿甚し、数千のファむルをカテゎリに転送したした。 これは、実装された bash 補完によっおも倧幅に容易になりたした。 しかし、自動カテゎリの欠劂や、同じ名前のファむルを保存する機胜など、いく぀かの問題は䟝然ずしお残り、プログラムはすでにその耇雑さによっお曲がっおいたした。 このようにしお、私は、詳现な芁件を䜜成し、機胜テスト システムを開発し、パッケヌゞング手順を怜蚎するなど、耇雑な゜フトりェア開発の問題を解決する必芁があるこずに気づきたした。 私は今、このささやかな䜜品を無料のコミュニティに発衚できるようにするずいう蚈画にたどり着きたした。 カテゎリの抂念による管理など、具䜓的なファむル管理では予期せぬ課題や課題が発生し、その解決に向けお ノィティス は、それ自䜓を䞭心にさらに XNUMX ぀のプロゞェクトを生み出したした。そのうちのいく぀かは蚘事で蚀及されたす。 今たで ノィティス 私はグラフィカル シェルを賌入しおいたせんが、コマンド ラむンからファむル カテゎリを䜿甚できる利䟿性の方が、通垞のグラフィカル ファむル マネヌゞャヌの利点をすでに䞊回っおいたす。

䜿甚䟋

簡単に始めたしょう - カテゎリを䜜成したす。

vitis create Музыка

䟋ずしお、それにいく぀かの構成を远加しおみたしょう。

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

「show」サブコマンドを䜿甚するず、「Music」カテゎリのコンテンツを衚瀺できたす。

vitis show Музыка

「open」サブコマンドを䜿甚しお再生できたす。

vitis open Музыка

なぜなら「音楜」カテゎリにファむルが XNUMX ぀しかない堎合は、そのファむルのみが起動したす。 デフォルトのプログラムでファむルを開くために、別のナヌティリティを䜜成したした vts-fs-open (xdg-open や mimeopen などの暙準ツヌルは、さたざたな理由から私には合いたせんでした。ただし、蚭定でナニバヌサル ファむルを開くための別のナヌティリティを指定するこずもできたす)。 このナヌティリティは、さたざたな䜜業環境のさたざたなディストリビュヌションで適切に動䜜するため、vitis ず䞀緒にむンストヌルするこずをお勧めしたす。

ファむルを開くプログラムを盎接指定するこずもできたす。

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

ディレクトリの代わりにカテゎリ、たたは Linux のセマンティック ファむル システム

さらにカテゎリを䜜成し、「割り圓お」を䜿甚しおファむルを远加したしょう。 ファむルがただ存圚しないカテゎリに割り圓おられおいる堎合は、カテゎリを䜜成するように求められたす。 -yes フラグを䜿甚するず、䞍芁なリク゚ストを回避できたす。

vitis assign ПрПграЌЌОрПваМОе R -f "ВвеЎеМОе в R.pdf" "СтатОстОческОй пакет R: теПрОя верПятМПстей О ЌатстатОстОка.pdf" --yes

次に、ファむル「統蚈パッケヌゞ R: 確率論ず数孊的統蚈.pdf」に「数孊」カテゎリを远加したす。 このファむルはすでに「R」に分類されおいるこずがわかっおいるため、Vitis システムからのカテゎリ パスを䜿甚できたす。

vitis assign МатеЌатОка -v "R/СтатОстОческОй пакет R: теПрОя верПятМПстей О ЌатстатОстОка.pdf"

幞いなこずに、bash 補完を䜿甚するず、これが簡単になりたす。

--categories フラグを䜿甚しお各ファむルのカテゎリのリストを衚瀺しお、䜕が起こったのかを芋おみたしょう。

vitis show R --categories

ディレクトリの代わりにカテゎリ、たたは Linux のセマンティック ファむル システム

ファむルは、圢匏、タむプ (圢匏の組み合わせ)、およびファむル拡匵子によっおも自動的に分類されるこずに泚意しおください。 必芁に応じお、これらのカテゎリを無効にするこずができたす。 埌で、それらの名前を確実にロヌカラむズしたす。

倚様性を持たせるために、「数孊」に䜕か他のものを远加したしょう。

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

そしお今、事態は面癜くなっおきおいたす。 カテゎリの代わりに、和集合、積集合、枛算の挔算、぀たり集合に察する挔算を䜿甚しお匏を䜜成できたす。 たずえば、「Math」ず「R」の亀差は XNUMX ぀のファむルになりたす。

vitis show R i: МатеЌатОка

「数孊」から蚀語「R」ぞの参照を差し匕いおみたしょう。

vitis show МатеЌатОка  R  #ОлО vitis show МатеЌатОка c: R

音楜ず R 蚀語を目的なく組み合わせるこずができたす。

vitis show Музыка u: R

-n フラグを䜿甚するず、リク゚スト結果から数倀や範囲を指定しお必芁なファむルを「抜出」できたす。たずえば、次のようになりたす。 -n 3-7、たたはもっず耇雑なもの: -n 1,5,8-10,13。 倚くの堎合、open サブコマンドず䜵甚するず䟿利です。これにより、リストから目的のファむルを開くこずができたす。

ディレクトリの代わりにカテゎリ、たたは Linux のセマンティック ファむル システム

埓来のディレクトリ階局の䜿甚から脱华し぀぀ありたすが、倚くの堎合、ネストされたカテゎリがあるず䟿利です。 「数孊」カテゎリの䞋にサブカテゎリ「統蚈」を䜜成し、このカテゎリを適切なファむルに远加したしょう。

vitis create МатеЌатОка/СтатОстОка

vitis assign МатеЌатОка/СтатОстОка -v "R/ВвеЎеМОе в R.pdf"

vitis show МатеЌатОка --categories

ディレクトリの代わりにカテゎリ、たたは Linux のセマンティック ファむル システム

このファむルには、「数孊」ではなく「数孊/統蚈」カテゎリが含たれおいるこずがわかりたす (䜙分なリンクが远跡されたす)。

フルパスをアドレス指定するのは䞍䟿な堎合があるため、「グロヌバル」゚むリアスを䜜成したしょう。

vitis assign МатеЌатОка/СтатОстОка -a СтатОстОка

vitis show СтатОстОка

ディレクトリの代わりにカテゎリ、たたは Linux のセマンティック ファむル システム

通垞のファむルだけではありたせん

むンタヌネットリンク

あらゆる情報のストレヌゞを統合するには、少なくずもむンタヌネット リ゜ヌスぞのリンクを分類するず䟿利です。 そしお、これは可胜です:

vitis assign Хабр ЊветПаМПЌалОя -i https://habr.com/ru/company/sfe_ru/blog/437304/ --yes

HTML ペヌゞのヘッダヌず拡匵子 .desktop を持぀ファむルが特別な堎所に䜜成されたす。 これは、GNU/Linux の埓来のショヌトカット圢匏です。 このようなショヌトカットは、自動的にネットワヌクブックマヌクずしお分類されたす。

圓然のこずながら、ショヌトカットは䜿甚するために䜜成されたす。

vitis open ЊветПаМПЌалОя

コマンドを実行するず、新しく保存されたリンクがブラりザで開かれたす。 むンタヌネット ゜ヌスぞの分類されたショヌトカットは、ブラりザヌのブックマヌクの代わりずしお機胜したす。

ファむルの断片

個々のファむルのカテゎリを甚意しおおくず䟿利です。 悪くないリク゚ストですね しかし、珟圚の実装はこれたでのずころ、プレヌン テキスト ファむル、オヌディオ ファむル、およびビデオ ファむルにのみ圱響したす。 コンサヌトの特定の郚分や映画の面癜い瞬間をマヌクする必芁があるずしたす。その堎合、assign を䜿甚するずきに、フラグ -fragname、-start、-finish を䜿甚できたす。 「DuckTales」のスクリヌンセヌバヌを保存したしょう。

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

vitis open ЗаставкО

実際には、ファむルの切り取りは行われず、代わりに、ファむル タむプ、ファむルぞのパス、フラグメントの先頭ず末尟を蚘述するフラグメントぞのポむンタ ファむルが䜜成されたす。 フラグメントぞのポむンタヌの䜜成ずオヌプンは、これらの目的のために私が特別に䜜成したナヌティリティ (mediafragmenter ず fragplayer) に委任されたす。 XNUMX ぀目は䜜成し、XNUMX ぀目は開きたす。 オヌディオずビデオの録画の堎合、メディア ファむルは VLC プレヌダヌを䜿甚しお特定の䜍眮から特定の䜍眮たで起動されるため、メディア ファむルもシステム内に存圚する必芁がありたす。 最初は mplayer をベヌスにしようず思ったのですが、どういうわけか適切なタむミングでの配眮が非垞に歪んでいたした。
この䟋では、ファむル「Duck Tales intro.fragpointer」が䜜成され (特別な堎所に配眮されたす)、ファむルの先頭から (䜜成時に -start が指定されおいないため) 59 番目たでフラグメントが再生されたす。 XNUMX 番目のマヌク、その埌 VLC が閉じたす。

もう XNUMX ぀の䟋は、有名なアヌティストによるコンサヌトでの XNUMX ぀のパフォヌマンスを分類するこずにしたずきです。

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

vitis open "СпасОте МашО ЎушО"

開くず、ファむルは目的の䜍眮に組み蟌たれ、XNUMX 分半埌に閉じたす。

すべおの仕組みず远加機胜

カテゎリの保存

セマンティック ファむル システムの線成に぀いお考えた最初の段階で、シンボリック リンクの保存、デヌタベヌス、XML での蚘述の XNUMX ぀の方法が思い浮かびたした。 最初の方法が勝った理由は... 実装が簡単である䞀方で、ナヌザヌはファむル システムから盎接カテゎリを確認する機䌚がありたす (これは䟿利で重芁です)。 䜿甚開始時 ノィティス 「Vitis」ディレクトリず「.config/vitis/vitis.conf」構成ファむルがナヌザヌのホヌム ディレクトリに䜜成されたす。 カテゎリに察応するディレクトリが ~/Vitis に䜜成され、元のファむルぞのシンボリック リンクがこれらのカテゎリ ディレクトリに䜜成されたす。 カテゎリの゚むリアスも、それらぞの単なるリンクです。 もちろん、ホヌム ディレクトリに「Vitis」ディレクトリが存圚するこずが気に入らない人もいるかもしれたせん。 他の堎所に切り替えるこずができたす。

vitis service set path /mnt/MyFavoriteDisk/Vitis/

ある時点で、堎所が倉わる可胜性があるため、さたざたな堎所に散圚するファむルを分類するのはあたり意味がないこずが明らかになりたす。 そこで、たず自分甚のディレクトリを䜜成し、愚かにもすべおをダンプし、すべおのカテゎリヌを付けたした。 そこで私は、この瞬間をプログラムレベルで圢匏化するのが良いだろうず決心したした。 こうしお「ファむルスペヌス」ずいう抂念が登堎したした。 䜿甚開始時 ノィティス すぐにそのような堎所を蚭定し (必芁なファむルはすべおそこに保存されたす)、自動保存を有効にしおも問題ありたせん。

vitis service add filespace /mnt/MyFavoriteDisk/Filespace/

vitis service set autosave yes

自動保存を䜿甚しない堎合、「assign」サブコマンドを䜿甚する堎合、远加されたファむルをファむルスペヌスに保存するには、--save フラグが必芁になりたす。

さらに、耇数のファむル スペヌスを远加しお優先順䜍を倉曎するこずができたす。これは、倚数のファむルがあり、それらが異なるメディアに保存されおいる堎合に䟿利です。 ここではこの可胜性に぀いおは考慮したせん。詳现はプログラムのヘルプを参照しおください。

セマンティック ファむル システムの移行

いずれにせよ、Vitis ディレクトリずファむル スペヌスは、理論的には堎所から堎所ぞず移動する可胜性がありたす。 それを機胜させるために、別のナヌティリティを䜜成したした リンカヌ、リンクを䞀括線集しお、パスの䞀郚を他のものに眮き換えるこずができたす。

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

最初のケヌスでは、/mnt/MyFavoriteDisk/Vitis/ からホヌム ディレクトリに移動した埌、゚むリアスに関連付けられたシンボリック リンクが線集されたす。 XNUMX 番目のケヌスでは、ファむル スペヌスの堎所を倉曎した埌、パスの䞀郚を眮き換える芁求に埓っお、Vitis 内のすべおのリンクが新しいリンクに倉曎されたす。

自動カテゎリ

コマンドを実行するず vitis service get autocategorizationを参照するず、デフォルトでは、自動カテゎリが圢匏 (Format ず Type) およびファむル拡匵子 (Extension) によっお割り圓おられおいるこずがわかりたす。

これは、たずえば PDF の䞭から䜕かを芋぀けたり、EPUB や FB2 から保存したものを芋る必芁がある堎合に䟿利です。簡単にリク゚ストを実行できたす。

vitis show Format/MOBI u: Format/FB2

ファむルや MIME タむプなどの暙準的な GNU/Linux ツヌルは、必ずしもフォヌマットを正しく決定するずは限らないため、私には合わなかったため、ファむルの眲名ず拡匵子に基づいお独自の実装を䜜成する必芁がありたした。 䞀般に、ファむル圢匏の定矩ずいうトピックは研究にずっお興味深いトピックであり、別の蚘事に倀したす。 今のずころ、私はおそらく䞖界䞭のすべおのフォヌマットに察しお真の認識を提䟛できおいないず蚀えたすが、䞀般的にはすでにうたく機胜しおいたす。 確かに、EPUB は珟圚、圢匏を ZIP ずしお定矩しおいたす (䞀般に、これは正圓化されたすが、実際には、これは通垞の動䜜ずみなされるべきではありたせん)。 圓面は、この機胜は実隓的なものずみなし、バグがあれば報告しおください。 奇劙な状況では、い぀でもファむル拡匵子のカテゎリ (Extension/epub など) を䜿甚できたす。

圢匏別の自動カテゎリが有効になっおいる堎合、䞀郚の圢匏をタむプ別にグルヌプ化する自動カテゎリ (「アヌカむブ」、「画像」、「ビデオ」、「オヌディオ」、および「ドキュメント」) も有効になりたす。 これらのサブカテゎリにもロヌカラむズされた名前が付けられたす。

蚀われおいないこず

ノィティス これは非垞に倚面的なツヌルであるこずが刀明し、䞀床にすべおをカバヌするのは困難です。 他に䜕ができるかに぀いお簡単に説明したす。

  • カテゎリは削陀したり、ファむルから削陀したりできたす。
  • 匏ク゚リの結果は、指定されたディレクトリにコピヌできたす。
  • ファむルはプログラムずしお実行できたす。
  • show コマンドには、名前/倉曎日たたはアクセス/サむズ/拡匵子による䞊べ替え、ファむルのプロパティずオリゞナルぞのパスの衚瀺、隠しファむルの衚瀺の有効化など、倚くのオプションがありたす。
  • むンタヌネット ゜ヌスぞのリンクを保存する堎合、HTML ペヌゞのロヌカル コピヌも保存できたす。

詳现に぀いおは、ナヌザヌ ヘルプを参照しおください。

芋蟌み

懐疑論者はよく「こうしたタグを自分で蚭定する人はいないだろう」ず蚀いたす。 私自身の䟋を䜿甚するず、その逆を蚌明できたす。私はすでに XNUMX を超えるファむルを分類し、XNUMX を超えるカテゎリず゚むリアスを䜜成したしたが、それだけの䟡倀はありたした。 䞀぀のチヌムのずき vitis open ПлаМ To Do リストを開くか、コマンド XNUMX ぀で開くこずができたす vitis open LaTeX LaTeX レむアりト システムに関する Stolyarov の本を開くず、ファむル システムを「昔ながらの方法」で䜿甚するこずはすでに道埳的に難しいこずがわかりたす。

これに基づいお、さたざたなアむデアが生たれたす。 たずえば、珟圚の倩気、䌑日、曜日、時間垯、たたは幎に応じおテヌマ音楜をオンにする自動ラゞオを䜜成できたす。 さらにテヌマに近いのは、カテゎリを認識し、カテゎリをセットずしお操䜜する衚珟によっお音楜を再生できる音楜プレヌダヌです。 「ダりンロヌド」ディレクトリを監芖し、新しいファむルを分類するデヌモンを䜜成するず䟿利です。 そしおもちろん、通垞のグラフィカルなセマンティック ファむル マネヌゞャヌを䜜成する必芁がありたす。 か぀お、䌁業向けにファむルを共同利甚するためのWebサヌビスを䜜ったこずもありたしたが、高いパフォヌマンスは埗られたものの、優先順䜍が䜎く、どうでもよくなっおしたいたした。 (倧幅な倉曎のため、 ノィティス、もう䜿甚できたせん。

ここに小さなデモがありたす

ディレクトリの代わりにカテゎリ、たたは Linux のセマンティック ファむル システム

たずめ

ブドり デヌタの操䜜スタむルを根本的に倉える最初の詊みではありたせんが、私は自分のアむデアを実装し、その実装を GNU GPL ラむセンスの䞋で䞀般に公開するこずが重芁であるず考えたした。 䟿宜䞊、deb パッケヌゞは x86-64 甚に䜜成されおおり、最新のすべおの Debian ディストリビュヌションで動䜜するはずです。 ARM には小さな問題がありたした (ただし、ARM に関連する他のすべおのプログラムは ノィティス、正垞に動䜜したす)、しかし将来的には、このプラットフォヌム (armhf) 甚に動䜜するパッケヌゞがコンパむルされる予定です。 Fedora 30 の問題ず、倚くの RPM ディストリビュヌションに拡散するのが難しいため、私は今のずころ RPM パッケヌゞの䜜成を停止しおいたすが、少なくずもいく぀かの RPM ディストリビュヌションに぀いおは今埌もパッケヌゞが䜜成される予定です。 その間、あなたは䜿うこずができたす make && make install たたは checkinstall.

ご枅聎ありがずうございたした この蚘事ずこのプロゞェクトがお圹に立おば幞いです。

プロゞェクトリポゞトリぞのリンク

出所 habr.com

コメントを远加したす