Исправьте форматирование HTML с помощью простых сценариев оболочки

Если вы часто пишете HTML в редакторе, а затем вставляете его в WordPress, вы заметите, что иногда раздражают теги форматирования (например,

Это отличное место для начала программирования именно по этой причине: легко собрать что-то в пару строк кода, что сэкономит вам много времени. Давайте посмотрим на пару рецептов или «шаблонов», которые вы можете использовать в собственных сценариях.

Почему Shell Scripting?

Во-первых, давайте начнем с определения «сценариев оболочки» как написания сценариев для запуска в оболочке Bash. С технической точки зрения, другие языки сценариев, такие как Powershell, также можно назвать «сценариями оболочки». Но зачем прежде всего сосредотачиваться на сценариях оболочки, в частности на сценариях Bash?

  • С появлением подсистемы Windows для Linux оболочка Bash теперь совместима со всеми основными платформами ПК.

    , (Он также включен в macOS и почти во всех дистрибутивах Linux из коробки). Он даже доступен на телефонах Android с Termux

    бесплатно и с открытым исходным кодом скачать из Google Play.

  • Сценарии оболочки позволяют вам сосредоточиться на основах программирования, потому что самые тяжелые действия выполняются с помощью команд, которые вы включите. Предположим, вы хотите сжать некоторые файлы в традиционном настольном приложении, написанном на C. Вам либо нужно написать небольшой код, чтобы использовать совместимую библиотеку программного обеспечения.

    что сделает работу, или напишет много кода с нуля, чтобы на самом деле сделать сжатие. В сценарии оболочки все, что вам нужно сделать, это запустить деготь команда на нужные файлы.

  • Вы можете развиваться небольшими шагами, в интерактивном режиме. Чтобы продолжить приведенный выше пример, допустим, вы решили, что будете использовать деготь чтобы сделать сжатие, но вы еще не уверены, какой из его вариантов вы хотите. Просто поэкспериментируйте с ним, пока не получите желаемый результат, затем скопируйте / вставьте команду, которую вы использовали, в свой скрипт.

Учитывая вышесказанное, вот несколько идей для полезных сценариев оболочки, которые вы можете объединить с помощью всего лишь нескольких строк кода. Мы создадим пару сценариев, чтобы расширить и без того значительные возможности утилиты преобразования Pandoc.

,

1. Сбор длинных списков параметров

Самый простой и простой способ использовать сценарий оболочки — это ярлык для существующей команды. Некоторые программы командной строки имеют массу флагов, и их синтаксис не всегда понятен. Но вы можете взять одну из этих команд со всеми ее сложными параметрами и добавить их в сценарий оболочки с именем, которое легче ввести. Рассмотрим следующую команду, которая запускает Pandoc для файла Markdown и создает файл ODT, используя файл шаблона:

pandoc -r markdown -w odt --reference-odt=/path/to/folder/containing/mscript-template.odt -o manuscript.odt manuscript.md

Я использую Pandoc на ежедневной основе, поскольку я пишу все в легкой разметке, как Markdown

и Asciidoc

, И все же при конвертации в ODT я набираю «odt-reference» вместо «reference-odt». Every. Не замужем. Время. Кроме того, путь к шаблону не будет автоматически заполняться, как большинство команд оболочки. Создание простого скрипта может сохранить все эти ошибки:

#! /bin/bash
pandoc -r docbook -w odt --reference-odt=/path/to/folder/containing/mscript-template.odt -o $1.odt $1

Первая строка скрипта указывает системе использовать оболочку Bash для ее запуска. Следующий принимает первый аргумент в командной строке ($ 1) и запускает Pandoc с набором флагов на нем. Стоит отметить, что есть и другие способы сделать это, например, использовать псевдоним команда в Unix-системах. Но создание небольших сценариев оболочки означает, что вы можете держать их под рукой (например, в папке ~ / bin), быстро копировать (или синхронизировать) их в другом месте и изменять их в любом текстовом редакторе. Сохраните ваш скрипт с именем файла, которое легко запомнить и напечатать (например, «markdown2odt.sh»). Не забудьте дать ему исполняемые разрешения

,

2. Трубопровод вывода для очистки HTML форматирования

Соединение двух команд терминала с символом канала («|») приводит к тому, что выходные данные первого используются в качестве входных данных второго. (Если вы никогда не видели этого раньше, ознакомьтесь с нашим кратким руководством по командной строке

.) Но, чтобы ввести два команды в правильном порядке, с правильными параметрами, только усугубляет проблему, которую мы только что обсудили. Заключение этой двойной команды в сценарий оболочки делает ее намного более удобной.

Один из приемов, которые я использую с Pandoc, — это «очистить» форматирование HTML или удалить все встроенные стили

, Если вы когда-нибудь пытались экспортировать документ текстового процессора в HTML, вы можете увидеть множество стилей (пролет теги), которые добавляются в текст и между ними.

грязное HTML-форматирование

Формат Docbook XML не имеет соглашения для встроенных стилей, поэтому, если мы конвертируем HTML в DocBook, все это форматирование прекращается. Тогда мы можем использовать Pandoc для конвертации DocBook назад в HTML, и мы получаем хорошую разметку, которую вы можете (например) вставить в WordPress. Вместо того, чтобы делать это с отдельными вызовами Pandoc, следующий скрипт объединяет их в цепочку:

  1. Конвертируйте экспортированный HTML-файл в DocBook, который не имеет встроенных стилей (до конвейера)
  2. Преобразование DocBook обратно в то, что теперь приятно, чистое форматирование HTML (после конвейера)
#! /bin/bash
pandoc -w docbook $1 | pandoc -r docbook -w html -o $1 -

чистое форматирование HTML

Объясняя стандартный ввод / вывод

Выше используются преимущества терминальных понятий «стандартный ввод» и «стандартный вывод». Если бы вы выполнили первую часть команды, вы получили бы целую кучу XML, показанную в терминале. Причина в том, что мы не дали Pandoc какой-либо другой вывод (например, файл) для использования. Таким образом, он использует единственный запасной вариант: стандартный вывод, в данном случае терминал.

С другой стороны, символ тире в конце второй команды Pandoc означает, что он должен использовать «стандартный ввод». Запустите сам, вы увидите приглашение, где оболочка будет ждать, пока вы предоставите некоторый текст через это ввод по умолчанию, набрав на клавиатуре. Когда мы объединяем их, вы можете почти вообразить, как первая команда выплевывает кучу XML в терминал, где она немедленно передается во вторую команду в качестве ввода.

В результате, если вы переименуете его в «clean-html.sh», вы можете запустить его в любом HTML-файле, чтобы избавиться от этих надоедливых стилей. Самое приятное то, что Pandoc будет читать из файла, а затем перезаписывать его в конце, что означает отсутствие временных файлов.

3. Запуск программ на нескольких файлах HTML

Некоторые программы позволяют указать подстановочные такие как звездочка в командной строке. Это позволяет, например, переместить все изображения JPG в папку «Изображения»:

mv *.jpg ~/Pictures

Но другие программы принимают только один файл за один раз, и Pandoc является одним из них. Так что же происходит, когда у нас есть целый каталог, полный экспортированных файлов HTML, и мы хотим очистить форматирование HTML? Нужно ли запускать скрипт «clean-html.sh» для каждого из них вручную?

Нет, потому что мы не новички. Мы можем заключить нашу конвейерную команду в цикл «для каждого». Это по очереди перейдет к каждому HTML-файлу в текущем каталоге и выполнит чистую операцию с ним. Давайте также добавим небольшое сообщение через эхо заявление, чтобы сообщить нам все файлы были позаботились о:

for filename in ./*.html
do
pandoc -w docbook $1 | pandoc -r docbook -w html -o $1 -
echo "Working on $1... HTML is clean!"
done

Теперь, если у вас есть папка, заполненная «грязным» HTML, вы можете запустить на нем этот скрипт и в конечном итоге получить блестящее чистое форматирование HTML.

очистить несколько файлов HTML

Куда пойти отсюда

Если вам нравится возиться, вы полюбите сценарии оболочки, потому что всегда нужно выполнить настройку. Некоторые идеи о том, как использовать эти шаблоны в качестве основы для других сценариев, включают следующее:

  • Добавлена ​​поддержка преобразования непосредственно из файла текстового процессора, поскольку Pandoc поддерживает ввод ODT и DOCX (т.е. цепочка становится ODT / DOCX> DocBook XML> HTML).
  • Объединение обоих средств очистки HTML в одно, так что если файл предоставлен, он очищает его, в противном случае он автоматически очищает все в текущем каталоге (добавляет обработку аргументов командной строки

    ).

  • Предоставьте пользователю дополнительные параметры экспорта, такие как PDF (добавляет варианты на основе ввода, с помощью операторов if-then или case).

Как вы можете видеть, с помощью сценариев оболочки вы можете создавать вещи постепенно, тестируя их по запросу и прикрепляя их к своим сценариям по ходу работы.

Что вы говорите, сценарии оболочки кажутся немного менее пугающими сейчас? Готовы ли вы попробовать свои силы в автоматизации ваших самых скучных задач? Если вы решили подключиться, дайте нам знать, как это происходит ниже в комментариях!

Ссылка на основную публикацию
Adblock
detector