Om du vill läsa innehållet i en lokal Markdown-fil i Genvägar på Mac konverterar du filindata till text innan du använder den. Kontrollera resultatet med ett prov som du kan kasta bort. Om konverteringen misslyckas läser du filen med cat och skickar innehållet vidare till genvägen via en pipe.

Den här genomgången visar hur du väljer en lokal Markdown-fil i Finder och visar dess oförändrade källtext, inklusive rubrikmarkörer och listtecken. Den viktiga skillnaden är mellan tre saker: den valda filen, dess sökväg och texten som finns i den.

Varför får genvägen en fil i stället för dess text?

Finder skickar filindata. Apple definierar Files och Text som separata indatatyper i Genvägar: en fil kan vara ett dokument av valfri typ, medan text är oformaterad text utan tillämpad formatering. Att ta emot en Markdown-fil innebär därför inte i sig att nästa åtgärd får dess innehåll som text. Förstå indatatyper i Genvägar på Mac.

Genvägar använder sin innehållsgraf för att konvertera mellan typer när åtgärder kräver det. Apple beskriver också en uttrycklig kontroll: klicka på en variabelbricka och ändra dess Type. Den konverteringen skiljer sig från att välja en egenskap, till exempel filens namn. Ett namn eller en sökväg är fortfarande bara en beskrivning av filen. Innehållsgrafmotorn, Justera variabler i Genvägar på Mac.

Apples citerade guide förklarar konverteringsmekanismen, men lovar inte att varje fil med filändelsen .md konverteras till sin källtext. Se konverteringen som något du behöver kontrollera med känt innehåll. Den kommandobaserade metoden nedan ger ett uttryckligt sätt att läsa filen när den inbyggda konverteringen inte ger den förväntade texten.

Skapa en tillfällig Markdown-fil med känt innehåll

Använd den här syntetiska testfilen så att ett filnamn inte kan misstas för en lyckad läsning. Klistra in hela förberedelsen i Terminal. Den skapar en ny tillfällig katalog, skriver en exempelfil och öppnar katalogen i 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"

Det förväntade filinnehållet är:

# Sample board

- Blue square
- Green circle

Alternativet -d instruerar mktemp att skapa en katalog, och de avslutande tecknen X låter kommandot välja ett unikt namn. Varje lyckad körning av förberedelsen får därför en ny katalog. Om skapandet misslyckas hindrar kedjan med && att de senare kommandona körs. Apple tillhandahåller den relevanta mktemp-manualen.

Kommandot printf skriver de syntetiska raderna, inklusive den tomma raden. Omdirigeringen av utdata skapar sample.md i den nya katalogen. Vanlig omdirigering med > kan skriva över en befintlig fil, så behåll den här förberedelsen oförändrad i stället för att ändra målet till ett befintligt dokument. Den nya katalogen förhindrar namnkonflikter i det här exemplet. Apples printf-manual, Skalinmatning och utmatning.

Skapa en Finder-genväg som uttryckligen begär text

Skapa en genväg med namnet Read Markdown Text. Apple beskriver hur du skapar en genväg med verktygsfältets lägg till-knapp, namnger den och lägger till åtgärder från åtgärdsbiblioteket. Skapa en anpassad genväg på Mac.

Ställ in genvägens startpunkt i Finder:

  1. Öppna genvägens panel Details.
  2. Aktivera Use as Quick Action och välj Finder.
  3. Tillåt Files och Text i indatablocket högst upp i redigeraren. Filer behövs för Finder-flödet, medan text behövs för Terminal-reservmetoden nedan.
  4. Välj Stop and Respond för saknad indata och skriv Välj en exempel-Markdown-fil.

Apple beskriver Finder-alternativet och påpekar att fil- eller mappindata kan behövas för att aktivera det. Indatakonfigurationen stöder också att körningen stoppas med ett svar när ingen indata tas emot. Kör en genväg medan du arbetar på din Mac, Begränsa indata för en genväg.

Lägg sedan till åtgärderna för innehållsbehandling:

  1. Lägg till åtgärden Text.
  2. Placera endast variabeln Shortcut Input i textfältet.
  3. Klicka på variabelbrickan, öppna dess meny Type och välj Text. Välj inte en egenskap för filnamn.
  4. Lägg till Quick Look efter åtgärden Text och använd utdata från åtgärden Text.

Den uttryckliga variabelkonverteringen begär text där indatan används. Utdata från den följande åtgärden Text är värdet som ska användas i senare textbehandlingssteg. Apple beskriver hur du ändrar variabeltyper via variabelredigeraren. Justera variabler i Genvägar på Mac.

Om du vill bekräfta hur det fungerar i din installerade version Ctrl-klickar du på en åtgärds ikon och väljer Show Info. Apple beskriver detta som sättet att granska vilka indata åtgärden godtar och vilka utdata den ger. Det är särskilt användbart när du anpassar en befintlig genväg som innehåller flera fil- och textvariabler. Navigera i åtgärdslistan i Genvägar på Mac.

Markera endast sample.md i Finder, Ctrl-klicka på filen och välj Quick Actions och sedan Read Markdown Text. Apple beskriver den här metoden för att köra genvägen. Om genvägen saknas kontrollerar du först Finder-inställningen och vilka indatatyper som godtas. Kör en genväg medan du arbetar på din Mac.

Ett lyckat resultat innehåller # Sample board och båda listobjekten. Om endast sample.md eller dess katalogsökväg visas klarar resultatet inte kontrollen. Apple rekommenderar att du placerar Quick Look mellan åtgärder för att granska innehållet som flödar genom en genväg. Testa åtgärderna i Genvägar på Mac.

Läs innehållet före anropet av Genvägar om konverteringen misslyckas

Använd Terminal för att göra läsningen uttrycklig. Apples Terminal-guide anger att cat kan användas för att visa innehållet i textfiler. Apples guide för kommandoraden i Genvägar skiljer mellan filindata som skickas med -i och text som skickas via en pipe. Visa textfiler i Terminal på Mac, Kör genvägar från kommandoraden.

Följande är en fortsättning på förberedelsetestet, inte ett fristående program. Kör det i samma Terminal-flik efter att förberedelsen lyckats och när genvägen har sparats under det exakta namnet 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
)

Här läser cat filen och skriver dess innehåll till standardutmatningen. Pipen skickar innehållet till genvägen. Om du omger sökvägen med citattecken hålls den samman som ett enda argument. Kontrollerna -f och -r kräver att det finns en vanlig fil som är läsbar. Introduktion till kommandoraden, Apples test-manual.

Parenteserna begränsar ändringen av skalalternativet till den här kommandogruppen. pipefail gör att ett misslyckat steg i pipen syns i gruppens slutstatus. De inledande kontrollerna garanterar inte att filen förblir tillgänglig under en senare läsning. Om cat stöter på ett läsfel granskar du felet i stället för att godta en ofullständig förhandsvisning som komplett.

Den här reservmetoden ändrar genvägens inkommande innehåll från en fil till text. Den byter inte namn på Markdown-filen och skapar inte ett konverterat dokument. De befintliga åtgärderna Text och Quick Look kan granska den inkommande texten.

De här tre kommandoutformningarna har olika betydelser:

Kommandoutformning Vad genvägen tar emot
shortcuts run \"Read Markdown Text\" -i \"$demo_dir/sample.md\" Filindata; konvertering behövs fortfarande i genvägen.
printf '%s\n' "$demo_dir/sample.md" | shortcuts run "Read Markdown Text" Sökvägen som text.
`cat "$demo_dir/sample.md" \ shortcuts run "Read Markdown Text"`

Tabellen visar den av Apple dokumenterade skillnaden mellan att skicka filsökvägar med -i och att skicka text via en pipe. Kommandot före pipen avgör om texten är en sökväg eller dokumentets innehåll. Kör genvägar från kommandoraden.

Felsök resultatet innan du lägger till fler åtgärder

Använd den kända testfilen för att avgöra vad du behöver rätta till:

  • Endast ett filnamn visas: Kontrollera om variabeln hämtar en namnegenskap i stället för att begära text.
  • Endast en sökväg visas: Kontrollera om kommandot skriver ut sökvägen i stället för att läsa filen.
  • Den inbyggda konverteringen misslyckas, men Terminal-metoden fungerar: Använd den uttryckliga läsmetoden i det här arbetsflödet. Att bara ändra en indatamärkning löser inte konverteringen.
  • Ingen indata tas emot: Kör från den valda Finder-filen eller med det dokumenterade Terminal-kommandot. Om du startar en genväg från Dock skickas inte den valda filen automatiskt med.
  • Källtexten är tom: Jämför med testfilen. En giltig tom fil och en fil som saknas är olika förhållanden.

Apple beskriver variabelegenskaper separat från konvertering av innehållstyper och påpekar att genvägar som startas från Dock kan sakna inledande indata. De skillnaderna hjälper dig att hitta felet innan du ändrar senare åtgärder. Justera variabler i Genvägar på Mac, Begränsa indata för en genväg.

Begränsa arbetsflödet till en liten lokal textfil medan du testar. Om du väljer flera filer behöver du ta ställning separat till om varje fil ska behandlas för sig eller om innehållet ska slås ihop. Det här exemplet visar hur du får läsbar källtext; det är inte en metod för att kopiera en fil byte för byte.

När förhandsvisningen innehåller den förväntade rubriken och listraderna kopplar du efterföljande textbehandlingsåtgärder till utdata från åtgärden Text. Behåll testfilen tills hela flödet fungerar och ta sedan bort den tillfälliga katalogen i Finder. Den viktiga kontrollpunkten är enkel: nästa åtgärd ska ta emot det dokumentinnehåll som du har verifierat.

Källor