Directory and Symbolic Link


操作範例

  1. pwd 印出目前所在的目錄.
  2. cd .. 移動至上一層目錄. 再 pwd 看看現在在那裡; 並 ls 看看現在這一層目錄下有些什麼? 有沒有 "鳥瞰" 到你家? 試試看 less -r 你的學號/article 是否可以看到上次你打入的檔案? UNIX 的設計有很好的 orthogonality, 各個命令與參數的路徑之間就是 orthogonal 的.
  3. cd /usr/bin 移動到專門存放系統命令的目錄 再以 cd ../man/man1 移動到專門存放系統命令的手冊的目錄.
  4. 表達特殊目錄的字元:
            . 目前所在的目錄                .. 上一層目錄
            ~ 使用者自己的家                ~ckhung 使用者 ckhung 的家
            / 系統根目錄
        
    
  5. 建立新的目錄: mkdir 目錄名稱 目錄名稱 ...
  6. 刪除目錄: rmdir 目錄名稱 目錄名稱 ... (必須事先將該目錄底下的所有檔案清除乾淨.)
  7. 把一個檔案或整個子目錄搬移到其他目錄底下: mv 檔案或目錄 檔案或目錄 ... 新路徑
    (UNIX 下的許多指令都可以一次處理好幾個參數, 以後不寫這麼羅嗦了, 請自行參考相關命令的手冊).
  8. 詢問某個命令的可執行檔究竟放在那個目錄裡: which less 又如: which echo
  9. 建立 symbolic link: 請打 cd ~; ln -s /usr/doc/faq/howto . (分號可用以將數個命令在同一列上一次打完.) 從此以後想看 howto 文件就方便多了.
  10. 刪除 symbolic link: rm ~/howto
  11. 分辨檔案, 目錄, symbolic link: ls -F
  12. 列出所有檔案, 包含隱藏檔: ls -a
  13. 列出某個目錄底下的所有檔案, 及子目錄, 孫目錄, ... 底下的所有檔案: find /usr/doc | less
  14. find 的常用 options:
    1. -name 根據檔案名稱搜尋
    2. -mtime 根據最近一次修改日期搜尋
    3. -mmin 根據最近一次修改時間搜尋
    4. -type 根據檔案/目錄/symbolic link 等類別區別搜尋
  15. 目前目錄的用途
    1. 處理檔名看起來像是 option 的檔案. 例如以 echo hello > -help 此後如何印出 -help 的內容, 如何更改名稱或將它刪除?
    2. 當做 cp, mv 等等需要目錄名稱命令的參數. 例:
                      mkdir ~/test; cd ~/test
                      cp /bin/ls /usr/include/stdio.h /etc/passwd .
              
      

名詞解釋

  1. directory: 目錄. 當你的檔案越來越多時, 應該要加以區分整理. 如果把你的 UNIX 帳號比喻作你的家, 那麼目錄就像是許多房間; 目錄底下的目錄就像是房間裡的幾個櫃子; 更下層的目錄就像是一個櫃子當中的好幾個抽屜 ...; 只不過不同層次的目錄都叫做目錄. 一層層的包含關係如果畫起圖來就像是一顆倒過來的樹, 是以我們常常說 UNIX 的目錄系統構成了一個樹狀結構 (tree structure).
  2. parent directory: 上一層的目錄. 每個目錄只能有一個唯一的 parent directory.
  3. subdirectory/child directory: 子目錄. 直接隸屬於某個目錄下一層的目錄. 一個目錄可以有很多子目錄, 而每個目錄又可以有他自己的子目錄 ...
  4. root directory: 根目錄. 從任何目錄開始往上走 (進入 parent directory), 直到無法在往上為止, 這個目錄就叫做 root directory.
  5. home directory: (家.) 每個人剛剛 login 時所在的那個目錄.
  6. working directory: 工作目錄. 即目前所在的目錄.
  7. path 路徑: 就像 「地址」 用來標示一個地點一樣, 「路徑」 用來標示一個檔案或目錄的位置。 以 "." 或 ".." 開頭的路徑, 稱為 relative path 相對路徑 (例如 "../man/man1"); 以 "/" 開頭的路徑, 稱為 absolute path 絕對路徑 (例如 "/usr/man/man1")。 就像你在談論某個地點的時候, 如果對象跟你在同一個都市, 你可以簡單地說 "中正路 914 號"; 但如果是要向外國筆友描述同一個地點, 你可能就必須說 「亞洲的臺灣的臺中市的霧峰區的中正路 914 號」。
  8. orthogonality: (正交特性.) 如果一個系統或語言, 它的構成元素之間各種組合運用的結果都有意義, 我們就說這個系統或語言的 orthogonality 很好. 例如中文的 orthogonality 就比英文好:
            你      昨天    上午    唸書    ()
            我      今天    中午    打球    嗎
            他      明天    晚上    回家
        
    

    這 13 個詞所組合出來的 162 個句子都有意義; 換做英文, 大約要用一倍半的詞數才能組合出這 162 個句子.
  9. symbolic link: (類似 Windows 底下的捷徑功能.)
  10. recurse, recursion, recursive: 遞迴. 老鼠會和連鎖信都是運用遞迴觀念的負面實例. 在電腦科學中, 遞迴的觀念是解決複雜問題的重要工具: 要解決一個大問題, 先將之分解為數個形式與原來問題相同, 但小一號的問題. 假設別人可以幫我們解決這些小問題, 則我們只需要整合這些小問題的答案. 但是其實別人就是我們自己 ...