檔案與目錄管理:
談了談目錄與路徑之後,再來討論一下關於檔案的一些基本管理吧!檔案與目錄的管理上,不外乎
『顯示屬性』、 『拷貝』、『刪除檔案』及『移動檔案或目錄』等等,由於檔案與目錄的管理在 linux 當中是很重要的, 尤其是每個人自己家目錄的資料也都需要注意管理!所以我們來談一談有關檔案與目錄的一些基礎管理部分吧!
檔案與目錄的檢視: ls
那如果我還想要加入其他的顯示資訊時,可以加入上頭提到的那些有用的選項呢~ 舉例來說,我們之前一直用到的 -l 這個長串顯示資料內容,以及將隱藏檔也一起列示出來的 -a 選項等等。
其實 ls 的用法還有很多,包括查閱檔案所在 i-node 號碼的 ls -i 選項,以及用來進行檔案排序的 -s 選項,還有用來查閱不同時間的動作的 --time=atime 等選項(更多時間說明請參考本章後面touch的說明)。而這些選項的存在都是因為 linux 檔案系統記錄了很多有用的資訊的緣故。那麼 linux 的檔案系統中,這些與許可權、屬性有關的資料放在**呢? 放在 i-node 裡面。關於這部分,我們會在下一章繼續為你作比較深入的介紹啊!
無論如何,
ls 最常被使用到的功能還是那個 -l 的選項,為此,很多 distribution 在預設的情況中, 已經將 ll (l 的小寫) 配置成為 ls -l 的意思了!其實,那個功能是 bash shell 的
alias 功能呢~也就是說,我們直接輸入 ll 就等於是輸入 ls -l 是一樣的~關於這部分,我們會在後續 bash shell 時再次的強調滴~
複製、刪除與移動: cp, rm, mv
要複製檔案,請使用 cp (copy) 這個命令即可~不過, cp 這個命令的用途可多了~ 除了單純的複製之外,還可以建立鏈結檔 (就是捷徑羅),比對兩檔案的新舊而予以公升級, 以及複製整個目錄等等的功能呢!
至於移動目錄與檔案,則使用 mv (move), 這個命令也可以直接拿來作更名 (rename) 的動作喔!至於移除嗎?那就是 rm (remove) 這個命令羅~底下我們就來瞧一瞧先~
cp (複製檔案或目錄)
複製(cp)這個命令是非常重要的,不同身份者執行這個命令會有不同的結果產生,尤其是那個-a, -p的選項, 對於不同身份來說,差異則非常的大!底下的練習中,有的身份為root有的身份為一般帳號(在我這裡用vbird這個帳號), 練習時請特別注意身份的差別喔!好!開始來做複製的練習與觀察:
這個 cp 的功能很多,由於我們常常會進行一些資料的複製,所以也會常常用到這個命令的。 一般來說,我們如果去複製別人的資料 (
當然,該檔案你必須要有 read 的許可權才行啊! ^_^) 時, 總是希望複製到的資料最後是我們自己的,所以,在預設的條件中, cp 的**檔與目的檔的許可權是不同的,目的檔的擁有者通常會是命令操作者本身。舉例來說, 上面的範例二中,由於我是 root 的身份,因此複製過來的檔案擁有者與群組就改變成為 root 所有了! 這樣說,可以明白嗎?^_^
由於具有這個特性,因此當我們在進行備份的時候,某些需要特別注意的特殊許可權檔案, 例如密碼檔 (/etc/shadow) 以及一些配置檔,就不能直接以 cp 來複製,而必須要加上 -a 或者是 -p 等等可以完整複製檔案許可權的選項才行!另外,如果你想要複製檔案給其他的使用者, 也必須要注意到檔案的許可權(包含讀、寫、執行以及檔案擁有者等等), 否則,其他人還是無法針對你給予的檔案進行修訂的動作喔!注意注意!
範例四可有趣了!使用 -l 及 -s 都會建立所謂的鏈結檔(link file),但是這兩種鏈結檔卻有不一樣的情況。這是怎麼一回事啊? 那個 -l 就是所謂的實體鏈結(hard link),至於 -s 則是符號鏈結(symbolic link), 簡單來說,bashrc_slink 是乙個『捷徑』,這個捷徑會鏈結到bashrc去!所以你會看到檔名右側會有個指向(->)的符號!
至於bashrc_hlink檔案與bashrc的屬性與許可權完全一模一樣,與尚未進行鏈結前的差異則是第二欄的link數由1變成2了! 鳥哥這裡先不介紹實體鏈結,因為實體鏈結涉及 i-node 的相關知識,我們下一章談到檔案系統(filesystem)時再來討論這個問題。
例題:總之,由於 cp 有種種的檔案屬性與許可權的特性,所以,在複製時,你必須要清楚的了解到:你能否使用vbird的身份,完整的複製/var/log/wtmp檔案到/tmp底下,並更名為vbird_wtmp呢?
答:實際做看看的結果如下:
[vbird@www ~]$ cp -a /var/log/wtmp /tmp/vbird_wtmp
[vbird@www ~]$ ls -l /var/log/wtmp /tmp/vbird_wtmp
-rw-rw-r-- 1 vbird vbird 96384 9月 24 11:54 /tmp/vbird_wtmp
-rw-rw-r-- 1 root utmp 96384 9月 24 11:54 /var/log/wtmp
由於vbird的身份並不能隨意修改檔案的擁有者與群組,因此雖然能夠複製wtmp的相關許可權與時間等屬性, 但是與擁有者、群組相關的,原本vbird身份無法進行的動作,即使加上 -a 選項,也是無法達成完整複製許可權的!
是否需要完整的保留**檔案的資訊?
**檔案是否為鏈結檔 (symbolic link file)?
**檔是否為特殊的檔案,例如 fifo, socket 等?
**檔是否為目錄?
rm (移除檔案或目錄)
這是移除的命令(remove),要注意的是,通常在linux系統下,為了怕檔案被誤殺,所以很多 distributions 都已經預設加入 -i 這個選項了!而如果要連目錄下的東西都一起殺掉的話,
例如子目錄裡面還有子目錄時,那就要使用 -r 這個選項了!不過,使用『 rm -r 』這個命令之前,請千萬注意了,因為該目錄或檔案『肯定』會被 root 殺掉!因為系統不會再次詢問你是否要砍掉呦!所以那是個超級嚴重的命令下達呦! 得特別注意!不過,如果你確定該目錄不要了,那麼使用 rm -r 來迴圈殺掉是不錯的方式!
另外,範例四也是很有趣的例子,我們在之前就談過,檔名最好不要使用 "-" 號開頭, 因為 "-" 後面接的是選項,因此,單純的使用『 rm -aaa- 』系統的命令就會誤判啦! 那如果使用後面會談到的正規表示法時,還是會出問題的!所以,只能用避過首位位元組是 "-" 的方法啦! 就是加上本目錄『 ./ 』即可!如果 man rm 的話,其實還有一種方法,那就是『
rm -- -aaa- 』也可以啊!
mv (移動檔案與目錄,或更名)
這是搬移 (move) 的意思!當你要移動檔案或目錄的時後,呵呵!這個命令就很重要啦! 同樣的,你也可以使用 -u ( update )來測試新舊檔案,看看是否需要搬移羅! 另外乙個用途就是『變更檔名!』,我們可以很輕易的使用 mv 來變更乙個檔案的檔名呢!不過,在 linux 才有的命令當中,
有個 rename , 可以用來更改大量檔案的檔名,你可以利用 man rename 來查閱一下,也是挺有趣的命令喔!
取得路徑的檔名稱與目錄名稱
我們前面介紹的完整檔名 (包含目錄名稱與檔名稱) 當中提到,完整檔名最長可以到達 4096 個位元組。 那麼你怎麼知道那個是檔名?那個是目錄名?嘿嘿!就是利用斜線 (/) 來分辨啊! 其實,取得檔名或者是目錄名稱,一般的用途應該是在寫程式的時候,用來判斷之用的啦~ 所以,這部分的命令可以用在第三篇內的 shell scripts 裡頭喔! 底下我們簡單的以幾個範例來談一談 basename 與 dirname 的用途!
大小: 21.7 kb
大小: 13.4 kb
大小: 18.8 kb
大小: 13 kb
大小: 16.2 kb
大小: 18.5 kb
大小: 3.6 kb
第七章 檔案管理(三) 目錄管理
對檔案實施有效的管理,必須對它們加以妥善組織,主要是兩大操作 1.基本資訊記錄 fcb,目錄項 2.方便檢索 管理 目錄操作 目錄管理的要求如下 實現 按名訪問 最基本功能 提高對目錄的檢索速度 檔案共享 允許檔案重名。檔案控制塊 為了能對乙個檔案進行正確的訪問,必須為檔案設定用於描述和控制檔案的資...
第七章檔案管理
為了能對乙個檔案進行正確的訪問,必須為檔案設定用於描述和控制檔案的資料結構,稱之為 檔案控制塊 fcb 檔案與檔案控制塊一一對應。把檔案控制塊的有序集合稱為檔案目錄,即乙個檔案控制塊就是乙個目錄項。通常乙個檔案目錄也被看作是乙個檔案,稱為目錄檔案。檔案管理的操作 基本資訊記錄 fcb,目錄項 方便檢...
第七章 檔案管理
檔案管理 把所管理的程式和資料組織成一系列的檔案,並能進行合理的儲存 使用等操作。1.基本概念 資料項 描述物件某種屬性的字符集 是資料組織中可以命名的最小邏輯資料單位。記錄 一組相關資料項集合,描述物件某方面的屬性 關鍵字 乙個記錄中的乙個或幾個資料項的集合,用於唯一的標識乙個記錄。檔案 由建立者...