二、管理文件與目錄
在了解目錄與路徑之后,我們繼續(xù)學(xué)習(xí)管理文件與目錄的一些命令!文件與目錄的管理上,不外乎【顯示屬性】、【拷貝】、【刪除文件】及【移動文件或目錄』】等等,由于文件與目錄的管理在 Linux 當(dāng)中是很重要的, 尤其是每個人自己自家目錄的數(shù)據(jù)也都需要注意管理!
1.ls (查看文件和目錄)
[root@xiaoluo ~]# ls [-aAdfFhilRS] 目錄名稱 [root@xiaoluo ~]# ls [--color={none,auto,always}] 目錄名稱 [root@xiaoluo ~]# ls [--full-time] 目錄名稱 參數(shù): -a :全部的文件,連同隱藏文件( 開頭為 . 的目錄) 一起列出來~ -A :全部的文件,連同隱藏文件,但不包括 . 與 .. 這兩個目錄,一起列出來~ -d :僅列出目錄本身,而不是列出目錄內(nèi)的文件數(shù)據(jù) -f :直接列出結(jié)果,而不進(jìn)行排序 (ls 預(yù)設(shè)會以文件名排序!) -F :根據(jù)文件、目錄等信息,給予附加數(shù)據(jù)結(jié)構(gòu),例如: *:代表可執(zhí)行文件; /:代表目錄; =:代表 socket 檔案; |:代表 FIFO 文件; -h :列出文件的打小(例如GB、KB等等) -i :列出 inode 位置,而非列出文件屬性; -l :長數(shù)據(jù)串行出,包含文件的屬性等等數(shù)據(jù); -n :列出 UID 與 GID 而非使用者與群組的名稱 (UID與GID會在賬號管理提到!) -r :將排序結(jié)果反向輸出,例如:原本文件名由小到大,反向則為由大到??; -R :連同子目錄內(nèi)容一起列出來; -S :以文件容量大小排序! -t :依時間排序 --color=never :不要依據(jù)文件特性給予顏色顯示; --color=always :顯示顏色 --color=auto :讓系統(tǒng)自行依據(jù)設(shè)定來判斷是否給予顏色 --full-time :以完整時間模式 (包含年、月、日、時、分) 輸出 --time={atime,ctime} :輸出 access 時間或 改變權(quán)限屬性時間 (ctime) 而非內(nèi)容變更時間 (modification time)
在 Linux 系統(tǒng)當(dāng)中,這個 ls 指令可能是常被執(zhí)行的命令!因為我們隨時都要知道文件或者是目錄的相關(guān)信息啊。 不過,我們 Linux 的文件所記錄的信息實在是太多了, ls 沒有需要全部都列出來呢, 所以,當(dāng)輸入ls命令時,默認(rèn)顯示的只有:非隱藏文件的文件名、 以文件名進(jìn)行排序及文件名代表的顏色顯示;
[root@xiaoluo home]# ls -al ~ 總用量 216 dr-xr-x---. 31 root root 4096 4月 19 20:40 . dr-xr-xr-x. 26 root root 4096 4月 21 11:14 .. drwxr-xr-x. 2 root root 4096 3月 31 14:26 .abrt -rw-------. 1 root root 13062 4月 21 00:58 .bash_history -rw-r--r--. 1 root root 18 5月 20 2009 .bash_logout -rw-r--r--. 1 root root 176 5月 20 2009 .bash_profile -rw-r--r--. 1 root root 177 4月 8 22:43 .bashrc drwxr-xr-x. 4 root root 4096 4月 1 12:28 .cache drwxr-xr-x. 6 root root 4096 4月 1 12:26 .config -rw-r--r--. 1 root root 100 9月 23 2004 .cshrc drwx------. 3 root root 4096 3月 31 14:25 .dbus -rw-------. 1 root root 16 3月 31 14:26 .esd_auth drwx------. 4 root root 4096 4月 5 12:09 .gconf drwx------. 2 root root 4096 4月 5 18:56 .gconfd drwx------. 7 root root 4096 4月 1 12:28 .gnome2 drwx------. 2 root root 4096 4月 1 11:49 .gnome2_private drwxr-xr-x. 3 root root 4096 3月 31 14:26 .gnote drwx------. 2 root root 4096 4月 1 11:46 .gnupg drwxr-xr-x. 2 root root 4096 3月 31 14:26 .gstreamer-0.10 -rw-r--r--. 1 root root 160 4月 1 11:46 .gtk-bookmarks drwx------. 2 root root 4096 3月 31 14:25 .gvfs -rw-------. 1 root root 624 4月 1 11:46 .ICEauthority -rw-r--r--. 1 root root 785 4月 1 11:46 .imsettings.log drwx------. 3 root root 4096 4月 1 12:26 .kde -rw-------. 1 root root 46 4月 20 23:50 .lesshst drwxr-xr-x. 3 root root 4096 3月 31 14:25 .local drwxr-xr-x. 4 root root 4096 4月 1 11:49 .mozilla -rw-------. 1 root root 1711 4月 19 20:23 .mysql_history drwxr-xr-x. 2 root root 4096 3月 31 14:26 .nautilus drwx------. 2 root root 4096 3月 31 14:26 .pulse -rw-------. 1 root root 256 3月 31 14:25 .pulse-cookie -rw-------. 1 root root 3244 4月 1 12:34 .recently-used.xbel drwxr-xr-x. 3 root root 4096 3月 31 14:26 .redhat drwx------. 2 root root 4096 3月 31 14:25 .ssh drwxr-xr-x. 2 root root 4096 3月 30 11:20 .targetcli -rw-r--r--. 1 root root 129 12月 4 2004 .tcshrc drwx------. 3 root root 4096 4月 1 12:18 .thumbnails -rw-------. 1 root root 511 4月 5 00:04 .viminfo -rw-------. 1 root root 52 3月 31 14:18 .xauth58xele -rw-------. 1 root root 52 4月 19 19:34 .xauthAQSudj -rw-------. 1 root root 52 4月 1 20:09 .xauthFR3WoT -rw-------. 1 root root 52 3月 31 21:56 .xauthGPcuIJ -rw-------. 1 root root 52 3月 31 22:06 .xauthhgV2Ad -rw-------. 1 root root 0 3月 30 15:26 .Xauthority
2. cp (復(fù)制命令)
要復(fù)制文件,我們就要用到cp(copy)命令。不過cp命令的用途非常的廣泛,除了單純的復(fù)制之外,還可以建立連接文件(相當(dāng)于windows下的快捷方式),比較兩個文件的新舊而予以更新,以及復(fù)制整個目錄等等。
[root@xiaoluo ~]# cp [-adfilprsu] 源文件(source) 目的文件(destination) [root@xiaoluo ~]# cp [options] source1 source2 source3 .... directory 參數(shù): -a :相當(dāng)于 -pdr 的意思; -d :若來源文件為鏈接文件的屬性(link file),則復(fù)制鏈接文件屬性而非檔案本身; -f :為強(qiáng)制 (force) 的意思,若有重復(fù)或其他疑問時,不會詢問使用者,而強(qiáng)制復(fù)制; -i :若目的文件(destination)已經(jīng)存在時,在覆蓋時會先詢問是否真的動作! -l :進(jìn)行硬式連結(jié) (hard link) 的連結(jié)文件建立,而非復(fù)制文件本身; -p :連同文件的屬性一起復(fù)制過去,而非使用默認(rèn)屬性; -r :遞歸持續(xù)復(fù)制,用于目錄的復(fù)制行為; -s :復(fù)制成為符號鏈接文件 (symbolic link),亦即『快捷方式』文件; -u :若 destination 比 source 舊才更新 destination ! 后需要注意的,如果來源檔有兩個以上,則后一個目的文件一定要是『目錄』
下面我們來寫一些實例來看一下cp命令的常用用法:
實例一:將家目錄下的 .bashrc 復(fù)制到 /tmp 下,并更名為 bashrc
[root@xiaoluo home]# cd /tmp
[root@xiaoluo tmp]# cp ~/.bashrc bashrc
[root@xiaoluo tmp]# cp -i ~/.bashrc bashrc
cp:是否覆蓋"bashrc"? n
# 重復(fù)作兩次動作,由于 /tmp 底下已經(jīng)存在 bashrc 了,加上 -i 參數(shù),
# 則在覆蓋前會詢問使用者是否確定!可以按下 n 或者 y !
# 但是,反過來說,如果不想要詢問時,則加上 -f 這個參數(shù)來強(qiáng)制直接覆蓋!
實例二:將 /var/log/wtmp 復(fù)制到 /tmp 底下
[root@xiaoluo tmp]# cp /var/log/wtmp .
[root@xiaoluo tmp]# ls -l /var/log/wtmp wtmp
-rw-rw-r--. 1 root utmp 204288 4月 21 11:22 /var/log/wtmp
-rw-r--r--. 1 root root 204288 4月 21 13:33 wtmp
# 注意到了嗎?!在不加任何參數(shù)的情況下,文件的所屬者會改變,連權(quán)限也跟著改變了
# 這是個很重要的特性!要注意!還有,連文件建立的時間也不一樣了!
# 如果您想要將文件的所有特性都一起復(fù)制過來,可以加上 -a 參數(shù)即可!
[root@xiaoluo tmp]# cp -a /var/log/wtmp wtmp2
[root@xiaoluo tmp]# ls -l /var/log/wtmp wtmp2
-rw-rw-r--. 1 root utmp 204288 4月 21 11:22 /var/log/wtmp
-rw-rw-r--. 1 root utmp 204288 4月 21 11:22 wtmp2
# 此時我們看到在加上 -a 這個參數(shù)以后,文件的所有屬性都會被復(fù)制過來。
實例三:復(fù)制 /etc/ 這個目錄下的所有內(nèi)容到 /tmp 底下
[root@xiaoluo tmp]# cp /etc/ /tmp
cp: 略過目錄"/etc/" -->> 如果我們復(fù)制的是目錄,此時必須要加上 -r 這個參數(shù)才行
[root@xiaoluo tmp]# cp -r /etc/ /tmp
# 還是要再次的強(qiáng)調(diào)! -r 是可以復(fù)制目錄,但是,檔案與目錄的權(quán)限會被改變
# 所以,也可以利用 cp -a /etc /tmp 來下達(dá)指令! 使用-a 參數(shù)相當(dāng)于同時使用了 -pdr 參數(shù)
3.rm (刪除文件或目錄)
[root@xiaoluo ~]# rm [-fir] 文件或目錄 參數(shù): -f :就是 force 的意思,強(qiáng)制移除; -i :互動模式,在刪除前會詢問使用者是否動作 -r :遞歸刪除!常用在目錄的刪除了
下面我們通過一些實例來看一下rm命令的使用
[root@xiaoluo tmp]# rm bashrc rm:是否刪除普通文件 "bashrc"?y [root@xiaoluo tmp]# rm wtmp wtmp2 rm:是否刪除普通文件 "wtmp"?y rm:是否刪除普通文件 "wtmp2"?y [root@xiaoluo tmp]# rm -rf etc/ -->> 這個就會強(qiáng)制將etc這個目錄以及里面的所有子目錄、文件刪除掉
4.mv (移動文件與目錄、文件重命名)
[root@xiaoluo ~]# mv [-fiu] source destination
[root@xiaoluo ~]# mv [options] source1 source2 source3 .... directory
參數(shù):
-f :force 強(qiáng)制的意思,強(qiáng)制直接移動而不詢問;
-i :若目標(biāo)文件 (destination) 已經(jīng)存在時,就會詢問是否覆蓋!
-u :若目標(biāo)文件已經(jīng)存在,且 source 比較新,才會更新 (update)
實例一:復(fù)制一檔案,建立一目錄,將檔案移動到目錄中
[root@xiaoluo tmp]# cp ~/.bashrc bashrc
[root@xiaoluo tmp]# mkdir mvtest
[root@xiaoluo tmp]# mv bashrc mvtest/
[root@xiaoluo tmp]# cd mvtest/
[root@xiaoluo mvtest]# ls
bashrc
# 將某個檔案移動到某個目錄去,就是這樣做!
實例二:將剛剛的目錄名稱更名為 mvtest2
[root@xiaoluo tmp]# mv mvtest mvtest2 <== 這樣就更名了!
# 其實在 Linux 底下還有個命令令,名稱為 rename ,
# 該命令就是專門用來對文件或者目錄進(jìn)行重命名的鎮(zhèn)明路!可以參閱 man rename 了解其更多的用法 !
5.basename (獲取路徑的文件名) dirname (獲取路徑的目錄名)
完整的文件名長我們可以為4096個字符。那么我們怎么樣知道哪個代表的是文件名?哪個代表的是目錄名呢?其實我們通過斜線 / 就可以來分辨。當(dāng)然Linux下的basename、dirname這兩個命令也可以幫助我們來獲得文件名和目錄名。例如:
[root@xiaoluo ~]# basename /etc/inittab inittab -->>這個就是我們的文件名 [root@xiaoluo ~]# dirname /etc/inittab /etc -->>這個就是我們的目錄名