Als je de inhoud van een lokaal Markdown-bestand in Mac Shortcuts wilt lezen, converteer je de bestandsinvoer naar tekst voordat je die gebruikt. Controleer het resultaat met een wegwerpvoorbeeld; als de conversie mislukt, lees je het bestand met cat en leid je de inhoud door naar de snelkoppeling.

Deze handleiding is bedoeld om één lokaal Markdown-bestand in Finder te selecteren en de letterlijke brontekst weer te geven, inclusief kopmarkeringen en leestekens in lijsten. Het is nuttig onderscheid te maken tussen drie dingen: het geselecteerde bestand, het pad en de tekst die erin staat.

Waarom ontvangt de snelkoppeling een bestand in plaats van de tekst?

Finder levert bestandsinvoer. Apple definieert Files en Text als afzonderlijke invoertypen in Shortcuts: een bestand kan elk soort document zijn, terwijl tekst platte tekst zonder opmaak is. Een Markdown-bestand accepteren betekent dus niet automatisch dat de volgende actie de inhoud als tekst ontvangt. Invoertypen in Shortcuts op de Mac begrijpen.

Shortcuts gebruikt de Content Graph om tussen typen te converteren wanneer acties dat vereisen. Apple documenteert ook een expliciete instelling: klik op een variabeletoken en wijzig het Type. Die conversie verschilt van het kiezen van een eigenschap, zoals de naam van een bestand. Een naam of pad is nog steeds alleen een beschrijving van het bestand. De Content Graph-engine, Variabelen aanpassen in Shortcuts op de Mac.

In Apples aangehaalde handleiding wordt het conversiemechanisme uitgelegd, maar er staat niet dat elk bestand met de extensie .md naar de brontekst wordt geconverteerd. Behandel conversie als iets wat je met bekende inhoud moet controleren. De onderstaande methode met een opdracht biedt een expliciete manier om het bestand te lezen wanneer de ingebouwde conversie niet de verwachte tekst oplevert.

Maak een tijdelijk Markdown-bestand met bekende inhoud

Gebruik dit synthetische testbestand, zodat een bestandsnaam niet kan worden aangezien voor een geslaagde lezing. Plak de volledige voorbereiding in Terminal. Hiermee wordt een nieuwe tijdelijke map gemaakt, één voorbeeldbestand geschreven en die map geopend in Finder.

demo_dir=$(/usr/bin/mktemp -d /tmp/markdown-shortcuts.XXXXXX) &&
printf '%s\n' '# Sample board' '' '- Blue square' '- Green circle' > "$demo_dir/sample.md" &&
/usr/bin/open "$demo_dir"

De verwachte bestandsinhoud is:

# Sample board

- Blue square
- Green circle

Met de optie -d wordt mktemp opgedragen een map te maken; de afsluitende X-tekens zorgen ervoor dat een unieke naam wordt gekozen. Elke geslaagde voorbereiding krijgt zo een nieuwe map. Als het maken mislukt, voorkomt de &&-keten dat de latere opdrachten worden uitgevoerd. Apple verspreidt de relevante handleiding voor mktemp.

Met de opdracht printf worden de synthetische regels geschreven, inclusief de lege regel. De uitvoeromleiding maakt sample.md aan in de nieuwe map. Gewone >-omleiding kan een bestaand bestand overschrijven, dus laat deze voorbereiding intact in plaats van de bestemming te wijzigen in een bestaand document. De nieuwe map voorkomt in dit voorbeeld naamconflicten. Apples handleiding voor printf, Shellinvoer en -uitvoer.

Maak een Finder-snelkoppeling die expliciet om tekst vraagt

Maak een snelkoppeling met de naam Read Markdown Text. Apple beschrijft hoe je een snelkoppeling maakt met de knop voor toevoegen in de knoppenbalk, deze een naam geeft en acties uit de actiebibliotheek toevoegt. Een aangepaste snelkoppeling maken op de Mac.

Stel het toegangspunt in Finder in:

  1. Open het paneel Details van de snelkoppeling.
  2. Schakel Use as Quick Action in en selecteer Finder.
  3. Sta in het invoerblok bovenaan de editor Files en Text toe. Bestanden zijn nodig voor de Finder-werkwijze; tekst is nodig voor de Terminal-terugvalmethode hieronder.
  4. Kies bij ontbrekende invoer Stop and Respond en voer Select one example Markdown file. in.

Apple beschrijft de Finder-optie en merkt op dat bestands- of mapinvoer nodig kan zijn om deze in te schakelen. De invoerinstellingen ondersteunen ook stoppen met een reactie wanneer er niets is ontvangen. Een snelkoppeling uitvoeren terwijl je op de Mac werkt, De invoer voor een snelkoppeling beperken.

Voeg nu de acties voor inhoudsverwerking toe:

  1. Voeg een Text-actie toe.
  2. Plaats alleen de variabele Shortcut Input in het tekstveld.
  3. Klik op dat variabeletoken, open het menu Type en selecteer Text. Kies geen bestandsnaameigenschap.
  4. Voeg na de actie Text de actie Quick Look toe, met de uitvoer van de actie Text als invoer.

Met de expliciete variabeleconversie wordt tekst opgevraagd op het moment dat de invoer wordt gebruikt. De uitvoer van de daaropvolgende actie Text is de waarde die je in latere tekstverwerkingsstappen gebruikt. Apple beschrijft hoe je variabeletypen wijzigt via de variabeleditor. Variabelen aanpassen in Shortcuts op de Mac.

Voor bevestiging in de versie die je hebt geïnstalleerd, klik je met de Control-toets ingedrukt op het pictogram van een actie en kies je Show Info. Apple beschrijft dit als de manier om de geaccepteerde invoer en resulterende uitvoer van een actie te bekijken. Dat is vooral handig wanneer je een bestaande snelkoppeling met verschillende bestands- en tekstvariabelen aanpast. Door de actielijst navigeren in Shortcuts op de Mac.

Selecteer in Finder alleen sample.md, klik er met de Control-toets ingedrukt op en kies Quick Actions en vervolgens Read Markdown Text. Apple beschrijft deze manier om een snelkoppeling uit te voeren. Als de snelkoppeling ontbreekt, controleer je eerst de Finder-instelling en de geaccepteerde invoertypen. Een snelkoppeling uitvoeren terwijl je op de Mac werkt.

Een geslaagd resultaat bevat # Sample board en beide lijstitems. Alleen sample.md of het pad van de map zien, voldoet niet aan deze controle. Apple raadt aan Quick Look tussen acties te plaatsen om de inhoud te bekijken die door een snelkoppeling stroomt. Je acties testen in Shortcuts op de Mac.

Als de conversie mislukt, lees dan de inhoud voordat je Shortcuts aanroept

Gebruik Terminal om het leesproces expliciet te maken. In Apples Terminal-handleiding wordt cat genoemd als hulpmiddel om de inhoud van tekstbestanden te bekijken. In Apples handleiding voor de opdrachtregel van Shortcuts wordt bestandsinvoer met -i onderscheiden van tekst die via een pipe wordt aangeleverd. Tekstbestanden bekijken in Terminal op de Mac, Snelkoppelingen uitvoeren vanaf de opdrachtregel.

Dit is een vervolg op het voorbereidingsvoorbeeld, geen zelfstandig programma. Voer het uit in hetzelfde Terminal-tabblad nadat de voorbereiding is geslaagd, met de snelkoppeling opgeslagen onder de exacte naam Read Markdown Text:

(
    set -o pipefail

    if [ -f "$demo_dir/sample.md" ] && [ -r "$demo_dir/sample.md" ]; then
        /bin/cat "$demo_dir/sample.md" |
            /usr/bin/shortcuts run "Read Markdown Text"
    else
        printf '%s\n' 'The example file is missing or unreadable.' >&2
        exit 1
    fi
)

Hier leest cat het bestand en schrijft de inhoud naar standaarduitvoer. De pipe levert die inhoud aan de snelkoppeling. Door het pad tussen aanhalingstekens te zetten, blijft het één argument. De controles -f en -r vereisen een bestaand, regulier en leesbaar bestand. Inleiding tot de opdrachtregel, Apples handleiding voor test.

De haakjes beperken de wijziging van shellopties tot deze opdrachtgroep. Met pipefail wordt een mislukte stap in de pijplijn zichtbaar in de afsluitstatus van de groep. De voorafgaande controles garanderen niet dat een bestand tijdens een latere leesbewerking beschikbaar blijft. Als cat een leesfout tegenkomt, onderzoek die fout dan en accepteer een gedeeltelijke voorvertoning niet als volledig.

Met deze terugvalmethode verandert de binnenkomende inhoud van de snelkoppeling van een bestand in tekst. Het Markdown-bestand wordt niet hernoemd en er wordt geen geconverteerd document gemaakt. De bestaande acties Text en Quick Look kunnen die binnenkomende tekst bekijken.

Deze drie opdrachtvormen hebben verschillende betekenissen:

Opdrachtvorm Wat de snelkoppeling ontvangt
shortcuts run \"Read Markdown Text\" -i \"$demo_dir/sample.md\" Bestandsinvoer; conversie is nog steeds nodig in de snelkoppeling.
printf '%s\n' "$demo_dir/sample.md" | shortcuts run "Read Markdown Text" Het pad als tekst.
`cat "$demo_dir/sample.md" \ shortcuts run "Read Markdown Text"`

De tabel illustreert Apples gedocumenteerde onderscheid tussen bestandspaden doorgeven met -i en tekst doorgeven via een pipe. De bewerking vóór de pipe bepaalt of die tekst een pad of de documentinhoud is. Snelkoppelingen uitvoeren vanaf de opdrachtregel.

Stel vast wat het resultaat betekent voordat je meer acties toevoegt

Gebruik het bekende testbestand om te bepalen wat je moet aanpassen:

  • Er verschijnt alleen een bestandsnaam: Controleer of de variabele een naameigenschap ophaalt in plaats van tekst op te vragen.
  • Er verschijnt alleen een pad: Controleer of de opdracht het pad afdrukt in plaats van het bestand te lezen.
  • De ingebouwde conversie mislukt, maar de Terminal-methode werkt: Gebruik voor deze werkwijze de expliciete leesmethode; alleen een invoerlabel wijzigen heeft de conversie niet opgelost.
  • Er wordt geen invoer ontvangen: Start de snelkoppeling vanuit het geselecteerde Finder-bestand of met de gedocumenteerde Terminal-opdracht. Als je een snelkoppeling vanuit het Dock start, wordt het geselecteerde bestand niet automatisch meegegeven.
  • De bron is leeg: Vergelijk die met het testbestand. Een geldig leeg bestand en een ontbrekend bestand zijn verschillende situaties.

Apple beschrijft variabele-eigenschappen afzonderlijk van conversie tussen inhoudstypen en merkt op dat snelkoppelingen die vanuit het Dock worden gestart geen initiële invoer kunnen ontvangen. Die verschillen helpen de oorzaak van het probleem te vinden voordat je latere acties wijzigt. Variabelen aanpassen in Shortcuts op de Mac, De invoer voor een snelkoppeling beperken.

Beperk de werkwijze tijdens het testen tot één klein lokaal tekstbestand. Voor meerdere selecties moet je apart bepalen of je elk bestand verwerkt of de inhoud ervan samenvoegt. Dit voorbeeld maakt de brontekst leesbaar; het is geen procedure om bestanden byte voor byte te kopiëren.

Zodra de voorvertoning de verwachte kop en lijstregels bevat, verbind je de volgende tekstverwerkingsacties met de uitvoer van de actie Text. Bewaar het synthetische testbestand totdat de volledige werkwijze werkt en verwijder daarna de tijdelijke map in Finder. Het belangrijkste controlepunt is eenvoudig: de volgende actie moet de documentinhoud ontvangen die je hebt gecontroleerd.

Bronnen