使用簡單的shell指令碼修復html格式

如果在編輯器中編寫HTML並貼上到WordPress中,通常會新增惱人的HTML格式。使用簡單的shell指令碼,您可以清除這些內容。...

如果您經常在編輯器中編寫HTML,然後粘貼到WordPress中,您會注意到有時會添加惱人的格式標記(如標記)。使用簡單的shell腳本,您可以通過幾個簡單的命令自動清除那些垃圾HTML格式。

fix-html-shell-scripting

為什麼使用shell腳本?如果你是編程新手,從小事做起會更好。不僅你不太可能放棄,而且你還有機會停下來學習。也就是說,你的第一個程序可以非常有用,即使它們也非常簡單。

Shell腳本是一個很好的開始編寫代碼的地方,原因很明確:很容易在幾行代碼中組合一些東西,這將為您節省大量時間。讓我們來看看幾個食譜,或“模式”,你可以重新調整到自己的腳本。

為什麼要編寫shell腳本?

首先,讓我們從定義“shell腳本”開始,即編寫要在bashshell中運行的腳本。從技術上講,Powershell等其他腳本語言也可以被稱為“shell腳本”,但為什麼首先要關注shell腳本,特別是Bash腳本呢?

  • 隨著Linux的Windows子系統的引入,bashshell現在可以兼容所有主要的PC平臺。(它也包括在macOS和幾乎所有的Linux發行版中),甚至可以在Android**上使用Termux,這是googleplay提供的免費開源下載。
  • Shell腳本使您能夠專注於編程基礎知識,因為最重要的工作是通過包含的命令來完成的。假設您想在用C編寫的傳統桌面應用程序中壓縮一些文件,您要麼需要編寫一點代碼來使用兼容的軟件庫來完成這項工作,要麼從頭開始編寫大量代碼來真正完成壓縮。在shell腳本中,只需對所需的文件運行tar命令。
  • 你可以用互動的方式,一小步一小步地發展。為了繼續上面的例子,假設您已經決定使用tar來進行壓縮,但是您還不確定您想要哪個選項。只需在提示符處使用它,直到得到所需的結果,然後將使用的命令複製/粘貼到腳本中。

考慮到上面的內容,這裡有一些有用的shell腳本的想法,您只需幾行代碼就可以將它們組合在一起。我們將構建幾個腳本來增強Pandoc轉換實用程序已經相當強大的功能。

1收集參數的長列表

使用shell腳本最簡單、最直接的方法是作為現有命令的快捷方式。一些命令行程序有大量的標誌,它們的語法並不總是清晰的。但是您可以使用這些命令中的一個,以及所有複雜的選項,並將它們放入一個具有更易於輸入的名稱的shell腳本中。考慮以下命令,該命令在標記文件上運行Pandoc,並使用模板文件創建ODT文件:

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

我每天都使用Pandoc,因為我用Markdown和ascidoc等輕量級標記編寫所有內容。然而,當轉換到ODT時,我鍵入“ODT reference”而不是“reference ODT”。單身。時間。另外,模板的路徑不會像大多數shell命令那樣自動完成。創建一個簡單的腳本可以避免所有的錯誤輸入:

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

腳本的第一行指示系統使用bashshell來運行它。下一個在命令行中接受第一個參數($1),並運行帶有一組標誌的Pandoc。值得注意的是,還有其他方法可以做到這一點,例如在Unix系統上使用alias命令。但是**小型shell腳本意味著您可以將它們放在手邊(例如在~/bin文件夾中),快速地將它們複製(或同步)到其他地方,並使用任何文本編輯器更改它們。使用易於記憶和鍵入的文件名保存腳本(例如“markdown2odt.sh公司"). 別忘了給它可執行權限。

2管道輸出以清除html格式

用管道(“|”)字符連接兩個終端命令會導致第一個命令的輸出用作第二個命令的輸入。(如果您以前從未見過這種情況,請查看我們的命令行快速指南。)但是,必須以正確的順序鍵入兩個命令,並使用正確的參數,只會使我們剛才討論的問題更加複雜。將這個雙重命令包裝到shell腳本中,使其更加方便。

我使用Pandoc的一個技巧是“清除”HTML格式,或者刪除所有內聯樣式。如果您曾經嘗試過將字處理器文檔導出為HTML,您會看到在文本中添加了大量樣式(span標記)。

messy html formatting

Docbook XML格式沒有內聯樣式的約定,因此如果我們將HTML轉換為Docbook,所有這些格式都會被丟棄。然後我們可以使用Pandoc將DocBook轉換回HTML,然後我們得到一個很好的標記,您可以(例如)粘貼到WordPress中。下面的腳本將它們鏈接到一起,而不是單獨調用Pandoc:

  1. 將導出的HTML文件轉換為DocBook,它沒有內聯樣式(在管道之前)
  2. 將DocBook轉換回現在漂亮、乾淨的HTML格式(在管道之後)
#! /bin/bashpandoc -w docbook $1 | pandoc -r docbook -w html -o $1 -

clean html formatting

解釋標準輸入/輸出

上面利用了“標準輸入”和“標準輸出”的終端概念,如果您運行命令的第一部分,您將在終端中看到一大堆XML。原因是我們沒有給Pandoc任何其他輸出(比如一個文件)來使用。所以它使用的是唯一的後援:標準輸出,在這裡是終端。

另一方面,第二個Pandoc命令末尾的破折號意味著它應該使用“標準輸入”。如果它自己運行,您將收到一個提示,shell將等待您通過它的默認輸入,通過鍵盤輸入一些文本。當我們將它們結合起來時,您幾乎可以想象第一個命令將一堆XML輸出到終端,然後立即通過管道輸入第二個命令作為輸入。

結果是,如果您將其重命名為“clean-html.sh文件,“您可以在任何HTML文件上運行它,以擺脫那些煩人的樣式。最好的部分是Pandoc將從文件中讀取,然後在最後覆蓋它,這意味著沒有散亂的臨時文件。

三。在多個html文件上運行程序

有些程序允許您在命令行中指定通配符,如星號。例如,這允許您將所有JPG圖像移動到“圖片”文件夾:

mv *.jpg ~/Pictures

但其他程序一次只接受一個文件作為輸入,Pandoc就是其中之一。那麼,當我們有一個完整的目錄,其中充滿了導出的HTML文件,我們想清理HTML格式時會發生什麼呢?我們需要進行“清潔”嗎-html.sh文件“手動編寫每個腳本?

不,因為我們不是新手。我們可以將管道命令包裝為“for each”循環。這將依次轉到當前目錄中的每個HTML文件,並對其執行清除操作。我們還可以通過echo語句添加一條消息,讓我們知道所有文件都已處理完畢:

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

現在,如果你有一個滿是“髒”HTML的文件夾,你可以在上面運行這個腳本,最後得到一些非常乾淨的HTML格式。

clean multiple html files

從這裡到哪裡去

如果你喜歡修修補補,你會喜歡shell腳本,因為總是有調整要做。關於如何使用這些模式作為其他腳本的基礎的一些想法包括:

  • 添加對直接從字處理器文件轉換的支持,因為Pandoc支持ODT和DOCX輸入(即鏈變成ODT/DOCX>DocBook XML>HTML)。
  • 將兩個HTML清理器合併為一個,這樣,如果提供了一個文件,它將清理該文件,否則它將自動清理當前目錄中的所有內容(添加了處理命令行參數的功能)。
  • 為用戶提供額外的導出選項,如PDF(通過if-then或case語句根據輸入添加選項)。

如您所見,使用shell腳本,您可以一次構建一點東西,在提示符處測試它們,並在運行時將它們固定到腳本上。

你怎麼說,shell腳本現在看起來沒有那麼嚇人了嗎?你準備好嘗試自動化你最枯燥的任務了嗎?如果你決定加入,請在下面的評論中告訴我們!

  • 發表於 2021-03-13 00:12
  • 閱讀 ( 49 )
  • 分類:程式設計

你可能感興趣的文章

5個web應用程式,以修復常見電子郵件煩惱

...重要。你需要知道如何寫電子郵件,就像你需要知道如何使用電子郵件一樣。 ...

  • 發佈於 2021-03-11 16:12
  • 閲讀 ( 47 )

什麼是cgi指令碼,它們如何改進網站?

... CGI在許多方面增強了網站。從對使用者進行身份驗證到提供全面的購物應用程式,CGIs是使web具有動態性和互動性的核心。下面是使用CGIs增強使用者體驗的一些主要好處。 ...

  • 發佈於 2021-03-13 08:17
  • 閲讀 ( 44 )

你應該使用12個很棒的html5模板

...經搜尋了網際網路,為您帶來了各種很酷的模板,您可以使用商業,個人,投資組合,和各種其他網站。就選一個開始吧! ...

  • 發佈於 2021-03-14 00:18
  • 閲讀 ( 53 )

頂級網站和書籍,讓您成為linux命令列英雄

一旦您切換到所選的Linux發行版並掌握了使用者介面,您應該很樂意繼續。但是如果你想要額外的功能呢?如果在幾個選單上單擊滑鼠並不能提供您所期望的超級使用者體驗,該怎麼辦? ...

  • 發佈於 2021-03-14 07:04
  • 閲讀 ( 60 )

VisualStudio程式碼是mac的完美文字和指令碼編輯器

... 如果您是一個必須使用Windows系統的系統管理員,也可以使用程式碼在Mac上編寫Powershell。開發人員可以找到支援幾乎任何語言的外掛。 ...

  • 發佈於 2021-03-14 07:11
  • 閲讀 ( 56 )

放棄cms並考慮靜態站點生成器的7個原因

許多年來,釋出一個網站是許多使用者無法企及的。HTML創作、託管帳戶和管理託管檔案的更新對於一般的非技術人員來說太多了。現在,使用者可以註冊Tumblr帳戶,並在幾分鐘內輸入他們的第一篇文章。 ...

  • 發佈於 2021-03-14 15:10
  • 閲讀 ( 56 )

在linux中如何方便地在文件格式之間轉換

...到的一個問題是檔案相容性。你總是會給其他作業系統的使用者傳送檔案,當他們在Word這樣的應用程式中開啟時,看起來就不一樣了。雖然您可以安裝字型或嘗試vm或模擬器,以確保外觀一致,但另一種方法是以純文字格式完成...

  • 發佈於 2021-03-14 18:46
  • 閲讀 ( 79 )

為什麼排版可能是你最喜歡的降價編輯的8個原因

...人都知道編寫好應用程式的重要性。沒有什麼比一個難以使用的複雜寫作軟體更能扼殺創造力了。 ...

  • 發佈於 2021-03-21 08:59
  • 閲讀 ( 49 )

如何使用applescript將bash指令碼轉換為可單擊的應用程式

...指令碼,完全解決了他們的問題,他們可能仍然擔心自己使用終端。在這種情況下,您不妨手動為它們執行所有操作。 ...

  • 發佈於 2021-03-21 09:39
  • 閲讀 ( 54 )

增強finder功能的8款最佳mac應用程式

...式。它退出那些應用程式,然後安全地彈出驅動器。如果使用外部驅動器進行備份,此工具可以使備份過程更輕鬆。 ...

  • 發佈於 2021-03-22 12:00
  • 閲讀 ( 51 )
筱詩馨雯
筱詩馨雯

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章