Fix HTML-formatering med Simple Shell Scripting
Om du ofta skriver HTML i en redigerare och sedan klistrar in i WordPress märker du att ibland irriterande formateringstaggar (som taggar) läggs till. Med hjälp av enkla skalskript kan du automatiskt städa upp den HTML-formaten för skräp med några enkla kommandon.
Varför använda skalskriptning? Om du är ny programmering är det mycket, mycket bättre att börja små. Inte bara är du mindre sannolikt att ge upp, men du får möjligheter att sluta och lära dig under vägen. Som sagt kan dina första program vara mycket användbara även om de också är väldigt enkla.
Shell scripting Vad är Shell Scripting och varför du ska använda det Vad är Shell Scripting och varför du bör använda det Förutom att kunna acceptera och exekvera kommandon interaktivt kan skalet också utföra kommandon som är lagrade i en fil. Detta är känt som skalskript. Här täcker vi grunderna för skalskriptning. Läs mer är ett bra ställe att börja kodning av den här exakta orsaken: det är lätt att sätta ihop något i ett par kodenheter som kommer att spara lite tid. Låt oss ta en titt på ett par recept, eller “mönster,” du kan omdirigera till egna skript.
Varför Shell Scripting?
För det första, låt oss börja med att definiera “skalskriptning” som skrivskript som ska köras i Bash-skalet. Tekniskt sett kan andra skriptspråk som Powershell också kallas “skalskriptning.” Men varför fokusera på skalskript i allmänhet, och Bash-skript i synnerhet i första hand?
- Med introduktionen av Windows Subsystem för Linux är Bash-skalet nu kompatibelt med alla större PC-plattformar. En snabbguide till Linux Bash Shell i Windows 10. En snabbguide till Linux Bash Shell i Windows 10. Du kan nu köra Linux på Windows. Läs mer om Bash på Windows, från hur och varför du ska installera den, till dolda funktioner som du förmodligen inte visste om. Läs mer . (Det ingår också på macOS och bara om alla Linux-distributioner utanför lådan.) Det är även tillgängligt på Android-telefoner med en Termux. Hur man använder Linux-kommandoraden på Android med Termux. Hur man använder Linux-kommandoraden på Android med Termux Byt ut massor av skrymmande Android-appar med bara en tunn Linux-kommandoradsapp. Läs mer, en gratis och öppen källkods nedladdning från Google Play.
- Shell scripting låter dig fokusera på programmering grundläggande, eftersom den tungaste lyftning görs för dig av de kommandon som du kommer att inkludera. Antag att du vill komprimera vissa filer i en vanlig skrivbordsapplikation skrivet i C. Du måste antingen skriva en liten kod för att använda ett kompatibelt programbibliotek. En storlek passar inte alla: varför programvaran inte är universellt kompatibel En storlek gör inte passar inte alla: varför programvara inte är universellt kompatibel Programvaran är densamma på vilket operativsystem som helst, eller hur? Fel. Det kan se ut på samma sätt och fungera på liknande sätt, men det är annorlunda bakom kulisserna. Läs mer som kommer att göra jobbet, eller skriv mycket av kod från början och faktiskt göra komprimeringen. I ett skalskript är allt du behöver göra att köra tjära kommando på önskade filer.
- Du kan utvecklas i små steg, på ett interaktivt sätt. För att fortsätta ovanstående exempel, låt oss säga att du har bestämt att du ska använda tjära att göra komprimering, men du är inte säker på vilken av de alternativ du vill ha. Bara leka med det i snabb takt tills du får det resultat du vill ha och kopiera / klistra in det kommando du använde i ditt skript.
Med ovanstående är här ett par idéer för användbara skalskript som du kan sätta ihop med bara ett par rader kod. Vi bygger ett par skript för att förbättra de redan stora kraven i Pandoc-omvandlingsverktyget. Hur enkelt konverteras mellan dokumentformat i Linux. Hur enkelt konverteras mellan dokumentformat i Linux. Att byta till Linux kan leda till problem med filkompatibilitet. Dokument ser inte likadana ut i LibreOffice som de gör i Word. Detta är bara en anledning till varför du behöver pandoc. Läs mer .
1. Samla långa listor av parametrar
Det enklaste och enklaste sättet att använda ett skalskript är som en knd för genväg för ett befintligt kommando. Vissa kommandoradsprogram har massor av flaggor, och deras syntax är inte alltid klart. Men du kan ta en av dessa kommandon med alla sina komplicerade alternativ och slänga dem i ett skalskript med ett namn som är lättare att komma in. Tänk på följande kommando, som kör Pandoc på en Markdown-fil och skapar en ODT-fil med en mallfil:
pandoc -r markdown -w odt --reference-odt = / sökväg / till / mapp / innehåll / mscript-template.odt -o manuscript.odt manuscript.md
Jag använder Pandoc varje dag, eftersom jag författar allt i lätta markup som Markdown Vad är Markdown? 4 skäl till att du borde lära dig nu Vad är Markdown? 4 Anledningar till varför du borde lära dig nu Trött på HTML och WYSIWYG redaktörer? Då är Markdown svaret för dig, oavsett vem du är. Läs mer och Asciidoc Lightweight Markup Language: Det här är varför du borde använda AsciiDoc över Regular Markdown Lightweight Markup Språk: Det här är varför du borde använda AsciiDoc över Regular Markdown Markdown språk kommer i många smaker, av vilka några är bättre än andra. Lättviktiga språk som AsciiDoc är lätta att lära och mycket användbara. Så här jämför den. Läs mer . Och ändå när jag konverterar till ODT skriver jag “odt-referens” istället för “referens-odt.” Varje. Enda. Tid. Dessutom kommer sökvägen till mallen inte automatiskt att slutföras som de flesta skalkommandon. Skapa ett enkelt skript kan spara allt som misstänker:
#! / bin / bash pandoc -r docbook -w odt --reference-odt = / sökväg / till / mapp / innehållande / mscript-template.odt -o $ 1.odt $ 1
Den första raden i manuset styr systemet för att använda Bash-skalet för att köra det. Den nästa tar det första argumentet på kommandoraden ($ 1), och kör Pandoc med en uppsättning flaggor på den. Det är värt att notera att det finns andra sätt att göra detta, till exempel genom att använda alias kommando på Unix-ish-system. Men att göra små skalskript betyder att du kan hålla dem praktiska (som i din ~ / bin-mapp), kopiera (eller synkronisera dem) på annat håll snabbt och ändra dem med någon textredigerare. Spara ditt skript med ett filnamn som är lätt att komma ihåg och skriv (t.ex.. “markdown2odt.sh”). Glöm inte att ge det körbara behörigheter En av de viktigaste verktygen i Linux - Förstå Chmod En av de viktigaste verktygen i Linux - Förstå Chmod Det finns många funktioner som gör Linux speciellt, men en av dem som gör det så säkert är dess behörighetssystem. Du kan få finkornskontroll över alla filer i ditt system och ... Läs mer .
2. Piping Output för att rengöra HTML-formatering
Anslutning av två terminalkommandon med ett rör (“|”) karaktär gör att utgången från den första används som ingången till den andra. (Om du aldrig har sett detta tidigare, kolla in vår snabbguide till kommandoraden. En snabbguide för att komma igång med Linux-kommandoraden. En snabbguide för att komma igång med Linux-kommandoraden. Du kan göra massor av fantastiska saker med kommandon i Linux och det är verkligen inte svårt att lära. Läs mer.) Men måste skriva två Kommandon i rätt ordning, med rätt parametrar, förenar bara det problem som vi just diskuterat. Omslutningen av denna dubbelkommando i ett skalskript gör det så mycket bekvämare.
Ett knep jag använder med Pandoc är att “rena” HTML-formatering eller ta bort all inline-styling 9 Fel som du inte ska göra när du bygger en webbsida 9 Fel du inte ska göra när du bygger en webbsida Följande HTML-kodningsfel är enkla att göra, men om du leder dem tidigare tidigare än senare kommer din sida att se bättre ut, vara lättare att underhålla och fungera hur du vill ha den. Läs mer . Om du någonsin har försökt att exportera ett textbehandlingsdokument till HTML, kan du se att det finns massor av stilar (spänna taggar) som läggs till i och bland texten.
Docbook XML-formatet har ingen konvention för inline-stilar, så om vi konverterar HTML till DocBook blir all denna formatering bortkastad. Då kan vi använda Pandoc för att konvertera DocBook tillbaka till HTML, och vi får en bra bit av markup som du kan (till exempel) klistra in i WordPress. Snarare än att göra detta med enskilda samtal till Pandoc, samlar följande skript dem tillsammans till:
- Konvertera den exporterade HTML-filen till DocBook, som inte har inline-stilar (före röret)
- Konverter DocBook tillbaka till det som nu är snyggt, rent HTML-formatering (efter röret)
#! / bin / bash pandoc -w docbook $ 1 | pandoc -r docbook -w html -o $ 1 -
Förklara Standard Input / Output
Ovanstående utnyttjar terminalkoncepten av “standardinmatning” och “standardutgång.” Om du skulle köra den första delen av kommandot skulle du få en hel massa XML som visas i terminalen. Anledningen till att vi inte har gett Pandoc någon annan produktion (som en fil) att använda. Så det använder den enda nedgången som den har: standardutgång, i detta fall terminalen.
Å andra sidan betyder streckteckenet i slutet av det andra Pandoc-kommandot att det ska användas “standardinmatning.” Kör av sig själv, du skulle bli hälsad med en snabb fråga, där skalet skulle vänta på att du skulle ge lite text via standardinmatningen genom att skriva på tangentbordet. När vi kombinerar dem kan du nästan föreställa dig det första kommandot som spolar ut en massa XML till terminalen där den omedelbart pipes in i det andra kommandot som input.
Resultatet är om du byter namn på det här “clean-html.sh,” du kan köra den på någon HTML-fil för att bli av med de besvärliga stilerna. Den bästa delen är Pandoc kommer att läsa från filen, skriv sedan över det i slutet, vilket betyder att det inte finns några tempfiler på.
3. Köra program på flera HTML-filer
Vissa program låter dig ange jokertecken som asterisken på kommandoraden. Detta gör det möjligt att till exempel flytta alla JPG-bilder till din “Bilder” mapp:
mv * .jpg ~ / Bilder
Men andra program tar bara en fil i taget som input, och Pandoc är en av dem. Så vad händer när vi har en hel katalog full av exporterade HTML-filer och vi vill städa upp HTML-formateringen? Behöver vi springa vår “clean-html.sh” skript på var och en av dem manuellt?
Nej, för att vi inte är nybörjare. Vi kan lägga in vårt piped-kommando i en “för varje” slinga. Detta kommer att gå till varje HTML-fil i den aktuella katalogen i sin tur och utföra den rena funktionen på den. Låt oss också lägga till ett litet meddelande via eko uttalande att meddela att alla filer har tagits hand om:
för filnamn i ./*.html gör pandoc -w docbook $ 1 | pandoc -r docbook -w html -o $ 1 - echo "Arbetar på $ 1 ... HTML är rent!" Gjort
Nu om du har en mapp full av “smutsig” HTML, du kan köra det här skriptet på det och sluta med lite gnistrande HTML-formatering.
Vart ska man åka ifrån här
Om du gillar tinkering, kommer du att älska skalskriptning, för det finns alltid tweaking att göra. Några idéer om hur man använder dessa mönster som grund för andra skript är följande:
- Lägger till stöd för omvandling direkt från ordbehandlingsfilen, eftersom Pandoc stöder ODT och DOCX-inmatning (dvs kedjan blir ODT / DOCX> DocBook XML> HTML).
- Kombinera båda HTML-rengöringsmedlen till en, så att om en fil tillhandahålls rensas den, annars rensas den automatiskt allt i den aktuella katalogen (lägger till hantering av kommandoradsargument En snabbguide för att komma igång med Linux-kommandoraden En snabb guide för att få Startat med Linux Command Line Du kan göra massor av fantastiska saker med kommandon i Linux och det är verkligen inte svårt att lära. Läs mer).
- Ge användaren ytterligare exportalternativ som PDF (lägger till val baserat på input, via if-then eller case statements).
Som du kan se, med skalskript kan du bygga saker lite åt gången, testa dem ut snabbt och tacka dem på dina skript när du går.
Vad säger du, ser shell scripting lite mindre skrämmande nu? Är du redo att försöka med att automatisera dina tråkigaste uppgifter? Om du bestämmer dig för att hoppa in, låt oss veta hur det går nedan i kommentarerna!
Utforska mer om: HTML, Scripting.