Tag: Perl

Shell Script 使用 #!/usr/bin/env

在 Shell Script 的第一行稱為 shebang, shebang 由 “#!” 開頭, 並在後面加上解譯器的絕對路徑, 即類似: #!/bin/sh #!/bin/bash #!/usr/bin/perl #!/usr/bin/python 如果 Shell Script 不同的平台執行, 指定的解譯器可能位置有所不同, 如果想增加 Shell Script 在不同 Unix Like 環璄的可流動性, 可以使用 /usr/bin/env …

vim 把 Tab 轉換為 4 Space

以前習慣用 Tab 來做縮排,在用 Sublime Text 沒什麼關係,Tab 跟 4 個空格的長度一致,但近年經常用 vim 直接在 CLI 寫程式,當程式需要多層判斷式或迴圈時,很多時在終端機會看得很辛苦,因為在 vim 顯示 Tab 會比 4 個空格的距離還長。 所以還是用 4 個空格取代 Tab 較方便,以下是在 vim 及 Sublime Text 按下 …

防止 Shell Script 重複執行

Shell Script 對日常系統維護很實用,對於多用戶系統,Shell Script 經常面對一個問題是重複執行,即一個 Shell Script 正在執行時,避免另一個使用者執行。另一個情況是,當 Shell Script 變得複雜及龐大時,放到 crontab 定時執行時 (例如每分鐘執行一次),Shell Script 還未完成上次的執行,就重複自動執行一次。 要防止 Shell Script 重複執行,一般上會用 lock file 及 PID 的方法,不論是 lock file 還是 PID,除了用 …

閏年計算公式

一般講法是每四年就有一年是閏年, 但這個講法只符合大部份的閏年, 有些年份還是不會每四年一閏的。 在求學時期學寫程式時, 就寫過這樣的程式, 很簡單檢查該年是否閏年, 而閏年的規則有 2 條: 1. 年份可以被 400 整除, 是閏年. 2. 年份不能被 100 整除, 但可以被 4 整除, 是閏年. 現在很多程式語言也不用測試上面的規則, 因為程式語言的開發者已經寫好, 例如 PHP 的 date() 函式, …

RHEL / CentOS 安裝 ImageMagick 及 Imagick

ImageMagick 是一套開源的圖片編輯工具, 可以建立、編輯、轉換格式、建立縮圖等。在 PHP 或 Perl 使用 ImageMagick 編輯圖片十分好用, 而 PHP 的 Imagick 是透過 ImageMagick API 建立及編輯圖片的模組, 以下會示範在 RHEL 及 CentOS 安裝 ImageMagick, PHP 的 Imagick 模組以及 Perl 的 …

刪除 Postfix Queue 內郵件

Postfix 跟其他 MTA 一樣, 會將不能成功發送的郵件放到 Queue 裡面, 在特定的時間內重新嘗試發送, 超過指定的時間會自動刪除。但如果發送大量郵件, 例如有用戶發送大量垃圾電郵, 會在 Queue 內積壓大量的郵件, 這時可以手動刪除。 以下刪除 Postfix Queue 內郵件的方法: 列出 Postfix Queue 內所有郵件: # mailq 刪除 Postfix Queue 內所有郵件: # …

Perl 印出顏色文字

在寫 Perl Script 時通常我會將錯誤訊息用紅色顯示, Warning 用黃色, 執行正確用錄色, 看似沒什麼用, 但其實很方便, 不用細心看輸出內容就可以知道有沒有錯誤。在另一篇文章 Shell Script 輸出顏色文字 介紹了在 Shell Script 輸出顏色文字的方法, 但這個方法並不好記, 因為顏色碼是數字, 通常用過就會忘記。 Perl 要印出顏色文字同樣可以用上面提及的顏色碼, 但另一個更方便的做法是用內建的 ANSIColor 模組, 用 ANSIColor 的好處是不用記顏色碼, 直接用顏色的英文名稱即可, …

Perl 讀入管線 (pipe) 輸入

Linux 下的管線 (pipe) 很實用,可以將多個指令一同執行,如果在 Perl Script 想讀取 pipe 輸入,可以用 符號,這樣就可以將 Perl Script 寫到像 Linux 下的指令那樣運作,寫法也十分簡單,就這樣: testing.pl 以上程式碼會讀入 pipe 輸入,然後逐行印出,在指令模式這樣做: cat /etc/fstab | testing.pl 上面的指令將 cat /etc/fstab 的輸出導入到 testing.pl。