Welkom terug! Aangezien je dit leest, moet je de tutorial van de beginnende hebben genoten. Super goed! Laten we nu een beetje dieper graven door een workflow te maken die ons helpt onze Downloads-map te beheren, evenals een Projectmanager.
Ik upload en download constant bestanden van en naar het net en maak screenshots die automatisch naar mijn map Downloads gaan. Bijgevolg wordt mijn map Downloads erg rommelig. Dit is hoe ik het temme.
Maak eerst een nieuwe workflowlabel Downloads Tamer. De beschrijving is ingesteld op Een workflow om met items in de map Downloads te werken, maar je kunt het maken wat je wilt. De bundel-ID is com.customct.MTDownload.
De bundel-ID is erg belangrijk en moet zeer uniek zijn voor de workflow. Ik gebruik altijd mijn siteadres en werkstroomnaam om de workflow eenduidig te identificeren.
De auteur kan jou zijn. De website is uw website, of niets.
De Bestandsfilters blok is een zeer flexibele en krachtige eenheid. Het is een geweldige plek om met bestanden in een workflow te werken. Voor een voorbeeld, het geeft een eenvoudige manier om bestanden op te zoeken.
Selecteer een Bestandsfilter blokkeren en voltooien zoals hierboven weergegeven. Stel het trefwoord in op mtdl: vandaag, de tijdelijke aanduiding Titel van MT: downloadbestanden, en de tijdelijke aanduiding-subtekst voor De knoe van vandaag laden ... .
Als u zich alleen op één type bestand wilt concentreren, kunt u een voorbeeldbestand naar de map slepen en neerzetten Bestand types doos. De bedoeling hier is om elk type bestand op of rond een bepaalde dag te vinden. Daarom wordt het vak Bestandstypes in dit voorbeeld niet gebruikt.
selecteren Zoek bereik, geeft ons de tweede pagina met opties. Gebruik de Finder, sleep de downloads map van Finder naar de Zoek bereik Gebied. Dit vertelt Alfred om alleen naar bestanden in deze mappen te zoeken. Omdat deze workflow alleen geïnteresseerd is in de map Downloads, is dat voldoende.
selecteren gevorderd geeft ons de geavanceerde opties. Stel hier de Datumbereik naar Vandaag zodat alleen de bestanden worden weergegeven die vandaag zijn gemaakt. druk op Opslaan en de eerste functie van onze workflow zal compleet zijn.
De Fields gebied geeft een lijst met velden die u kunt zoeken naar de relevante informatie. Dit kan je zoekopdracht echt meer kracht geven om specifiek te vinden waarnaar wordt gezocht. Voor elk veld kunt u de Woorden vlag om binnen van bourndries van het woord te zoeken. De spleet vlag splitst elk woord in afzonderlijke parameters die afzonderlijk worden doorzocht.
De Nauwkeurigheid vlag wordt gebruikt om de zoekopdracht niet te laten beginnen met een joker als de Woorden vlag is uitgeschakeld. Met andere woorden, als het Woorden vlag is niet ingesteld, het instellen van deze vlag zorgt ervoor dat de zoekopdracht altijd gebaseerd is op het begin van de tekst en niet in het midden. Als het Woorden vlag is ingesteld, deze vlag is zinloos.
Deze verschillende vlaggen kunnen verwarrend raken over hoe ze te gebruiken. U kunt verschillende testgevallen instellen en bekijken hoe elk van invloed is op uw resultaten. Over het algemeen houd ik altijd de Woorden en spleet vlaggen instellen.
Wat er nu is gemaakt, is een bestandsbrowser die alleen bestanden in de downloaddirectory toont die vandaag zijn toegevoegd. Nu, om iets met het geselecteerde bestand te doen.
Van de + menu, selecteer Open bestand blokkeren en koppelen aan de Bestandsfilter blok. Nu, wanneer de mtdl: vandaag opdracht wordt uitgevoerd, verschijnt een lijst met vandaag gedownloade bestanden. Als u er een selecteert, wordt deze geopend in de voorkeursapplicatie voor dat bestandstype.
Soms wil je gewoon snel het bestand bekijken. OS X heeft dat ingebouwd, maar hoe gebruik je het? Dat is waar shell-scripts binnen handbereik komen. Voeg een ... toe Voer het script uit blokkeren en verbinden met de Bestandsfilter blokkeren, net als de Open bestand blok.
Stel de Taal naar / Usr / bash
. In de Script gebied, type qlmanage -p "query"> & / dev / null &
. Verwijder alle vinkjes uit het selectievakje Ontsnappen keuzes zodat uw bestandsnaam niet wordt gewijzigd.
Let op de Zoekopdracht macro. Deze macro zal uitbreiden naar wat er is doorgegeven aan dit blok uit het vorige blok. In dit geval is dit het volledige pad naar het bestand in de downloads directory.
Wat dit blok zal doen is de Zoekopdracht tekenreeks met het volledige pad van het bestand dat u hebt geselecteerd en voer het script uit als bash-shellscript.
Tip: Alle scripts worden direct uitgevoerd zonder in uw voorkeurenbestanden voor het scripttype te lezen. Daarom wordt uw ".bashrc" -bestand niet in een bash-script geladen, noch uw ".zshrc" -bestand in een zsh-script. Alleen de kale omgeving die door het systeem is ingesteld, is op zijn plaats.Als de opdrachten die u gebruikt bepaalde omgevingsvariabelen nodig hebben, moet u het voorkeurenbestand handmatig laden of de omgevingsvariabelen aan uw script toevoegen.
Alfred werkt op deze manier om de scripts sneller uit te voeren. Maar het kan het moeilijk maken om scripts te schrijven die de eerste keer werken!
U kunt zoveel blokken verbinden met een enkel blok als u wilt. Maar als u nu de macro uitvoert, wordt het bestand geopend in de standaardtoepassing en in een snelle voorbeeldweergave! Dat is echt niet het gedrag dat nodig is.
Om dit op te lossen, dubbelklikt u op de regel die naar de Voer het script uit blok. Hiermee kunt u een instellen Action Modifier en een Modifier-subtekst. Stel ze in zoals u hier ziet. Wat dit doet, laat je toe om de actie van de Bestandsfilter blokkeren op basis van een modificatietoets. Als u nu gewoon een bestand selecteert, wordt het geopend in de standaardtoepassing. Maar als u de Controle toets tijdens het selecteren van een bestand, zal het in plaats daarvan een voorbeeld van het bestand weergeven.
De workflow zou er nu als volgt uit moeten zien. U kunt zien dat de modificatietag op de regel naar de Voer het script uit blok. Op deze manier is het gemakkelijk om te zien hoe elke actie moet worden geactiveerd.
Wanneer de workflow wordt geactiveerd, als u de Controle toets, de tekst onder de bestandsnaam wordt veranderd in Voorbeeld. Het gebruikt nu het OS X-preview-systeem (Quick Look) om het bestand weer te geven.
De volgende functie is om het bestand te verwijderen. Nogmaals, een bash-script kan worden gebruikt om deze taak te volbrengen. Voeg een ... toe Voer het script uit blok. Vergeet niet om alle te deselecteren Ontsnappen keuzes en stel deze in om een bash-script uit te voeren.
Nu voor enkele ontwerpbeslissingen. Je zou gewoon de rm -f
opdracht om het bestand met geweld uit de map Downloads te verwijderen. Maar je kunt die beslissing nooit ongedaan maken. Daarom is het het beste om het bestand naar de map OS X Prullenbak te verplaatsen. Omdat er geen ingebouwde commandoregel voor is, moet je het werk van iemand anders downloaden en er gebruik van maken. Vergeet niet anderen te vertellen dat ze uw workflow gebruiken om het programma te krijgen. Gratis programma's zijn geweldig!
Download daarom het trash-opdrachtregelprogramma en zet het op uw pad (/ Usr / local / bin zou goed zijn. Het programma wordt ook geleverd met een installatiescript.). Vul vervolgens het scriptgebied in met / usr / local / bin / trash "query". Het zou eruit moeten zien als de bovenstaande screenshot.
Stel die regel in om de. Te gebruiken Functie modificatietoets. Nu, wanneer u een bestand selecteert met de Functie ingedrukt, wordt dat bestand naar de prullenbak verplaatst. Als u het verwijderen van de undelete wilt ongedaan maken, opent u gewoon de map Prullenbak en vertelt u hem om het item te herstellen.
Voeg nu een toe Blader door Alfred blok. Dit zal ons toelaten om door Alfred gecreëerde acties te gebruiken voor de bestanden in de map. Wijzig de verbinding voor de Blader door Alfred blokkeren naar Verschuiving modificatietoets.
Tip: U hoeft echt geen een toe te voegen Openen in Finder blok. Dat is de standaardactie van de Commando toets in de Alfred Browser.Dit is de Alfred-browser. Omdat ik er op dit moment maar één bestand heb, is het de enige die wordt getoond. Met dat bestand geselecteerd, kunt u op drukken rechter pijl sleutel, krijgt u een lijst met acties om dat bestand aan te nemen.
Met deze lijst met acties kunt u scrollen om ze allemaal te zien of begint u met het typen van de naam van de actie om de lijstgrootte te verkleinen totdat u de gewenste naam vindt. Er zijn nogal wat voorgedefinieerde bestandsacties en veel werkstromen voegen hun eigen bestandsacties toe.
Laten we veronderstellen dat de screenshot-software beelden opslaat in de map Downloads (de meeste opslaan op het bureaublad, maar ik hou er niet van om mijn bureaublad vol te houden, daarom bewaar ik ze in mijn map Downloads.). EEN Stuur naar huidig project bestandsactie zou me helpen deze bestanden op te ruimen in mijn downloads map.
EEN Bestandsactie blok maakt het mogelijk nieuwe acties aan te maken voor een bestand of een groep bestanden dat is geselecteerd in de Alfred-browser. Sinds een Verplaatsen naar huidig project bestandsactie valt buiten het bereik van een Downloads Tamer, er moet een nieuwe workflow worden gemaakt voor het beheer van ons project.
Maak een nieuwe workflow en label deze Projectleider. De beschrijving is ingesteld op Een workflow om uw projecten te beheren., maar je kunt het maken wat je wilt.
De bundel-ID is com.customct.MTProject. De bundel-ID is erg belangrijk en moet zeer uniek zijn voor de workflow. Ik gebruik altijd mijn siteadres in omgekeerde opzoekvolgorde (ontleend aan DNS-naamconventies) en de werkstroomnaam om de workflow eenduidig te identificeren. De auteur kan jou zijn. De website is uw website of niets.
Nu we een workflow hebben voor het beheer van ons project, kunnen we een Bestandsactie blokkeren om bestanden naar onze geselecteerde projectdirectory te verplaatsen.
Maak een Bestandsactie blokkeren met de naam ingesteld op Verplaatsen naar huidig project. Controleer ook de optie om meerdere bestanden te accepteren. Op die manier is het mogelijk om veel bestanden te selecteren en de Bestandsactie werk ze allemaal tegelijkertijd. Aangezien elk type bestand is toegestaan, verlaat u de Types spatie spatie.
Om het werk uit te voeren, moet je een Voer het script uit blokkeren om de spierbaan uit te voeren. Stel de Taal naar / Bin / bash en zet alle Ontsnappen opties. Stel het script in op:
/ bin / mv "query" ~ / projects / myproject
De ~ / Projecten / myproject moet worden gewijzigd in de map van uw huidige project. Dit is de hard gecodeerde aanpak die niet te deelbaar is, maar die later zal worden opgelost.
Met de twee blokken op deze manier verbonden, kunt u elk afzonderlijk bestand naar onze huidige projectdirectory sturen. Maar de Bestandsactie blok is zo ingesteld dat meerdere bestanden kunnen worden verzonden. Wanneer meerdere bestanden zijn geselecteerd in Alfred Browser met Option-Shift, Alfred stuurt de lijst met bestanden naar uw Bestandsactie in een tab-gescheiden lijst (een complete beschrijving van het gebruik van de bestandsbuffer is te vinden op Alfred Support.).
Om dit probleem op te lossen, moet er meer scripting worden gedaan. Verander het script naar het volgende:
generate_list () echo "query" projDir = "~ / your / project"; voor bestand in $ (generate_list) do mv "$ filen" "$ projDir"; gedaan
Jouw Voer het script uit blok zou er nu als volgt uit moeten zien:
De generate_list function is een snelle manier om de tab-gescheiden tekenreeks om te zetten in een zoeklijst voor de ... loop. De voor ... lus wijst elk item in de lijst toe aan de $ Filen variabele en voer de verplaatsing uit. Ik stel de projectdirectory in op een variabele. De volgende stap is om de variabele dynamisch in te vullen in plaats van de waarde hard te coderen.
Tip: Let op het gebruik van dubbele aanhalingstekens rond de variabelen in de mv uitspraak. Dit verzekert dat uw pad correct zal worden gevolgd, ook al zijn er spaties in de padnamen. Dit is erg belangrijk om te onthouden. Veel scripts gaan dood vanwege dit probleem.Om het probleem van het hard coderen van de projectdirectory te corrigeren, moet een manier worden gebruikt om informatie op te slaan. Alfred zorgt hiervoor door workflows toe te staan twee gegevensopslaggebieden te hebben die gegevens en cache worden genoemd.
De gegevensopslagdirectory is bedoeld voor het langdurig opslaan van informatie. Het is aan de workflow om de informatie daar up-to-date en relavent te houden.
De cachemap is voor informatie die tijdelijk is. Programma's die gegevenscaches wissen op uw systeem zullen deze bestanden automatisch verwijderen.
In de toekomst zal Alfred deze mappen automatisch maken en verwijderen. Maar op dit moment is het aan de workflow om ze te onderhouden.
De gegevensdirectory bevindt zich op ~ / Bibliotheek / Application Support / Alfred 2 / Workflow Data / BundleID.
De cachemap bevindt zich op ~ / Bibliotheek / Caches / com.runningwithcrayons.Alfred-2 / Workflow Data / BundleID.
De BundleID is de bundel-ID die aan de werkstroom is gegeven toen u deze maakte. Omdat elke workflow in deze mappen wordt weergegeven, is het erg belangrijk dat elke workflow een andere bundel-ID heeft.
Tip: Onthoud: De ~ is de manier van Unix om naar je homedirectory te verwijzen.Zoals je kunt zien, hebben deze directorystructuren al spaties in hun naam. Daarom moet je echt goed voor ze zorgen als je scripts schrijft.
Alfred's Voer het script uit blok zorgt ervoor dat een variëteit van programmeertalen direct kan worden gebruikt. Een script kan bijvoorbeeld worden geschreven in bash, zsh, AppleScript (ook bekend als osascript op de opdrachtregel), PHP, Python, Pearl of Ruby. Indirect kunt u een bash- of zsh-script gebruiken om een script in een andere taal uit te voeren, zoals een knooppunt.
De reden dat Alfred deze talen alleen vermeldt, is omdat ze de enige talen zijn die automatisch op het Mac OS X-platform verschijnen. Elke andere taal zou door de gebruiker moeten worden geïnstalleerd.
Ook roept Alfred alleen de taal op vanaf de locatie waar het oorspronkelijk was geïnstalleerd. Als u een andere versie van Ruby installeert, moet u er rechtstreeks naar verwijzen in een shellscript in plaats van de standaard Ruby-scriptdescriptor in een Voer het script uit blok.
Als u een werkstroom maakt waarvoor een andere programmeertaal is vereist, moet u ervoor zorgen dat de gebruiker hiervan op de hoogte is in de beschrijving van de werkstroom. Het wordt ook aanbevolen om die informatie in de Leesmij deel van de workflow.
Om deze kennis te gebruiken, moet je het script als volgt wijzigen:
######################### # Contants. ######################### VPREFS = "$ HOME /Library/Caches/com.runningwithcrayons.Alfred-2/Workflow Data /" NVPREFS = "$ HOME / Bibliotheek / Application Support / Alfred 2 / Workflow Data /" ############################### ######################## # Lezen de bundleid uit de info.plist van de workflow ####################################### ##################################### getBundleId () / usr / libexec / PlistBuddy -c " Afdrukken: bundleid "" info.plist " ### ################################## ####################################### # Verkrijg de workflowgegevens dir ##### ################################################## ######################## getDataDir () local BUNDLEID = $ (getBundleId) echo "$ NVPREFS $ BUNDLEID" if [! -d "$ (getDataDir)"]; dan mkdir -p "$ (getDataDir)"; raak "$ (getDataDir) /projectDir.txt" aan; fi generate_list () echo "query" projDir = "cat" $ (getDataDir) /projectDir.txt ""; als [-z "$ projDir"]; dan echo "Geen project is ingesteld!"; Uitgang; fi voor filen in $ (generate_list) do mv "$ filen" "$ projDir"; voltooide echo "De bestanden zijn verplaatst!";
De sectie bovenaan is voor het definiëren van onze verschillende datadirectielocaties in constanten die in het script moeten worden gebruikt. Het is altijd goed programmeren om constant gewaardeerde items in een constante op te slaan die je script kan gebruiken. Daarom, als het laatste moet worden veranderd, zal het heel eenvoudig zijn om te doen.
Vervolgens de functie getBundleId gebruikt een programma in OS X om de plist voor de workflow, info.plist, te lezen en die id op te halen. De plist bevindt zich in de workflows-map. Als je naar een kijkt Voer het script uit blokkeren, ziet u rechtsonder in het scriptvenster een knop met het label Open workflowmap. Dat opent de map voor uw workflow in Finder.
Als uw programma gebruik maakt van afbeeldingen of andere scripts die nooit zijn gewijzigd, is dit een geweldig gebied om ze op te slaan. Wanneer u een werkstroom deelt, wordt deze hele map ingekort in het werkstroombestand.
De getDataDir functie gebruikt eenvoudig de gedefinieerde constanten en de bundel-ID om de locatie van de gegevensdirectory aan te maken. De cachedirectory wordt in dit voorbeeld niet gebruikt.
De als blok wordt gebruikt om onze gegevensdirectory en het gegevensbestand te maken dat wordt gebruikt voor de opslag van projectdirectory's als deze nog niet bestaan. Alle scripts die u schrijft die gebruik maken van deze mappen, moeten dit type codering goed laten werken. Vertrouw niet op een initialisatiezoekwoord, omdat de gebruiker dit misschien niet eerst gebruikt!
De volgende wijziging is hoe de projDir-variabele wordt gedefinieerd. Kat eenvoudig de inhoud van projectDir.txt bestand in de variabele. Daarom moet dat bestand een enkele regel hebben die de map voor ons project bevat.
Na het verkrijgen van de Projectmap variabele set, moet de geldigheid van de gegevens worden gecontroleerd. Als de gebruiker nog geen projectdirectory heeft ingesteld, moet de variabele leeg zijn. Daarom zal het script testen op een lege variabele. Als het leeg is, verzendt u een waarschuwingsbericht en sluit u af.
Tip: Zorg er altijd voor dat uw gegevens juist zijn. Dit houdt veel fouten uit uw workflows en helpt anderen het gevoel te hebben dat u echt een goed product hebt afgeleverd. Als je dit vergeet, kun je er zeker van zijn dat het terug zal komen om je dood te pesten!Helemaal aan het einde vertelt het script de gebruiker dat het bestand (en) zijn verplaatst. Ik geef altijd graag feedback aan de gebruiker. Het helpt de gebruiker om te voelen dat iets wordt gedaan. Daarom moeten de berichten worden weergegeven in a Berichtgeving plaatsen blok. Voeg er een toe aan het einde van de workflow. Uw workflow moet er uitzien zoals de bovenstaande afbeelding.
Als het projectDir.txt bestand is zojuist door het script gemaakt en bevat dan geen informatie. Daarom moet een manier om dit bestand in te stellen gemaakt worden! De eenvoudigste manier is om een te gebruiken Bestandsfilter blok ingesteld op mappen zoals in de eerste zelfstudie. Voeg een ... toe Bestandsfilter blokkeren en vul het in zoals te zien is.
Voeg nu een toe Voer het script uit blokkeren met het volgende script:
######################### # Contants. ######################### VPREFS = "$ HOME /Library/Caches/com.runningwithcrayons.Alfred-2/Workflow Data /" NVPREFS = "$ HOME / Bibliotheek / Application Support / Alfred 2 / Workflow Data /" ############################### ######################## # Lezen de bundleid uit de info.plist van de workflow ####################################### ##################################### getBundleId () / usr / libexec / PlistBuddy -c " Afdrukken: bundleid "" info.plist " ### ################################## ####################################### # Verkrijg de workflowgegevens dir ##### ################################################## ######################## getDataDir () local BUNDLEID = $ (getBundleId) echo "$ NVPREFS $ BUNDLEID" if [! -d "$ (getDataDir)"]; dan mkdir -p "$ (getDataDir)"; raak "$ (getDataDir) /projectDir.txt" aan; fi echo "query"> "$ (getDataDir) /projectDir.txt"; echo "De projectdirectory is: query";
Let op, deze keer de Zoekopdracht macro wordt twee keer gebruikt. Je kunt het zo vaak gebruiken als je wilt in de scripts.
De map doorgegeven van de Bestandsfilter blok zal altijd een geldige map zijn. Daarom hoeft het niet te worden getest. Gewoon echo het in het bestand in onze data-map en het is veilig.
Wanneer u de Voer het script uit blokkeren voor de Berichtgeving plaatsen blok, het zou moeten lijken op de bovenstaande afbeelding. Nu kan de projectdirectory gemakkelijk worden ingesteld en gewijzigd.
U hebt nu twee nieuwe workflows om u te helpen bij uw dagelijkse routines: één om door uw map Downloads te gaan en één om uw projecten te beheren. Probeer ze uit te breiden met meer handige functies. Maak bijvoorbeeld een Bestandsfilter en Open bestand actie om uw projectbestanden te bewerken, of kopieer de verwijdercode van het bestand vanuit de Downloads Tamer-workflow om bestanden uit uw project te verwijderen. Je leert het nooit totdat je dingen uit je eentje probeert!
De geavanceerde tutorial breidt deze twee workflows uit met nog complexere scripting en maakt gebruik van andere bibliotheken om het werken met Alfred-workflows eenvoudiger te maken. Veel plezier met scripten!
Bijwerken: Er is nu een nieuwe site voor het delen van werkstromen beschikbaar: Packal, dat belooft ook een workflow te hebben om met deze site te werken.