文件與目錄管理

 本文目錄索引:

  1. 1、ls --文件與目錄的檢視 
  2. 2、cp --複製文件或目錄 
  3.      -i : 
  4.      -a :-p : 
  5.      -r : 
  6.      -l : -s: -d : 
  7.      -u : 
  8.      如果來源檔有兩個以上,則最後一個目的檔一定要是『目錄』才行! 
  9. 3、rm --移除文件或目錄 
  10. 4、mv --移動文件與目錄或更改名稱

 ls --文件與目錄的檢視


 

  1. [root@www ~]# ls [-aAdfFhilnrRSt] 目錄名稱 
  2. [root@www ~]# ls [--color={never,auto,always}] 目錄名稱 
  3. [root@www ~]# ls [--full-time] 目錄名稱 
  4. 選項與參數: 
  5. -a  :全部的文件,連同隱藏檔( 開頭爲 . 的文件) 一起列出來(常用) 
  6. -A  :全部的文件,連同隱藏檔,但不包括 . 與 .. 這兩個目錄 
  7. -d  :僅列出目錄本身,而不是列出目錄內的文件數據(常用) 
  8. -f  :直接列出結果,而不進行排序 (ls 默認會以檔名排序!) 
  9. -F  :根據文件、目錄等資訊,給予附加數據結構,例如: 
  10.       *:代表可運行檔; /:代表目錄; =:代表 socket 文件; |:代表 FIFO 文件; 
  11. -h  :將文件容量以人類較易讀的方式(例如 GB, KB 等等)列出來; 
  12. -i  :列出 inode 號碼,inode 的意義下一章將會介紹; 
  13. -l  :長數據串列出,包含文件的屬性與權限等等數據;(常用) 
  14. -n  :列出 UID 與 GID 而非使用者與羣組的名稱 (UID與GID會在帳號管理提到!) 
  15. -r  :將排序結果反向輸出,例如:原本檔名由小到大,反向則爲由大到小; 
  16. -R  :連同子目錄內容一起列出來,等於該目錄下的所有文件都會顯示出來; 
  17. -S  :以文件容量大小排序,而不是用檔名排序; 
  18. -t  :依時間排序,而不是用檔名。 
  19. --color=never  :不要依據文件特性給予顏色顯示; 
  20. --color=always :顯示顏色 
  21. --color=auto   :讓系統自行依據配置來判斷是否給予顏色 
  22. --full-time    :以完整時間模式 (包含年、月、日、時、分) 輸出 
  23. --time={atime,ctime} :輸出 access 時間或改變權限屬性時間 (ctime)  
  24.                        而非內容變更時間 (modification time) 

當你只有下達 ls 時,默認顯示的只有:非隱藏檔的檔名、 以檔名進行排序及檔名代表的顏色顯示如此而已。舉例來說, 你下達『 ls /etc 』之後,只有經過排序的檔名以及以藍色顯示目錄及白色顯示一般文件,綠色顯示可執行文件,僅此而已。

無論如何, ls 最常被使用到的功能還是那個 -l 的選項,爲此,很多 distribution 在默認的情況中, 已經將 ll (L 的小寫) 配置成爲 ls -l 的意思了!其實,那個功能是 Bash shell 的 alias 功能呢~也就是說,我們直接輸入 ll 就等於是輸入 ls -l 是一樣的

 cp --複製文件或目錄


 

  1. 由於cp 有種種的文件屬性與權限的特性,所以,在複製時,你必須要清楚的瞭解到: 
  2.  
  3. 1、是否需要完整的保留來源文件的資訊? 
  4. 2、來源文件是否爲連結檔 (symbolic link file)? 
  5. 3、來源檔是否爲特殊的文件,例如 FIFO, socket 等? 
  6. 4、來源檔是否爲目錄? 
  1. [root@www ~]# cp [-adfilprsu] 來源檔(source) 目標檔(destination) 
  2. [root@www ~]# cp [options] source1 source2 source3 .... directory 
  3. 選項與參數: 
  4.  
  5. -a  :相當於 -pdr 的意思,至於 pdr 請參考下列說明;(常用) 
  6. -p  :連同文件的屬性一起復制過去,而非使用默認屬性(備份常用); 
  7. -r  :遞迴持續複製,用於目錄的複製行爲;(常用) 
  8. -i  :若目標檔(destination)已經存在時,在覆蓋時會先詢問動作的進行(常用) 
  9.  
  10. -l  :進行硬式連結(hard link)的連結檔創建,而非複製文件本身; 
  11. -s  :複製成爲符號連結檔 (symbolic link),亦即『捷徑』文件; 
  12. -d  :若來源檔爲連結檔的屬性(link file),則複製連結檔屬性而非文件本身; 
  13.  
  14. -f  :爲強制(force)的意思,若目標文件已經存在且無法開啓,則移除後再嘗試一次; 
  15. -u  :若 destination 比 source 舊才升級 destination ! 
  16.  
  17. 最後需要注意的,如果來源檔有兩個以上,則最後一個目的檔一定要是『目錄』才行! 

 -i :若目標檔(destination)已經存在時,在覆蓋時會先詢問動作的進行(常用)

 -a :相當於 -pdr 的意思,至於 pdr 請參考下列說明;(常用)
-p :連同文件的屬性一起復制過去,而非使用默認屬性(備份常用); 

  1. 一般來說,我們如果去複製別人的數據 (當然,該文件你必須要有 read 的權限才行啊! ^_^) 時, 總是希望複製到的數據最後是我們自己的,所以,在默認的條件中, cp 的來源檔與目的檔的權限是不同的,目的檔的擁有者通常會是命令操作者本身。舉例來說, 上面的範例二中,由於我是 root 的身份,因此複製過來的文件擁有者與羣組就改變成爲 root 所有了! 這樣說,可以明白嗎?^_^ 
  2.  
  3. 由於具有這個特性,因此當我們在進行備份的時候,某些需要特別注意的特殊權限文件, 例如密碼檔 (/etc/shadow) 以及一些配置檔,就不能直接以 cp 來複制,而必須要加上 -a 或者是 -p 等等可以完整複製文件權限的選項才行!另外,如果你想要複製文件給其他的使用者, 也必須要注意到文件的權限(包含讀、寫、運行以及文件擁有者等等), 否則,其他人還是無法針對你給予的文件進行修訂的動作喔!注意注意! 
  1. 複製(cp)這個命令是非常重要的,不同身份者運行這個命令會有不同的結果產生,尤其是那個-a, -p的選項, 對於不同身份來說,差異則非常的大!底下的練習中,有的身份爲root有的身份爲一般帳號(在我這裏用vbird這個帳號), 練習時請特別注意身份的差別喔! 

例題:
你能否使用vbird的身份,完整的複製/var/log/wtmp文件到/tmp底下,並更名爲vbird_wtmp呢?
答:
實際做看看的結果如下:
  1. [vbird@www ~]$ cp -a /var/log/wtmp /tmp/vbird_wtmp  
  2. [vbird@www ~]$ ls -l /var/log/wtmp /tmp/vbird_wtmp  
  3. -rw-rw-r-- 1 vbird vbird 96384  9月 24 11:54 /tmp/vbird_wtmp  
  4. -rw-rw-r-- 1 root  utmp  96384 9月 24 11:54 /var/log/wtmp 
由於vbird的身份並不能隨意修改文件的擁有者與羣組,因此雖然能夠複製wtmp的相關權限與時間等屬性, 但是與擁有者、羣組相關的,原本vbird身份無法進行的動作,即使加上 -a 選項,也是無法達成完整複製權限的!

 -r :遞迴持續複製,用於目錄的複製行爲;(常用)

  -l :進行硬式連結(hard link)的連結檔創建,而非複製文件本身;
-s :複製成爲符號連結檔 (symbolic link),亦即『捷徑』文件;
-d :若來源檔爲連結檔的屬性(link file),則複製連結檔屬性而非文件本身;

 -u :若 destination 比 source 舊才升級 destination ! 

 如果來源檔有兩個以上,則最後一個目的檔一定要是『目錄』才行!

  rm --移除文件或目錄


 

  1. [root@www ~]# rm [-fir] 文件或目錄 
  2. 選項與參數: 
  3. -f  :就是 force 的意思,忽略不存在的文件,不會出現警告信息; 
  4. -i  :互動模式,在刪除前會詢問使用者是否動作 
  5. -r  :遞迴刪除啊!最常用在目錄的刪除了!這是非常危險的選項!!! 

  1. 如果要連目錄下的東西都一起殺掉的話, 例如子目錄裏面還有子目錄時,那就要使用 -r 這個選項了!不過,使用『 rm -r 』這個命令之前,請千萬注意了,因爲該目錄或文件『肯定』會被 root 殺掉!因爲系統不會再次詢問你是否要砍掉呦!所以那是個超級嚴重的命令下達呦! 得特別注意!不過,如果你確定該目錄不要了,那麼使用 rm -r 來循環殺掉是不錯的方式! 

  1. 我們在之前就談過,檔名最好不要使用 "-" 號開頭, 因爲 "-" 後面接的是選項,因此,單純的使用『 rm -aaa- 』系統的命令就會誤判啦! 那如果使用後面會談到的正規表示法時,還是會出問題的!所以,只能用避過首位字節是 "-" 的方法啦! 就是加上本目錄『 ./ 』即可!如果 man rm 的話,其實還有一種方法,那就是『 rm -- -aaa- 』也可以啊! 

  mv --移動文件與目錄或更改名稱


 

  1. [root@www ~]# mv [-fiu] source destination 
  2. [root@www ~]# mv [options] source1 source2 source3 .... directory 
  3. 選項與參數: 
  4. -f  :force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋; 
  5. -i  :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋! 
  6. -u  :若目標文件已經存在,且 source 比較新,纔會升級 (update) 

本文轉自:http://vbird.dic.ksu.edu.tw/linux_basic/0220filemanager.php#file_dir_manage,《鳥哥的linux私房菜》,請尊重原作者的勞動成果!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章