\r\n\r\n

簡単なシェルスクリプトでhtmlの書式を修正する

エディタでhtmlを書いてwordpressに貼り付けると、たいてい煩わしいhtmlの書式が追加されます。簡単なシェルスクリプトを使えば、これをクリアすることができます...。

普段からエディタでHTMLを書き、それをWordPressに貼り付けていると、時々厄介な書式タグ(マークアップなど)が追加されていることに気づくでしょう。簡単なシェルスクリプトを使えば、いくつかの簡単なコマンドで、そのジャンクなHTMLフォーマットを自動的に削除することができます。

fix-html-shell-scripting

なぜシェルスクリプトを使うのか?プログラミングが初めての人は、小さなところから始めるのがよいでしょう。あきらめることが少なくなるだけでなく、立ち止まって学ぶ機会にもなります。とはいえ、最初に作ったプログラムは、たとえそれが非常にシンプルなものであっても、非常に有用なものになるはずです。

シェルスクリプトがコードを書き始めるのに最適な理由は、数行のコードで何かをまとめるのが簡単で、時間を大幅に短縮できることです。ここでは、いくつかのレシピ、つまり「パターン」を紹介し、自分のスクリプトに再調整できるようにします。

なぜシェルスクリプトを書くのか?

まず、「シェルスクリプト」、つまりbashshellで実行されるスクリプトを書くという定義から始めましょう。技術的には、Powershellなどの他のスクリプト言語も「シェルスクリプト」と呼ぶことができますが、そもそもなぜシェルスクリプト、特にBashスクリプトに注目するのでしょうか。

  • LinuxのWindowsサブシステムの導入により、bashshellは主要なPCプラットフォームに対応するようになりました。(macOSやほとんどのLinuxディストリビューションにも含まれています。) Android**でもTermuxを使用することができ、googleplayから無料でオープンソースをダウンロードすることができます。
  • シェルスクリプトでは、最も重要な作業は付属のコマンドで行うため、プログラミングの基礎に集中することができます。C言語で書かれた従来のデスクトップアプリケーションで、あるファイルを圧縮したいとします。この場合、互換性のあるソフトウェアライブラリを使用して作業を行うコードを少し書くか、実際に圧縮を行うために多くのコードを一から書く必要があります。シェルスクリプトで、目的のファイルに対してtarコマンドを実行するだけです。
  • 小さな一歩ずつ、インタラクティブに発展させていくことができます。上記の例の続きで、圧縮にtarを使うことに決めたが、どのオプションがいいのかまだわからないとします。プロンプトで希望する結果が得られるまで使用し、使用したコマンドをスクリプトにコピー&ペーストするだけです。

以上のことを踏まえて、数行のコードで組める便利なシェルスクリプトのアイデアを紹介します。Pandoc変換ユーティリティのすでにかなり強力な機能を強化するために、いくつかのスクリプトを構築する予定です。

1 コレクションパラメータの長いリスト

シェルスクリプトの最も簡単で分かりやすい使い方は、既存のコマンドのショートカットとして使用することです。コマンドライン・プログラムの中には、多数のフラグを持ち、その構文が必ずしも明確でないものがあります。しかし、これらのコマンドの一つを、その複雑なオプションをすべて使って、入力しやすい名前のシェルスクリプトにすることができる。マーカーファイル上でPandocを実行し、テンプレートファイルを使ってODTファイルを作成する次のようなコマンドを考えてみましょう。

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

私はMarkdownやascidocのような軽量なマークアップですべてを書いているので、Pandocを毎日使っています。しかし、ODTに変換する際、「参照ODT」ではなく、「ODT参照」と入力してしまいます。シングルス時間です。また、多くのシェルコマンドのように、テンプレートへのパスが自動的に行われることはありません。簡単なスクリプトを作成することで、不正な入力をすべて回避することができます。

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

スクリプトの最初の行は、bashshellを使用して実行するようにシステムに指示します。次のものは、コマンドラインの最初の引数 ($1) を受け取り、フラグのセットで Pandoc を実行します。これを行うには、Unix システムで alias コマンドを使用するなど、他の方法があることは知っておくべきです。しかし、**小さなシェルスクリプトは、手近に置いておくことができ(例えば、~/bin フォルダ)、他の場所に素早くコピー(または同期)し、任意のテキストエディターを使って変更することができます。スクリプトを覚えやすく、入力しやすいファイル名で保存します(例:「markdown2odt.sh company」)。実行可能なパーミッションを与えることを忘れないでください。

2パイプライン出力でhtml形式をクリアにする

2つのターミナルコマンドをパイプ("|")文字で結合すると、最初のコマンドの出力が2番目のコマンドの入力として使用されることになります。(初めてご覧になる方は、コマンドラインのクイックガイドをご覧ください)。しかし、2つのコマンドを正しい順序で、正しい引数で入力しなければならないのは、先ほど説明した問題を複雑にするだけです。この二重のコマンドをシェルスクリプトで包むと、より簡単になります。

私がPandocで使っているトリックのひとつに、HTMLフォーマットを「クリーン」にする、つまりインラインスタイルをすべて削除する、というものがあります。ワープロ文書をHTMLに書き出してみると、テキストにスタイル(spanタグ)がたくさん追加されているのを見たことがあるはずです。

messy html formatting

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 -。
clean html formatting

標準入出力の解釈

その理由は、Pandocに他の出力(例えば、ファイル)を与えていないからです。を使用します。そこで、唯一のバックアップとして、標準出力(この場合はターミナル)を使用します。

一方、2つ目のPandocコマンドの末尾にあるダッシュは、「標準入力」を使用することを意味しています。単独で実行した場合、プロンプトが表示され、シェルはキーボードからデフォルトの入力で何かテキストを入力するのを待ちます。これらを組み合わせると、最初のコマンドがXMLの束をターミナルに出力し、すぐに2番目のコマンドを入力としてパイプインすることがほぼ想像できます。

その結果、「clean-html.shファイル」と名前を変えれば、どんなHTMLファイルでも実行でき、煩わしいスタイルを取り除くことができるのです。Pandocはファイルから読み込んで、最後に上書きするので、一時ファイルがばらばらにならないのが良いところです。

III.複数のhtmlファイルに対するプログラムの実行

プログラムによっては、コマンドラインでアスタリスクなどのワイルドカードを指定することができます。例えば、この場合、すべてのJPG画像を「ピクチャ」フォルダに移動させることができます。

mv *.jpg ~/Pictures

しかし、一度に1つのファイルしか入力として受け付けないプログラムもあり、Pandocはその1つです。では、エクスポートされたHTMLファイルがディレクトリいっぱいにあって、HTMLフォーマットをクリーンアップしたい場合はどうすればいいのでしょうか?-html.shファイルを "クリーニング "して、各スクリプトを手動で記述する必要があるのでしょうか?

いいえ、私たちは新参者ではありませんから。パイプコマンドを "for each "ループでくくることができる。これは、カレントディレクトリの各HTMLファイルに順番にアクセスして、そのファイルに対してクリーンオペレーションを実行するものです。また、すべてのファイルが処理されたことを知らせるために、echoステートメントでメッセージを追加することもできます。

for filename in ./*.html
為さる
pandoc -w docbook $1 | pandoc -r docbook -w html -o $1 -。
echo "1ドルで作業中...HTMLはきれいです!"
ダン

このスクリプトを実行すると、非常にきれいなHTML書式が完成します。

clean multiple html files

これからの方向性

シェルスクリプトは、常に微調整が可能なため、いじり好きな人にはお勧めです。これらのパターンを他のスクリプトのベースとして使用する方法として、以下のようなアイデアがあります。

  • PandocがODTとDOCXの両方の入力をサポートしているので、ワープロファイルからの直接変換のサポートを追加しました(つまり、チェーンはODT/DOCX>DocBook XML>HTMLになります)。
  • 2 つの HTML クリーナーを 1 つにまとめ、ファイルが提供された場合はそのファイルを、そうでない場合はカレントディレクトリのすべてを自動的にクリーニングするようにします (コマンドライン引数を処理する機能が追加されました)。
  • PDFなどの追加エクスポートオプションをユーザーに提供する(if-thenやcase文による入力に基づいたオプションを追加する)。

このように、シェルスクリプトを使えば、少しずつ構築し、プロンプトでテストし、実行時にスクリプトに修正することができるのです。

どうです、シェルスクリプトがそれほど怖くなくなったでしょう?面倒な作業を自動化する準備はできましたか?参加される方は、下のコメント欄でお知らせください。

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ