目錄與檔案
操作範例
- (假設你剛剛 login) 看看目前工作目錄 (current working directory)
是那裡:
pwd這裡是你的家 (home directory) - 看目前工作目錄下有那些檔案/目錄:
ls . - 到上一層目錄下:
cd ..之後用pwd與ls .檢查一下. - 遊走到系統根目錄去 (把 current working directory 切換到 root
directory 去):
cd /之後用pwd與ls .檢查一下. - 走到目前工作目錄下的 usr 子目錄下:
cd ./usr之後用pwd與ls .檢查一下. - 走到目前工作目錄下的 man 子目錄下的 man1 目錄下:
cd ./man/man1之後用pwd與ls .檢查一下. - 跳回自己的家:
cd ~然後用ls -a再看一次自己的家. 在 unix 底下, 如果檔案 (或目錄) 名稱以 . 開頭, 則通常不會顯示出來. 如果下 ls 時, 給 -a 選項, 則所有隱藏檔都會顯示出來, 包含 "目前目錄" 與 "上一層目錄". 以 . 開頭的檔大部分是應用軟體的設定檔 (例如 .lynxrc 與 .bashrc). 平時隱藏起來的目的不是要防止誰偷看, 而是為了減少顯示時的資料量 (像 . 與 .. 一直存在, 但你通常不會對它們有興趣, 不如不要顯示.) - 作業: 自己學會如何用 mkdir 與 rmdir 建立/刪除子目錄.
- 用簡單的文字檔案編輯器 nano
在目前工作目錄下建立一個叫做 abc 的檔案:
nano ./abc - 把目前工作目錄的 abc 這個檔案的內容印出來:
cat ./abc - 把 abc 這個檔案複製一份放到 xyz 去:
cp ./abc ./xyz之後用ls .檢查一下 - 把 abc 這個檔案刪除掉:
rm ./abc之後用ls .檢查一下 - 把 xyz 這個檔案改名叫做 pqr:
mv ./xyz ./pqr這個命令除了更改檔案名稱外, 還可以用來將檔案甚至整個目錄搬移至其他地方. - 注意 cp (把 ... 拷貝到 ... 去) 與 mv (把 ... 搬到 ... 去) 各別都需要兩個 (或更多個) 參數. 命令名稱與參數之間一定要有空白, 參數與參數之間也一定要有空白!
- 檢查系統允許我使用多少空間, 我又真的用了多少空間:
quota -v - 把系統下的一個檔案拷貝回家:
cp /usr/doc/fileutils-4.0/COPYING ~ - 用文件閱覽器 less
檢視文件內容 (不修改):
less -ri ~/COPYING - 檢查一下使用空間:
quota -v最後刪除該檔:rm ~/COPYING - 建立捷徑 (symbolic link), 讓我們可以從家裡直接看到先前所說的檔:
ln -s /usr/doc/fileutils-4.0/COPYING ~再從家裡進去看看它的內容:less -ri ~/COPYING並檢查一下使用空間:quota -v注意到現在比起先前用拷貝的方式使用更少的空間, 但一樣可以方便使用該檔. 想刪除捷徑的話可以用:rm ~/COPYING - 下 ls 命令時, 加上 -l 選項可以顯示一個東東究竟是檔案, 是目錄,
還是捷徑. 每一列最左邊的字元如果是 - 表示檔案; d 表示目錄; l
表示捷徑. 這個選項也可以讓你看到檔案所佔的空間大小, 及修改時間.
你可以用
ls -la ~再看一次. - 每次我下 less 命令, 究竟是那個程式被叫起來執行? 用
which less來看. 再試試看which exit - 這是那一種檔案? 如果需要知道比 ls -l 更清楚的分類, 可以用
file ~/pqr再看看file ~/COPYING /usr/doc/fileutils-4.0/COPYING ~ /bin/cp它的輸出是四列還是五列? file 命令偶爾會看不出檔案種類, 但大部分時候會成功. - 遞迴地 列出一個目錄底下所有的檔案, 目錄, 捷徑,
及子目錄, 孫目錄... 底下的所有東西:
find /etc/rc.d也可以指定只要看目錄:find /etc/rc.d -type d或只要看檔案 (用 -type f) 或只要看捷徑 (用 -type l). - 看一下各個子目錄, 孫目錄, ... 底下的檔案分別佔用了多少空間:
du /etc/rc.d當你使用的 quota 超過系統分配量時, 可以用這個命令找出最肥的目錄. - Q: 用 man 1 cp 查看手冊, 試看看要用那一個 option 才可以將整個目錄底下的所有目錄結構 (子目錄, 孫目錄...) 和檔案完全拷貝到另外一個地方. (man 的控制方式和 less 一樣) 那麼 symbolic link 被拷貝後, 是成為一個檔案呢, 還是仍舊只是一個 symbolic link? 向同學解釋你的實驗步驟. 有沒有 option 可以產生與你觀察到的結果相反的效果?
- Q: 試試看: mv 可否把整個目錄底下的所有目錄結構 (子目錄, 孫目錄...) 和檔案完全搬到另外一個地方. 向同學解釋你的實驗步驟. 用 man 1 mv 查看手冊, 看看如何把好幾個來自不同目錄的檔案, 一口氣同時搬到另外一個目錄底下.
- Q: 如果一個 symbolic link 所指到的 (真正佔磁碟空間的原來) 檔案被你刪除掉了, 你再試著用 less 或 nano 去看那個 symbolic link, 會怎麼樣?
名詞解釋
-
directory 目錄: 把目錄想成箱子. 就像大箱子裡面可以放小箱子一樣
(目的是為了方便整理, 將相關的東西放在一起), 目錄底下可以有子目錄.
以下是一些表達特殊目錄的字元:
- . 目前所在的目錄 (current working directory) 因為系統內箱子太多了, 因此系統提供一個觀念, 叫做 "目前工作目錄", 讓你的目光隨時有一個焦點, 不至於眼花撩亂. 可以用 pwd 查詢, 用 cd 改變目前工作目錄; 用 ls 查看目前所在的這個箱子內有什麼東西.
- .. 上一層目錄 (parent directory)
- ~ 使用者自己的家 (home directory) 這個箱子屬於你個人私有, 一進入系統時你所看到的 (current working directory) 就是這個箱子.
- ~ckhung 使用者 ckhung 的家
- / 系統根目錄 (root directory) 這是包含所有箱子的最大箱子.
- path 路徑: 諸如 /usr/man/man1 ~/.login ~ckhung/public_html
等叫做 absolute path 絕對路徑,
不論目前工作目錄在那裡都代表系統內固定的目錄或檔案. 而以
./和../開頭的路徑叫做 relative path 相對路徑, 如 usr man/man1 ../ckhung 等, 代表的都是 "從目前工作目錄開始走起 ...". 以./開頭的相對路徑, 前面的 ./ 通常都省略. 也就是說, 一般命令中提及目錄/檔案名稱時, 如果看不出是絕對路徑, 就以相對於目前目錄來解釋. - editor 編輯器: 用來修改文字檔案的工具程式. 常用的編輯器有: 以上編輯器都是跨平臺的程式, 除了各版 UNIX 上可以找到外, 也有 DOS 版, OS/2 版等等. (jove, joe 與 jed 似乎以 Linux 為主要平臺?)
- symbolic link: 類似 MS Windows 下的捷徑, 讓檔案只佔據一份空間, 但卻讓使用者可以從好幾個不同的地方 (目錄) 或用好幾個不同的名稱, 看到那個檔案.
作業
- 學會使用一種文字檔案編輯器, 例如 nano
- 學會使用 less
- Linux 把軟碟機當成硬碟機一樣對待, 優點是系統可以使用 cache 加快存取速率, 且使用者與應用程式不需要分辨不同的硬體 (管理者還是需要知道); 缺點是如果我們自己既是使用者又是管理者, 則要換磁片就比較麻煩. 請參考手冊學會使用 mdir 與 mcopy 解決以上問題.
- 本頁最新版網址: http://people.ofset.org/~ckhung///b/gnu/storage.php; 您所看到的版本: September 29 2008 03:23:41.
- 作者: 朝陽科技大學 資訊管理系 洪朝貴
- 寶貝你我的地球, 請 減少列印, 多用背面, 丟棄時做垃圾分類。
- 本文件以 Creative Commons Attribution-ShareAlike License 或以 Free Document License 方式公開授權大眾自由複製/修改/散佈。
![[rss feed 圖案]](/~ckhung//i/rss.png)
![[帶頭升級 Office 2007? 別當害群之馬]](/~ckhung//i/n7/no-office2007.png)
![[(力求維持) 符合 xhtml 1.0]](/~ckhung//i/vxhtml10.png)
