Inspiriert von
„Kategorien statt Verzeichnissen, oder ein semantisches Dateisystem für Linux Vitis“
entschloss ich mich, ein Äquivalent des Tools vitis für PowerShell Core zu entwickeln.
Warum ich damit angefangen habe
Erstens, vitis nur für Linux.
Zweitens möchte ich in PowerShell mit „Pipes“ arbeiten.
Da ich ein plattformübergreifendes Tool erstellen wollte, wählte ich .Net Core.
Hintergrund
Zu Beginn herrschte Chaos. Dann erschienen Ordner auf der Festplatte.
Aber das Chaos blieb bestehen. Es wurden Tags, Untertags und Synonyme für Tags eingeführt. Doch das Chaos überkam auch sie. Und dann wurden Kategorien erfunden.
Die Idee
Dateien werden nicht in einer hierarchischen Ordnerstruktur gespeichert, sondern in einem „Stapel“ mit bestimmten Kategorien. Eine Datei kann mehreren Kategorien angehören.
Wenn man eine Datei finden muss, ist es einfacher, die Kategorien einzugeben, zu denen sie gehört. Das lässt sich viel leichter merken als die Ordner, in denen sie gespeichert ist.
Ein solches Dateisystem ist jedoch keineswegs für die Speicherung von Code, Quellcodes usw. geeignet.
Es ist gedacht für die Speicherung von beispielsweise Familienfotos, Musik und Dokumenten.
Nutzung
Nun, lassen Sie uns mit der Demonstration beginnen.
Wir installieren Graphile:
# install.ps1 находится в корневой папке с кодом
PS D:SourcereposGraphile> .install.ps1Zuerst initialisieren wir Graphile im Ordner:
# Импортируем установленный модуль
PS C:UsersDellGraphileTest> Import-Module GraphilePowerShell
# Инициализируем Graphile в папке
PS C:UsersDellGraphileTest> Init-Graphile
C:UsersDellGraphileTestgraphile.dbSo, wir haben alles eingerichtet. Jetzt können wir eine neue Kategorie erstellen:
PS C:UsersDellGraphileTest> New-Category -Name "music"
musicFügen wir Dateien hinzu:
PS C:UsersDellGraphileTest> Get-ChildItem "D:MusicPink Floyd - The Wall" -Recurse -Filter "*.mp3" | foreach { $_.FullName } | foreach {
>> Add-FileToCategory -File $_ -Categories "music"
}Für diejenigen, die nicht verstanden haben, was ich gemacht habe:
- Ich habe die Liste der Dateien im Ordner erhalten
Pink Floyd - The Wall - Jede Datei wurde in ihren vollständigen Pfad umgewandelt
- Jede Datei wurde der Kategorie hinzugefügt
music
Jetzt prüfen wir, ob wir tatsächlich die Dateien in die Kategorie hinzugefügt haben:
PS C:UsersDellGraphileTest> List-Graphiles | Format-TableEs wird eine Liste im folgenden Format ausgegeben:
CategoriesNames Id Categories Name ExtensionFügen wir noch Kategorien und Dateien hinzu:
New-Category -Name "the-wall"
New-Category -Name "alan-parsons"
List-Graphiles -Categories "music" | foreach { Add-GraphileToCategory -Categories "the-wall" -Files $_.Name }
Get-ChildItem "D:MusicThe Alan Parsons Project - Turn of a Friendly Card" -File -Recurse | foreach { $_.FullName } | foreach { Add-FileToCategory -File $_ -Categories "music", "alan-parsons" }Prüfen wir die Dateien:
List-Graphiles -Categories "alan-parsons" | Format-TableDer Befehl gibt alle Dateien aus, die zur Kategorie gehören alan-parsons.
Mehr Dateien dem Gott der Dateisysteme!
New-Category -Name "images"
Get-ChildItem "D:Images" -File -Recurse | foreach { $_.FullName } | foreach {
Add-FileToCategory -File $_ -Categories "images"
}Überprüfen wir:
List-Graphiles -Categories "images" | Format-TableAlles funktioniert!
Doch das ist erst der Anfang. Exportieren Sie Ihr herkömmliches Dateisystem nach Graphile und erleben Sie eine hervorragende Dateiorganisation.
Wo Sie Graphile herunterladen können
Hier auf GitLab von Graphile.
Lizenz MIT, sodass Sie es sogar für kommerzielle Zwecke nutzen können.
Die Zukunft des Projekts
Da es sich um PowerShell handelt und nicht um irgendwelche Spielereien, kann eine grafische Oberfläche unter .NET Core erstellt werden.
So machen Sie es:
- Paket Microsoft.PowerShell.SDK installieren
- Die PowerShell-Klasse verwenden und Graphile aufrufen.
Wenn Ihnen das Projekt gefällt, machen Sie Commits, Merge Requestsund erstellen Sie Diskussionen.
Danke fürs Lesen! Nutzen Sie es und haben Sie Spaß!
Quelle: habr.com
