打造舒適的家


一些便利的設定

許多指令裡面都會出現主機名稱, 打起來有點煩。 可以在 ~/.hosts 裡面放幾列如下的資料:

        210.71.4.237    ftp.pws.stu.edu.tw
        123.45.67.89    123.45.67.89

並且在 .bashrc 裡面加上一句: export HOSTFILE=~/.hosts 則下次再登入時, 命令列上任何地方, 只要打主機名稱的前幾個字元, 然後按 ESC 及 @, shell 就會自動把主機全名打出。 這叫 hostname completion。 詳見 bash(1)

在 vim 的 insert 模式裡面, backspace 鍵的倒退範圍很有限。 又, 搜尋字串 ("/" 或 "?" 鍵) 時, 找到的字串會變成黃色。 如果希望 backspace 鍵可以無限倒退, 又希望搜尋到的字串不要變色, 可以在 ~/.vimrc 裡面放兩列:

        set backspace=indent,eol,start
	set nohlsearch

詳見 /usr/share/doc/vim-*/doc/usr_05.txt (可能有好幾個 vim-... 的目錄, 要找一下)

我自己經常下的指令有: vim, less -firs, lynx -image_links 所以在 ~/.bashrc 檔案中, 加上這幾句:

        alias v=vim
        alias l='less -firs'
        alias x='lynx -image_links'

這樣下次再登入時, 可以用一個字母分別取代上述各指令。

怎麼讓不同的檔案顯示不同的顏色, 或是把既有的, 不喜歡的顏色設定改掉? 先看一下 ls 指令真正執行時的細節: type ls 它目前的顏色設定: echo $LS_COTAB 如果按 tab 鍵沒有反應, 就是這個 環境變數 environment variable 沒有定義。 最簡單的情況: 你的帳號的 ls 已經會顯示顏色, 這時只需要將 /etc/DIR_COLORS 拷貝回 ~/.dir_colors 並加以修改即可。 最自主的設定: 如上改好 ~/.dir_colors 並將這句話: eval $(dircolors ~/.dir_colors) 放入 ~/.bashrc 檔案中, 這樣下次再登入時, 就會生效了。 細節請見 dircolors(1) 及 ls(1), 還有 /etc/profile.d/alias.sh 裡面的指令。

備份習慣比備份工具更重要

養成經常備份的習慣, 比購買功能強大的備份軟體更重要。 仔細思考那些檔案是你花了很多心血製作出來的, 如果丟掉了會悔恨不已? 自己創作的文件/圖案/程式/聲音/... 等等都是; 至於下載回來的檔案, 就比較無所謂了。 ㄟ, 但是檔案下載點的網址也蠻重要的, 通常經過幾週以後, 會完全忘記自己當初是怎麼找到的。 還有, 上述各個 設定檔 configuration files 也都要花很多時間打造。 把這些檔案全部放在少數兩三個固定的目錄下; 不要 與其他下載自網路, 大型的檔案混在一起。 例如安排以下目錄:

設定好正確的權限, 並將自己修改過的設定檔搬進去, 再製作 symbolic link (相當於 Windows 下的捷徑) 以便從家目錄最上層也可以看得到這些設定檔:

        cd ~
        chmod 700 ws
        chmod 755 public_html
        ls -trla > modified.txt
        (編修 modified.txt, 留下最近修改的幾個設定檔名)
        mv $(cat modified.txt) ws/config
        ln -s ws/config/.[a-z]* .

再假設還有一個存放備份檔的目錄叫做 backup/ 那麼從此以後, 只要一兩個指令就可以把所有重要東西備份: cd ~; tar czf backup/save.tgz ws public_html

為什麼一般人會覺得備份是一件大工程, 難得做一次; 等到事情發生時, 才悔恨沒有及時備份? 很可能是因為平常 沒有將重要檔案與巨大檔案分開, 也可能因為重要檔案就是巨大檔案, 像是 .doc .ppt .pps ... 等等。 還可能因為重要檔案散在各處, 與系統檔案混在一起。 我近一年來的所有重要檔案, 壓縮之後不到 4MB, 每次離開一部電腦前, 電腦及隨身碟各產生一份新的備份, 一天備份兩三次, 如果有任何閃失, 最多只有半天工作量的損失。 每年一次將舊的資料及下載的檔案備份到光碟上, 這樣可以降低平日備份檔的逐年成長速度。

備份的備份

偶爾會後悔一些修改, 想把某個檔案幾天前的版本救回來。 有一個版本控管工具 cvs 專門處理這樣的事; 但是用起來有點複雜。 如果你的備份檔案只有幾 MB, 可以用另外一個較簡單的替代方案: logrotate。 這原本是給系統管理員用來備份 「記錄檔」 的工具; 但我發現用它來製作 「備份檔的備份」, 非常方便。 基本上只不過是將過去七天來的備份檔都留著, 取不一樣的名字。 隨著每天有新的備份檔產生, 它會幫你刪除最舊的備份檔, 並將其他備份檔的代號各自向後推一。 如果同一天內備份很多次呢? 它會檢查並發現不需要每次都做上述動作, 以確保舊檔案不因為你備份太頻繁而消失。

  1. 把以下內容剪貼到 ~/ws/config/logrotate.conf 裡面去:
            daily
            rotate 7
            missingok
            #copy
    
            /home/帳號/backup/save.tgz {
            }
    
  2. 先看一下 backup 目前的內容, 然後下: /usr/sbin/logrotate -s ~/backup/logrotate.status ~/ws/config/logrotate.conf 再看看 backup 的內容。 應該多出一個 「備份的備份」 save.tgz.1 及備份動作的記錄 logrotate.status
  3. 如果一切正確, 把備份動作寫成一個 shell script 放在 ~/ws/bin/ 底下, 叫做 savework 好了:
            #!/bin/bash
            cd ~
            tar czf backup/save.tgz ws public_html
            /usr/sbin/logrotate -s ~/backup/logrotate.status ~/ws/config/logrotate.conf
    
    並記得對自己開放執行權限。
  4. 未來可能還會自己寫更多的 shell script 一樣都放在 ~/ws/bin 裡面, 所以在 .bashrc 裡面加上一句: export PATH=~/ws/bin:$PATH 告訴 shell 多一個搜尋可執行檔的路徑。

命令列讀本

  1. 目錄
  2. 前言
  3. 瀏覽
  4. 套件
  5. 圖片整形
  6. 老鼠迷宮
  7. 迷宮積木
  8. 誰常上機?
  9. 網頁做簡報
  10. tidy 網頁
  11. 編碼
  12. 客製
  13. Regexp
  14. 目錄比較
  15. 聯集差集

附錄

  1. GUI 求生
  2. 基本指令
  3. 阿貴管理