Tag: Shell Script
要在 Shell Script 修改系統密碼, 在 Linux 可以用 passwd 及 chpasswd 完成, 做法是用一行修改密碼的指令, 再放入 Shell Script, 它們的用法分別是: passwd passwd 的作用是修改密碼, 但一般用法是用互動模式修改, 以下是用 passwd 的 –stdin 參數, 讀入管線 (pipe) 輸入修改: 上面指令修改用戶 …
在 Shell Script 要讀入檔案內容,並一行一行地做處理,或者簡單一行一行印出內容,可以用 read 語法,具體做法是: read_line.sh 上面的 Shell Script 會讀入指令模式輸入的檔案,沒有做任何資料處理,只簡單地逐行印出內容。 使用上,上面 shell script 名為 read_line.sh, 要先給予可執行權限,在指令模式是這樣做: chmod +x read_line.sh ./read_line.sh /etc/passwd 上面就會將 /etc/passwd 傳送給 read_line.sh, 而 read_line.sh 則讀取其內容並逐行印出。雖然這樣看起來沒什麼用處,因為用 …
在 Shell Script 檢查檔案容量, 可以簡單用 stat 完成。 stat 指令的作用是輸出檔案資訊, 比 ls 更加詳細, 以下 shell script 寫法會用 -c 參數放到 stat, 讀取檔案大小: 上面的寫法可以配合 if 做一些判斷, 例如檔案過大等, 如果不需要做判斷, 而是想得出較可讀的檔案容量 (即包括如 K, M, …
在 Shell Script 檢查檔案及目錄是否存跟 Perl 很相似, 都是透過 -e 及 -d 在 if 裡面判斷, 寫法如下: 檢查目錄是否存在 檢查檔案是否存在
在 Shell Script 可以透過 ls 指令來檢查空目錄, 例如我想檢查 /home/user 目錄, 可以這樣做: 以上第 3 行用了 ls -A 指令, -A 選項可以將 ls 的輸出忽略 “.” 及 “..”。
在 shell script 裡面要檢查變數是否空白, 可以用 -n 或 -z 實現: -n 會檢查變數是否空白, 如果 不是 空白, 便會回傳 TRUE。而 -z 則剛剛相反, 如果變數 是 空白, 則會回傳 TRUE:
有時我們需要將檔案的 tabs 輚換成 space, 一個一個改絕對是對耐性的考驗, 在 Linux 下有一個工具 “expand”,它可以將檔案內所有 tabs 字元轉換為空白字元, 用法如下: $ expand input.file > output.file $ expand data.txt > output.txt $ expand -t 2 data.txt > output.txt …
在 Linux 及其他 Unix Like 作業系統與Windows 裡面所儲存的文字檔案,最大分別是換新一行的顯示。Linux 會使用 EOL 作為跳行;而 Windows 則會使用 Ctrl-m (^M)。在 Linux 下可以用 dos2unix 及 unix2dos 將 Linux 及 Windows 的文字檔轉換: $ unix2dos unix_text.txt win_text.txt 以上指令就會將 …
如果想用 shell script 發送郵件,可以用 mail 實現: # echo “email content” | mail -s “email subject” you@emaildomain 以上語句會發送一封標題為 “email subject” 的電郵到 you@emaildomain,其中 “email content” 為電郵內容。 以下簡單的兩行 shell script 便會將檔案系統使用量,透過電郵發送給指定的電郵信箱: #!/bin/sh …
這個是我日常用作備份 MySQL database 的 shell script,因為以前是直接將所有資料庫匯出成一個 sql 檔,當其中一個資料庫有問題時,因為沒問題的資料庫不想有改動,要復原資料很麻煩。今天改了一下,它會用 mysqldump 將所有資料庫匯出成獨立 sql 備份檔,然後用 gzip 壓縮成 .gz 檔案。程式會儲存 5 天的備份,當有新備份時,最舊的備份會自動刪除。 使用方法: 修改 db_user, db_passwd 及 db_host 修改成你的 mysql 登入資料,所使用的用戶權限需要與 mysql root …