Tag: Shell Script

Shell Script 字串搜尋並取代

寫程式很多時都需要做字串搜尋並取代, 在 Shell Script 內可以使用各種工具完作, 以下是 Shell Script 做字串搜尋取代的方法。搜尋取代變數的字串: 上面的程式, 第 3 行定義變數 str 的值是 abc, 而第 5 行則設定將變數 str 內的 abc 替換成 xyz.如果不是替換變數的字串, 是要替換檔案的字串, 可以用 sed 完成, 例如:以上 Shell …

RHEL / CentOS 設定 Logrotate 實現記錄檔輪替

在 Linux 如果用套件管理工具 (例如 yum, dnf, apt-get) 安裝套件, 一般會設定好 logrotate 做記錄檔輪替, 但如果套件是自行編譯安裝, 或者是自行開發的系統 (例如 Shell Script), 除了可以自行編譯記錄檔輸替的功能外, 也可以用 Logrotate 實現。Logrotate 的設定檔是 /etc/logrotate.conf, 用作設定 Logrotate 的預設參數, 而 /etc/logrotate.d/ 目錄下建立需要輪替的記錄檔, 每項服務一個檔案, 這樣對日後維護及管理也會較方便。我的 …

Linux find 指令的 exec 參數

Linux 下找檔案很多時會用上 find 指令,當用 find 指令找到檔案或目錄後,可以在後面加上 -exec 參數,來對每一個找到的檔案或目錄執行特定指令。find 指令加上 -exec 參數的具體語法是這樣: $ find /path/to -name “filename” -exec command {} \; 在 -exec 前面是 find 指令找出想要的檔案,在 -exec 後面的 command 是要執行的指令, 而 …

vi / vim 搜尋並取代字串

不管系統管理還是寫程式,在檔案內對字串進行搜尋並取代十分常用,在 Unix Like 環境下常會用 sed 或 perl 做 search & replace.如果在開啟檔案後需要取代字串,其實在 vi 及 vim 內同樣可以做搜查及取代字串,做法跟 sed 差不多,以下是 vi 做搜尋及取代的語法: :%s/search_from/replace_to/g 以上 vi 的語法會將檔案內,所有 “search_from” 的字串替換成 “replace_to”。將上面指令最後加上一個 “c” 字元,可以在取代前,向使用者確認: :%s/search_from/replace_to/gc 除了可以替換輸入的字串,更可以設定搜尋時,略過英文大小寫的差異,以下對 …

用 SSH 在遠端主機執行指令

當需要在兩台主機間執行指令,可以用 SSH 直接傳送要執行的指令,該遠端主機直接執行,而無需登入另一台主機。以下是具體指令的語法:上面的 “user” 是登入帳號的使用者名稱,remote.server 是遠端主機,而 “ls -l” 是要執行的指令。當執行以上指令後,如果系統沒有設定自動免密碼登入,會詢問遠端主機的密碼,輸入密碼後會在遠端執行指令,並輸出執行結果。如果要同時執行多個指令,可以用 “;” 或 “&&” 分隔,例如:或如果需要用 Shell Script 執行遠端指令,當需要在指令加入變數,需要將上面的單引號,改成雙引號,例如:最後是執行類似 top 這類互動模式的指令,只要加入 -t 選項即可:除了 top 後,也可以用在 vi 等文字編輯器。

Shell Script 將數值補零

很多時在寫程式時, 需要將一些數值補零, 例如 1 顯示為 001, 以下是 Shell Script 的實現方法:Shell Script 的 printf 函式已經可以做到自動補零, 例如想將 8 顯示為 “008”, 可以這樣寫:除了在數值的前面補零外, 也有一種情況是在小數點補零, 例如數值 “8” 是整數, 但也要強制顯示小數點後一個位, 可以這樣寫:如果想將上面的結果放到變數, 可以這樣寫:上面的程式碼將原來的 $NUM 變數補零, 再放在 $ZERO_NUM …

Shell Script 遇到錯誤時自動退出離開

Shell Script 裡面的指令, 如果沒有用條件控制 (例如 if), 不管之前的指令執行結果如何, 每個指令也會逐一執行, 例如:上面的程式碼很簡單, 只是用 cd 指令轉換到 /path/dir 目錄, 然後執行 rm 指令, 將所有 .txt 結尾的檔案刪除。但如果執行 cd 指令的時出錯, 例如 /path/dir 目錄不存在, 或者沒有權限進入, 那便會在當前目錄刪除所有 .txt 副檔名的檔案。解決方法十分簡單, 只要加上 …

Shell Script 檢查變數字串長度

在 Shell Script 讀取輸入時, 很多時需要按字串的長度作出不同的處理, 而 Shell Scrit 檢查變數的字串長度十分簡單, 寫法如下:上面的程式碼會檢查用戶輸入的變數 “string”, 然後檢查 string 變數的長度, 如果字串長度大過 10, 會顯示 “Error!”, 並結束程式執行; 如果變數的字串長度等如或小於 10, 會繼續執行。

Shell Script 取得 Script 所在目錄位置

當寫 Shell Script 時, 很多時需要取得 Shell Script 本身的目錄位置, 以下教學是在 Shell Script 取得目錄位置的寫法。在 Shell Script 的 $0 變數代表指令的第一個參數, 即 Shell Script 本身, 例如 Shell Script 是 “/root/test.sh”: #!/usr/bin/sh echo $0 執行時會返回: …