鸟哥的 Linux 私房菜
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
鳥哥的 Linux 私房菜
為取得較佳瀏覽結果,請愛用firefox瀏覽本網頁
第七章、Linux 檔案與目錄管理
切換解析度為 800x600
在第六章我們認識了Linux系統下的檔案權限概念以及目錄的配置說明。在這個章節當中,我們就直接來進一步的操作與管理檔案與目錄吧!包括在不同的目錄間變換、建立與刪除目錄、建立與刪除檔案,還有尋找檔案、查閱檔案內容等等,都會在這個章節作個簡單的介紹啊!
1. 目錄與路徑
1.1 相對路徑與絕對路徑
1.2 目錄的相關操作:cd, pwd, mkdir, rmdir
1.3 關於執行檔路徑的變數: $PATH
2. 檔案與目錄管理
2.1 檔案與目錄的檢視: ls
2.2 複製、刪除與移動:cp, rm, mv
2.3 取得路徑的檔案名稱與目錄名稱
3. 檔案內容查閱:
3.1 直接檢視檔案內容:cat, tac, nl
3.2 可翻頁檢視:more, less
3.3 資料擷取:head, tail
3.4 非純文字檔: od
3.5 修改檔案時間與建置新檔: touch
4. 檔案與目錄的預設權限與隱藏權限
4.1 檔案預設權限:umask
4.2 檔案隱藏屬性:chattr, lsattr
4.4 檔案特殊權限:SUID, SGID, SBIT, 權限設定
4.3 觀察檔案類型:file
5. 指令與檔案的搜尋:
5.1 指令檔名的搜尋:which
5.2 檔案檔名的搜尋:whereis, locate, find
6. 極重要!權限與指令間的關係:
7. 重點回顧
8. 本章習題
9. 參考資料與延伸閱讀
10. 針對本文的建議:/viewtopic.php?t=23879
目錄與路徑:
由第六章Linux的檔案權限與目錄配置中透過FHS瞭解了Linux的『樹狀目錄』概念之後,接下來就得要實際的來搞定一些基本的路徑問題了!這些目錄的問題當中,最重要的莫過於第六章也談過的『絕對路徑』與『相對路徑』的意義啦!絕對/相對路徑的寫法並不相同,要特別注意。此外,當妳下達指令時,該指令是透過什麼功能來取得的?這與PATH這個變數有關呢!底下就讓我們來談談囉!
相對路徑與絕對路徑:
在開始目錄的切換之前,你必須要先瞭解一下所謂的『路徑(PATH)』,有趣的是:什麼是『相對路徑』與『絕對路徑』?雖然前一章已經稍微針對這個議題提過一次,不過,這裡不厭其煩的再次的強調一下!
•絕對路徑:路徑的寫法『一定由根目錄 / 寫起』,例如: /usr/share/doc 這個目錄。
•相對路徑:路徑的寫法『不是由 / 寫起』,例如由 /usr/share/doc 要到 /usr/share/man 底下時,可以寫成:『cd ../man』這就是相對路徑的寫法啦!相對路徑意指『相對於目前工作目錄的路徑!』
•相對路徑的用途
那麼相對路徑與絕對路徑有什麼了不起呀?喝!那可真的是了不起了!假設你寫了一個軟體,這個軟體共需要三個目錄,分別是 etc, bin, man 這三個目錄,然而由於不同的人喜歡安裝在不同的目錄之下,假設甲安裝的目錄是 /usr/local/packages/etc, /usr/local/packages/bin 及
/usr/local/packages/man ,不過乙卻喜歡安裝在 /home/packages/etc, /home/packages/bin,
/home/packages/man 這三個目錄中,請問如果需要用到絕對路徑的話,那麼是否很麻煩呢?是的!如此一來每個目錄下的東西就很難對應的起來!這個時候相對路徑的寫法就顯的特別的重要了!
此外,如果你跟鳥哥一樣,喜歡將路徑的名字寫的很長,好讓自己知道那個目錄是在幹什麼的,例如:/cluster/raid/output/taiwan2006/smoke 這個目錄,而另一個目錄在
/cluster/raid/output/taiwan2006/cctm ,那麼我從第一個要到第二個目錄去的話,怎麼寫比較方便?當然是『cd ../cctm』比較方便囉!對吧!
•絕對路徑的用途
但是對於檔名的正確性來說,『絕對路徑的正確度要比較好~』。一般來說,鳥哥會建議你,如果是在寫程式 (shell scripts) 來管理系統的條件下,務必使用絕對路徑的寫法。怎麼說呢?因為絕對路徑
的寫法雖然比較麻煩,但是可以肯定這個寫法絕對不會有問題。如果使用相對路徑在程式當中,則可能由於你執行的工作環境不同,導致一些問題的發生。這個問題在工作排程(at, cron, 第十六章)當中尤其重要!這個現象我們在十三章、shell script時,會再次的提醒你喔! ^_^
目錄的相關操作:
我們之前稍微提到變換目錄的指令是cd,還有哪些可以進行目錄操作的指令呢?例如建立目錄啊、刪除目錄之類的~還有,得要先知道的,就是有哪些比較特殊的目錄呢?舉例來說,底下這些就是比較特殊的目錄,得要用力的記下來才行:
. 代表此層目錄
.. 代表上一層目錄
- 代表前一個工作目錄
~ 代表『目前使用者身份』所在的家目錄
~account 代表 account 這個使用者的家目錄(account是個帳號名稱)
需要特別注意的是:在所有目錄底下都會存在的兩個目錄,分別是『.』與『..』分別代表此層與上層目錄的意思。那麼來思考一下底下這個例題:
例題:
請問在Linux底下,根目錄下有沒有上層目錄(..)存在?
答:
若使用『 ls -al / 』去查詢,可以看到根目錄下確實存在 . 與 .. 兩個目錄,再仔細的
查閱,可發現這兩個目錄的屬性與權限完全一致,這代表根目錄的上一層(..)與根目錄自己
(.)是同一個目錄。
底下我們就來談一談幾個常見的處理目錄的指令吧:
•cd:變換目錄
•pwd:顯示目前的目錄
•mkdir:建立一個新的目錄
•rmdir:刪除一個空的目錄
•cd (變換目錄)
我們知道vbird這個使用者的家目錄是/home/vbird/,而root家目錄則是/root/,假設我以root身份在 Linux系統中,那麼簡單的說明一下這幾個特殊的目錄的意義是: