Tag: FreeBSD

vi / vim 開啟多個檔案

vi 在 Unix 環境作業系統下常用的文字編輯器,如果想在 vi 或 vim 同時開啟多個檔案,可以用以下方法:開啟 file1 file2: $ vi file1 file2 fileN 開啟所有 .php 副檔名的檔案: $ vi *.php 當開啟了多個檔案後,在 vi 可以用以下指令在檔案間進行切換操作:列出開啟了的檔案: 切換到下一個檔案: 切換到上一個檔案: 以檔案名稱作為切換: 如果是使用 vim,上面指令可以支援使用 …

Nginx 設定密碼保護目錄

在 Apache 設定密碼保護目錄會使用 .htpasswd 這種檔案,在 Nginx 有提供 auth_basic 模組,設定也很方便,以下是 Nginx 設定密碼保護目錄的方法。首先建立儲存使用者名稱及加密密碼的檔案 .htpasswd,可以用 htpasswd 指令完成,以下會設定使用者名稱是 username,密碼檔放在 /var/www/domain.com/member/ 目錄下面: # htpasswd -c /var/www/domain.com/member/.htpasswd username 然後會出現提示,要求設定密碼。如果系統內沒有安裝 htpasswd,可以手動建立這個檔案,每個使用者一行紀錄。在手動建立密碼檔前,需要先用 Perl 的 crypt 函式取得加密密碼的字串,執行以下指令:然後系統會印出加密了的密碼,將這個密碼複製,放入 .htpasswd 檔案: …

Nginx 設定 http 自動導向 https

當網站從 http 轉換到 https 後,想自動將前往 http 的訪客自動導向到 https 頁面,以下是 Nginx 設定 http 自動轉址到 https 連線的設定方法。以下假設網站域名是 mydomain.com, 會將所有 http 的連線自動導向到 https 的頁面, 另外會將沒有 www 的連線自動導向到 www 的網頁:加入以下三個 block, 包括是 port 80 …

檢視,搜尋,解壓 .tar / .tar.gz 內個別檔案

當 .tar 或 .tar.gz 壓縮檔容量十分大, 在解壓前想先檢視壓縮檔內的內容, 可以在 tar 指令加上 -tf 參數實現, 例如: $ tar -tf myfile 以上指令會將 myfile 內所有檔案列出, 想要進行檔案搜尋, 可以用 pipe 配合 grep 使用, 例如想列出所有 .php 檔案, 可以這樣: $ …

Apache 編譯錯誤 – cannot install ‘libaprutil-1.la’ to a directory

今天編譯安裝 Apache, Apache 的預設安裝目錄是 /usr/local/apache2, 但我將它安裝到 /usr/local/apache, 但在編譯時出現以下錯誤:原因可能是之前編譯 Apache 時, 有一些紀錄是安裝到 /usr/local/apache2 所致, 解決方法是有兩個:1. 執行 make clean 指令, 再重新編譯。2. 將原始碼的目錄刪除, 再重新解壓 Apache 的源始碼, 再進行編譯安裝即可。

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 副檔名的檔案。解決方法十分簡單, 只要加上 …