Fix HTML-opmaak met Simple Shell Scripting

Fix HTML-opmaak met Simple Shell Scripting / Programming

Als u vaak HTML in een editor schrijft en vervolgens in WordPress plakt, zult u merken dat soms irritante opmaak-tags (zoals tags) zijn toegevoegd. Met behulp van eenvoudige shell-scripts, kunt u die HTML-opmaak automatisch opschonen met een paar eenvoudige opdrachten.

Waarom shell scripting gebruiken? Als je nieuw bent in programmeren, is het veel, veel beter om klein te beginnen. Je hebt niet alleen minder kans om op te geven, maar je hebt ook de gelegenheid om onderweg te stoppen en te leren. Dat gezegd hebbende, je eerste programma's kunnen erg nuttig zijn, ook al zijn ze ook heel eenvoudig.

Shell-scripting Wat is Shell-scripting en waarom zou u het moeten gebruiken Wat is Shell-scripting en waarom u het moet gebruiken Naast het kunnen accepteren en uitvoeren van opdrachten interactief, kan de shell ook opdrachten uitvoeren die zijn opgeslagen in een bestand. Dit staat bekend als shell-scripting. Hier bespreken we de basisprincipes van shell scripting. Lees Meer is een geweldige plaats om te beginnen met coderen om deze precieze reden: het is gemakkelijk om iets in een paar coderegels samen te stellen waarmee u veel tijd kunt besparen. Laten we een paar recepten bekijken, of “patronen,” je kunt hergebruiken in eigen scripts.

Waarom Shell Scripting?

Laten we eerst beginnen met definiëren “shell scripting” als schrijfscripts die in de Bash-shell moeten worden uitgevoerd. Technisch gezien kunnen ook andere scriptingstalen zoals Powershell worden genoemd “shell scripting.” Maar waarom zou u zich in de eerste plaats richten op shell-scripting en in het bijzonder op Bash-scripting?

  • Met de introductie van het Windows-subsysteem voor Linux is de Bash-shell nu compatibel met alle grote pc-platforms. Een beknopte handleiding voor Linux Bash Shell in Windows 10 A Beknopte handleiding voor Linux Bash Shell in Windows 10 U kunt nu Linux op Windows uitvoeren. Lees meer over Bash op Windows, van hoe en waarom je het moet installeren, naar verborgen functies die je waarschijnlijk nog niet wist. Lees verder . (Het is ook opgenomen in macOS en zowat alle Linux-distributies door out-of-the-box.) Het is zelfs beschikbaar op Android-telefoons met een Termux Gebruik van de Linux Commandoregel op Android met Termux Hoe de Linux-opdrachtregel op Android gebruiken met Termux Vervang tonnen omvangrijke Android-apps door slechts één slanke Linux-opdrachtregelapp. Lees meer, een gratis en open source download van Google Play.
  • Met Shell-scripting kunt u zich concentreren op het programmeren van de grondbeginselen, omdat het zwaarste tillen voor u wordt gedaan door de opdrachten die u opneemt. Stel dat u enkele bestanden wilt comprimeren in een traditionele bureaubladtoepassing geschreven in C. U moet ofwel een kleine code schrijven om een ​​compatibele softwarebibliotheek te gebruiken. Eén formaat past niet alles: waarom software niet universeel compatibel is Eén formaat maakt niet uit Niet alles: waarom software niet universeel compatibel is Software is hetzelfde in elk besturingssysteem, toch? Fout. Het ziet er misschien hetzelfde uit en functioneert op dezelfde manier, maar het is anders achter de schermen. Lees Meer dat het werk zal doen, of schrijf veel van nul af om de compressie daadwerkelijk uit te voeren. In een shellscript hoeft u alleen het teer commando over de gewenste bestanden.
  • Je kunt in kleine stapjes, op een interactieve manier ontwikkelen. Als u wilt doorgaan met het bovenstaande voorbeeld, stel dat u heeft besloten dat u het wilt gebruiken teer om je compressie te doen, maar je weet nog niet zeker welke van de opties je wilt. Speel er gewoon mee rond bij de prompt tot je het gewenste resultaat krijgt en kopieer en plak vervolgens de opdracht die je in je script hebt gebruikt.

Met het bovenstaande in gedachten, hier zijn een paar ideeën voor handige shellscripts die je kunt samenstellen met slechts een paar regels code. We zullen enkele scripts aan het bouwen zijn om de toch al aanzienlijke bevoegdheden van het conversiehulpprogramma Pandoc te vergroten. Eenvoudig omzetten tussen documentindelingen in Linux Eenvoudig omzetten tussen documentindelingen in Linux Overschakelen naar Linux kan leiden tot problemen met de bestandscompatibiliteit. Documenten zien er bijvoorbeeld niet hetzelfde uit in LibreOffice als in Word. Dit is slechts één reden waarom je pandoc nodig hebt. Lees verder .

1. Verzamelen van lange lijsten met parameters

De eenvoudigste en meest eenvoudige manier om een ​​shellscript te gebruiken, is als een sneltoets voor een bestaand commando. Sommige opdrachtregelprogramma's hebben een ton aan vlaggen en hun syntaxis is niet altijd duidelijk. Maar je kunt een van deze opdrachten met al zijn gecompliceerde opties nemen en ze in een shellscript gooien met een naam die gemakkelijker in te voeren is. Overweeg de volgende opdracht, die de Pandoc uitvoert op een Markdown-bestand en een ODT-bestand maakt met behulp van een sjabloonbestand:

pandoc -r markdown -w odt --reference-odt = / pad / naar / map / containing / mscript-template.odt -o manuscript.odt manuscript.md

Ik gebruik Pandoc op dagelijkse basis, omdat ik alles schrijf in lichtgewicht markup zoals Markdown What Is Markdown? 4 redenen waarom je het nu moet leren Wat is een daling? 4 redenen waarom u het nu zou moeten leren Moe van HTML en WYSIWYG-editors? Dan is Markdown het antwoord voor jou, ongeacht wie je bent. Lees meer en Asciidoc Lichtgewicht opmaak talen: dit is waarom je AsciiDoc moet gebruiken tijdens reguliere markdown Lichtgewicht opmaaktalen: dit is waarom je AsciiDoc moet gebruiken over reguliere markdown Markdown-taal heeft vele smaken, waarvan sommige beter zijn dan andere. Lichtgewicht talen zoals AsciiDoc zijn eenvoudig te leren en uiterst nuttig. Dit is hoe het zich verhoudt. Lees verder . En toch typ ik bij het converteren naar ODT “odt-referentie” in plaats van “referentie-odt.” Elk. Single. Tijd. Bovendien wordt het pad naar de sjabloon niet automatisch aangevuld zoals de meeste shell-opdrachten. Het maken van een eenvoudig script kan al die typfouten besparen:

#! / bin / bash pandoc -r docbook -w odt --reference-odt = / pad / naar / map / containing / mscript-template.odt -o $ 1.odt $ 1

De eerste regel van het script geeft het systeem de opdracht om de Bash-shell te gebruiken om het uit te voeren. De volgende neemt het eerste argument op de commandoregel ($ 1) en draait Pandoc met een reeks vlaggen erop. Het is vermeldenswaard dat er andere manieren zijn om dit te doen, zoals het gebruik van de alias commando op Unix-ish-systemen. Maar het maken van kleine shellscripts betekent dat je ze handig kunt houden (zoals in je map ~ / bin), ze snel ergens anders kunt kopiëren (of synchroniseren) en ze kunt wijzigen met elke teksteditor. Sla je script op met een bestandsnaam die je gemakkelijk kunt onthouden en typen (bijv. “markdown2odt.sh”). Vergeet niet om het uitvoerbare permissies te geven Een van de belangrijkste tools in Linux - Chmod begrijpen Een van de belangrijkste tools in Linux - Chmod begrijpen Er zijn veel functies die Linux speciaal maken, maar een van die maakt het zo veilig is het permissiesysteem. U kunt fijnkorrelige controle krijgen over alle bestanden in uw systeem en ... Lees meer .

2. Leidingenuitvoer naar schone HTML-opmaak

Twee terminalopdrachten verbinden met een pijp (“|”) karakter zorgt ervoor dat de uitvoer van de eerste wordt gebruikt als de invoer van de tweede. (Als je dit nog nooit eerder hebt gezien, bekijk dan onze beknopte handleiding voor de commandoregel. Een beknopte handleiding Aan de slag met de Linux-opdrachtregel Een beknopte handleiding Aan de slag met de Linux-opdrachtregel Je kunt veel geweldige dingen doen met opdrachten in Linux en het is echt niet moeilijk om te leren. Meer lezen.) Maar typen twee commando's in de juiste volgorde, met de juiste parameters, compenseert alleen het probleem dat we zojuist bespraken. Het in een shell-script inpakken van dit dubbele commando maakt het veel handiger.

Een truc die ik gebruik met Pandoc is om “schoon” HTML-opmaak, of verwijder alle inline-styling 9 Fouten die je niet zou moeten maken bij het bouwen van een webpagina 9 Fouten die je niet zou moeten maken bij het bouwen van een webpagina Deze volgende HTML-codeerfouten zijn gemakkelijk te maken, maar als je ze eerder afroept, dan later zal uw pagina er beter uitzien, gemakkelijker te onderhouden zijn en functioneren zoals u wilt. Lees verder . Als je ooit hebt geprobeerd een tekstverwerker-document naar HTML te exporteren, zie je dat er heel veel stijlen zijn (span tags) die in en tussen de tekst worden toegevoegd.

Het Docbook XML-formaat heeft geen conventie voor inline-stijlen, dus als we HTML naar DocBook converteren, wordt al deze formattering weggegooid. Dan kunnen we Pandoc gebruiken om de DocBook te converteren terug naar HTML, en we krijgen een aardig stukje markup die je bijvoorbeeld kunt plakken in WordPress. In plaats van dit te doen met individuele oproepen naar Pandoc, brengt het volgende script hen samen om:

  1. Converteer het geëxporteerde HTML-bestand naar DocBook, zonder inline-stijlen (vóór de pipe)
  2. Converteer de DocBook terug naar wat nu mooie, schone HTML-opmaak is (na de pijp)
#! / bin / bash pandoc -w docbook $ 1 | pandoc -r docbook -w html -o $ 1 -

Uitleg over standaard invoer / uitvoer

Het bovenstaande maakt gebruik van de terminale concepten van “standaard invoer” en “standaard uitvoer.” Als u het eerste deel van de opdracht zou uitvoeren, krijgt u een hele reeks XML in de terminal. De reden waarom is dat we Pandoc geen andere output (zoals een bestand) hebben gegeven om te gebruiken. Dus het gebruikt de enige terugval die het heeft: standaard output, in dit geval de terminal.

Aan de andere kant betekent het streepje aan het einde van het tweede Pandoc-commando dat het moet gebruiken “standaard invoer.” Op zichzelf uitgevoerd, zou je worden begroet met een prompt, waar de shell zou wachten tot je wat tekst zou bieden via de standaardinvoer, door op het toetsenbord te typen. Wanneer we ze combineren, kun je je bijna het eerste commando voorstellen dat een hoop XML uitspuugt naar de terminal waar het onmiddellijk in de tweede opdracht wordt ingevoerd als invoer.

Het resultaat is, als je dit hernoemt “clean-html.sh,” je kunt het uitvoeren op elk HTML-bestand om die vervelende stijlen te verwijderen. Het beste is dat Pandoc uit het bestand leest en het dan aan het einde overschrijft, wat betekent dat er geen tijdelijke bestanden zijn.

3. Programma's uitvoeren op meerdere HTML-bestanden

In sommige programma's kunt u opgeven wildcards zoals de asterisk op de opdrachtregel. Hiermee kunt u bijvoorbeeld alle JPG-afbeeldingen verplaatsen naar uw “Afbeeldingen” map:

mv * .jpg ~ / Afbeeldingen

Maar andere programma's nemen slechts één bestand per keer als invoer en Pandoc is daar een van. Dus wat gebeurt er als we een hele map vol geëxporteerde HTML-bestanden hebben en we willen de HTML-opmaak opruimen? Moeten we onze “clean-html.sh” script op elk van hen handmatig?

Nee, omdat we geen nieuwelingen zijn. We kunnen ons piped-commando in a inpakken “for-each” lus. Dit gaat beurtelings naar elk HTML-bestand in de huidige map en voert de opschoning uit. Laten we ook een klein bericht toevoegen via de echo verklaring om ons te laten weten dat alle bestanden zijn behandeld:

voor bestandsnaam in ./*.html doe pandoc -w docbook $ 1 | pando -r docbook -w html -o $ 1 - echo "Werken aan $ 1 ... HTML is schoon!" gedaan

Nu, als je een map hebt vol met “vuil” HTML, je kunt dit script erop uitvoeren en eindigen met wat sprankelende HTML-opmaak.

Waar te gaan vanaf hier

Als je graag aan het sleutelen bent, hou je van shell scripting, omdat er altijd iets aan moet worden gedaan. Enkele ideeën over het gebruik van deze patronen als basis voor andere scripts zijn de volgende:

  • Ondersteuning toevoegen voor conversie rechtstreeks vanuit het tekstverwerkingsbestand, aangezien Pandoc ODT- en DOCX-invoer ondersteunt (d.w.z. de ketting wordt ODT / DOCX> DocBook XML> HTML).
  • Combinatie van beide HTML-opschoonprogramma's in één, zodanig dat als een bestand wordt geleverd, dat wordt gereinigd, anders worden alle items in de huidige map automatisch opgeschoond (toevoegingen aan opdrachtregelargumenten Een beknopte handleiding Aan de slag met de Linux-opdrachtregel Een beknopte handleiding Gestart met de Linux-opdrachtregel Je kunt veel geweldige dingen doen met opdrachten in Linux en het is echt niet moeilijk om te leren. Meer lezen).
  • Geef de gebruiker aanvullende exportopties zoals PDF (voegt keuzes toe op basis van invoer, via if-then of case statements).

Zoals je ziet, kun je met shell-scripts dingen beetje bij beetje bouwen, ze testen op het juiste moment en ze aan je scripts kleven terwijl je gaat.

Wat denk je, lijkt shell scripting nu een beetje minder intimiderend? Ben je klaar om je saaie taken te automatiseren? Als u besluit in te duiken, laat ons dan weten hoe dit in de opmerkingen hieronder wordt weergegeven!

Ontdek meer over: HTML, scripting.