Tag: Shell Script

Shell Script 檢查檔案或目錄是否存在

寫程式時很多時候需要檢查檔案或目錄是否存在, 在 Shell Script 檢查檔案及目錄是否存在, 可以在 if 條件判斷式裡面加上 -e 或 -d 實現, 以下是具體寫法: 檢查檔案是否存在: 上面的 if 判斷式也可以用一行來實現: 檢查目錄是否存在: 用一行來實現上面的程式碼: 其中一個十分實用的例子, 是檢查檔案或目錄是否存在, 如果不存在就便宜檔案或目錄: This is the best practice to check …

Shell Script 檢查檔案是否有指定字串

在 Linux CLI 下可以用 grep 指令, 將檔案包含有指定字串的行印出, 或者配合 -c 參數直接印出匹配的行數, 例如: $ grep -c string filename.txt 如果在 Shell Script 要檢查檔案是否有指定字串, 當然可以檢查以上指令輸出的數值, 但另一個更方便的方法, 是用 grep 的 -q 參數, 具體寫法是這樣: grep …

touch – 修改檔案時間戳記及建立新檔

touch 指令可以建立空白的新檔案, 改變現有檔案及目錄的戳記, 以下是 touch 指令的用法。 linux-touch-command 在介紹 touch 指令的用法前, 首先講一下 Linux 的檔案的 3 種時間戳記: atime (access time) -> 檔案最後被開啟、讀取或存取的時間。 mtime (modify time) -> 檔案最後被修改的時間。 ctime (change time) -> …

crontab 開機自動執行指令

一般上設定開機自動執行指令, 可以編輯 /etc/rc.local 檔案, 而除了編輯 /etc/rc.local 外, 也可以用 crontab 完成。 crontab 是十分好用的排程自動執行工具, 它指定執行時間間隔十分靈活, 其中一個做法是用 @reboot 參數, 設定成每次開機自動執行。 首先開啟 crontab: # crontab -e 加入以下一行: 以上一行設定開機後等待 1 分鐘 (60 秒), 自動執行 …

MySQL / MariaDB 重新命名資料庫

以前 MySQL 的 “RENAME DATABASE” 指令, 已經在 5.1.23 後的版本刪除, 原因是重新命名資料庫時存在資料遺失的風險。 以下示範用 “RENAME TABLE” 指令及 mysqldump 指令, 替資料庫重新命名的方法: RENAME TABLE 這個方法適合資料庫比較大的情況, 但缺點是需要對每個資料表逐一執行。 先建立一個空白的資料庫, 名稱用要變更的資料庫名稱, 以下假設舊資料庫是 oldname; 新資料庫是 newname: 然後把資料表逐一用 RENAME …

Linux 限制指令執行時間

timeout 指令可以在 Linux 下限制一個指令的執行時間, 當超出指定的時間後, 便自動終止執行. 例如想限制一個指令的執行時間在 10 秒, 當超過 10 秒便自動將它 kill 掉: $ timeout 10 tail -f /var/log/httpd/access.log timeout 的預設時間單位是秒, 上面的 10 沒有指定單位, 預設代表 10 秒, 以下時間單位的寫法: …

rename 指令 – 批次大量修改檔案名稱

在 Linux 要修改檔案名稱, 可以用 mv 指令, 但如果要重新命名的檔案很多, 用 mv 逐一修改會很痛苦, 也增加出錯的機會。而 rename 指令則可以批次大量修改檔案名稱。 例如我想將所有 .jpeg 結尾的圖片, 改變副檔名成 .jpg, 可以用以下指令: $ rename ‘s/.jpeg/.jpg/’ * 以上指令會將當前目錄下, 所有 .jpeg 結尾的檔案, 改名成 .jpg …

Python 字串搜尋並取代

寫程式很多時都需要做字串搜尋並取代, 在 Python 內很簡單, 只要用內建的 replace 方法便可實現。 語法 以下是 replace() 的語法: 參數: old − 原來字串, 找出並用新字串取代. new − 替換字串, 替換在原來字串內. max − 如果有定義 max 參數, 只會取代最初出現的 “max” 次數的字串. 例子: …

Shell Script 檢查網路連線

Linux 下要檢查網路連線的工具有很多, 以下是用 Shell Script 檢查網路連線的方法。 最簡單的方法是用 ping 指令, 嘗試 ping google.com, 這樣除了測試網路連線外, 也一同測試 DNS: 執行上面的 Shell Script 後, 當網路連線及 DNS 正常, 會輸出 “Network is up”; 不正常敗會輸出 “Network is …