Linux 文件管理是學(xué)習(xí) Linux 的基礎(chǔ)铣口,看了鳥叔的 Linux 書籍,把 Linux 目錄及文件相關(guān)的知識整理如下蚕断。
說明:文本的測試環(huán)境是 CentOS 7迹冤。
- 文件屬性
1.1 基本概念
文件擁有者(Owner):在 Linux 中,每個用戶都有自己的主文件夾移宅,也就是 /home/user 文件夾归粉,user 為具體的用戶名,你就是這個文件夾下文件的擁有者漏峰,用戶之間是無法查看的糠悼。
群組(Group):為了便于用戶之間的合作交流,用戶可以組成一個小團(tuán)體浅乔,也就是群組倔喂。在這里大家可以共享一些文件,這些文件就是屬于整個群組的。
其他(Other):對于群組之外的用戶滴劲,都看作是其他人攻晒。
root 這個特殊用戶在 Linux 中是天神一般的存在,因為它可以做到一切事情班挖,當(dāng)然也包括查看任何用戶的主文件夾下的文件鲁捏,而普通用戶是無法查看 root 用戶的主文件夾 /root 的。
在 Linux 系統(tǒng)當(dāng)中萧芙,默認(rèn)的情況下给梅,系統(tǒng)上的所有帳號與一般身份使用者,還有 root 用戶的相關(guān)信息双揪, 都是記錄在 /etc/passwd 這個文件內(nèi)的动羽。至于個人的密碼則是記錄在 /etc/shadow 這個文件中,但是密碼都是經(jīng)過算法加密的渔期,即使是 root 用戶也沒法知道你的明文密碼(查看加密算法可用 authconfig --test | grep hashing 命令)运吓。 此外,Linux所有的群組名稱都是記錄在 /etc/group 文件內(nèi)的疯趟。
1.2 文件屬性
使用 root 用戶登錄拘哨,cd 切換到 /root 目錄,輸入 ls -al 列出目錄下的所有的文件(包含隱藏文件)及屬性信峻,ls 是 list 列表的縮寫倦青,a 即是 attribute 屬性的首字母,l 也是 list 的首字母盹舞。
如上圖产镐,把文件的屬性分為 7 列來看。
第一列為這個文件的類型與權(quán)限踢步,共有十個字符癣亚,第一個字符為文件的類型,d 表示是目錄(dictionary)贾虽,- 表示是普通的文件逃糟,剩下的九個字符為文件的權(quán)限吼鱼。權(quán)限位可分為三組蓬豁,第一組為文件擁有者的權(quán)限,r 表示是可讀(read)菇肃,w 表示是可寫(write)地粪,x 表示是可執(zhí)行(execute);第二組為群組其他人的權(quán)限琐谤,- 表示沒有該位的權(quán)限蟆技;第三組為群組外其他人的權(quán)限,Linux 中的文件權(quán)限控制就是通過這九個權(quán)限位來實現(xiàn)的。
說明:rwx 這三者對于文件和目錄意思是不一樣的质礼。
對于目錄來說旺聚,r 表示擁有此權(quán)限可以讀取該目錄的結(jié)構(gòu)列表,即查看目錄下的文件名和子目錄名眶蕉,但僅僅是文件名稱砰粹,能不能查看文件內(nèi)容,還需要看有沒有文件的可讀(r)權(quán)限造挽;w 表示擁有此權(quán)限可以更改該目錄的結(jié)構(gòu)列表碱璃,即更改目錄下的文件名或者子目錄名,具體為新建文件或目錄饭入,刪除已存在的文件或目錄嵌器,文件或目錄的重命名,文件或目錄的移動谐丢。x 表示擁有此權(quán)限的用戶可以進(jìn)入該目錄中爽航,無法進(jìn)入該目錄便不能讀取目錄中文件中的內(nèi)容,但是如果有目錄的 r 權(quán)限乾忱,是可以查看文件及目錄列表的岳掐,注意這兩者的區(qū)別,x 是文件內(nèi)容饭耳,r 是文件名稱串述。所以如果要開放某一目錄給任何人瀏覽,應(yīng)該至少給予 r 和 x 權(quán)限寞肖。
對于文件來說纲酗,r 表示擁有此權(quán)限可以讀取文件中的實際內(nèi)容;w 表示擁有此權(quán)限可以修改文件中的內(nèi)容新蟆,但不包括刪除文件觅赊,刪除文件權(quán)限是和文件所在目錄的權(quán)限 w 有關(guān)的;x 表示擁有此權(quán)限可以執(zhí)行文件琼稻,如一些命令文件吮螺。
第二列為這個文件有多少的鏈接文件,可想象 Windows 下一個文件的快捷方式有多少個帕翻。
第三列為這個文件的擁有者賬號鸠补。
第四列為這個文件的群組名稱,賬號名默認(rèn)和群組名同名嘀掸。
第五欄為這個文件的容量大小紫岩,默認(rèn)單位為字節(jié)(Byte)。
第六欄為這個文件的創(chuàng)建日期或者是最近的修改日期睬塌,日期格式為月 日 時間泉蝌,如果文件被修改的時間距離現(xiàn)在很久了歇万,則只會顯示年份。顯示文件完整的日期勋陪,可使用 ls -l --full-time 命令贪磺。
第七欄為這個文件的文件名,文件前有 . 代表這個文件為隱藏文件诅愚。
1.3 更改文件或目錄的屬性及權(quán)限
root 用戶可以更改任意文件或目錄的屬性缘挽,而普通用戶只能更改自己主文件夾下的文件或目錄的屬性。
1.3.1 chmod 改變文件及目錄權(quán)限
命令格式:chmod [-R] 權(quán)限寫法 文件或目錄呻粹,R 為可選參數(shù)壕曼,加上此參數(shù)表示同時遞歸改變目錄下的所有子目錄或文件的權(quán)限。
兩種方式:
- 數(shù)字類型
使用數(shù)字來表示 rwx等浊,r->4腮郊,w->2,x->1筹燕。對三組權(quán)限(Owner轧飞,Group,Other)設(shè)置撒踪,只需將三個數(shù)字累加起來过咬,沒有某一位權(quán)限,累加數(shù)字就為 0制妄。
- 符號類型
使用符號 u掸绞,g,o 來代表 User(Owner)耕捞,Group衔掸,Other,通過給這三個符號賦值(=)俺抽,加入(+)敞映,除去(-) rwx 來設(shè)置權(quán)限,另外還可以使用 a 表示所有用戶(All)來設(shè)置權(quán)限磷斧。
示例:
使用 root 用戶在系統(tǒng)的根目錄下振愿,創(chuàng)建 test 文件,查看 test 文件夾設(shè)置的默認(rèn)屬性為 -rw-r--r-- 1 root root 日期 test弛饭。
cd / # 切換目錄到根目錄
touch test # 默認(rèn)屬性創(chuàng)建 test文件
ls -l test # 查看 test 文件夾屬性
然后使用另外一個普通用戶登錄系統(tǒng)冕末,打開該文件,但是由于只有只讀屬性孩哑,所以無法編輯這個 test 空白文件栓霜。
使用 root 用戶翠桦,修改該文件的權(quán)限横蜒,使同群組的用戶(Group)及其他用戶(Other)可以編輯此文件胳蛮。
命令1:
chmod 746 test # 修改 test 文件屬性
命令2:
chmod g=rw,o=rw test # 使用重新賦值的方式設(shè)置權(quán)限,也可以將 g 和 o 連寫 chmod go=rw test
命令3:
chmod g+w,o+w test # 使用加入新權(quán)限的方式設(shè)置權(quán)限丛晌,也可以將 g 和 o 連寫成 chmod go+w test
命令4:
chmod a+w test # 直接使用 a 給所有用戶加上 w 權(quán)限
給文件設(shè)置權(quán)限命令有很多種仅炊,只需選擇一種即可。這樣修改 test 文件的權(quán)限后澎蛛,其他用戶就可以編輯該文件了抚垄。
1.3.2 chown 改變文件及目錄擁有者
命令格式:chown [-R] 用戶名稱[:群組名稱] 文件或目錄,R 為可選參數(shù)谋逻,加上此參數(shù)表示同時遞歸改變目錄下的所有子目錄或文件的擁有者呆馁。群組名稱也可以通過 chown 命令修改,當(dāng)然還可以通過下面的 chgrp 命令修改毁兆。
示例:
假如 root 用戶將 test 文件復(fù)制一份給另一個普通用戶 wzw浙滤,復(fù)制完后,test 副本的文件屬性中气堕,文件所有者和群組還是 root root纺腊,也就是復(fù)制操作會將原文件的文件屬性也復(fù)制。那么 wzw 這個普通用戶收到這個副本文件時茎芭,并不具有該文件的所有操作揖膜,如重新設(shè)置該副本文件的權(quán)限,所以 root 用戶在將這個副本文件交給 wzw 這個用戶之前梅桩,要將這個文件的擁有者修改為 wzw壹粟。
cp test test1 # 復(fù)制 test 文件為 test1 文件
ls -l test1 # 查看復(fù)制后的 test1 文件的屬性,文件擁有者和群組仍為 root root
chown wzw test:test test1 # 將 test1 文件擁有者和群組都修改為 wzw 用戶
ls -l test1 # 再次查看 test1 文件的屬性宿百,文件擁有者和群組已經(jīng)修改為 wzw wzw
修改文件屬性中群組也可以使用下面的 chgrp 命令煮寡。
1.3.3 chgrp 改變文件及目錄群組
命令格式:chgrp [-R] 群組名稱 文件或目錄,R 為可選參數(shù)犀呼,加上此參數(shù)表示同時遞歸改變目錄下的所有子目錄或文件的擁有者幸撕。
示例:
將上面復(fù)制的文件 test1 群組設(shè)為已經(jīng)存在的 root 群組和不存在的 test 群組,在 Linux 中外臂,創(chuàng)建新用戶后坐儿,默認(rèn)還會創(chuàng)建對應(yīng)的用戶名稱的群組。
chgrp root test1 # 將 test1 文件的群組屬性設(shè)為 root 群組
ls -l test1 # 查看 test1 文件的屬性宋光,可以看到群組已經(jīng)改為了 root貌矿,但文件的擁有者還是 wzw 沒有變
chgrp test test1 # 將 test1 文件的群組屬性設(shè)為 test 群組,會提示 test 是無效的組
chown 和 chgrp 命令都可以修改文件屬性的群組罪佳,但是 chown 還可以設(shè)置文件的擁有者逛漫,這就是兩者的區(qū)別。
- 目錄配置
2.1 FHS 標(biāo)準(zhǔn)
由于 Linux 的發(fā)行版非常多赘艳,除了文本使用的 CentOS 外酌毡,常見的還有 Ubuntu克握,Debian,RedHat 等等枷踏。如果每個發(fā)行版的系統(tǒng)目錄結(jié)構(gòu)都不一樣菩暗,那么就需要學(xué)習(xí)每個版本的 Linux,這肯定是我們不愿看到的旭蠕,所以 Linux 社區(qū)就制定了文件系統(tǒng)層次結(jié)構(gòu)標(biāo)準(zhǔn)停团,簡稱 FHS 標(biāo)準(zhǔn)。FHS 標(biāo)準(zhǔn)定義了 Linux 操作系統(tǒng)中主要目錄及目錄內(nèi)容掏熬,大多數(shù)的 Linux 發(fā)行版都是遵從 FHS 標(biāo)準(zhǔn)并維護(hù) FHS 的要求的佑稠。如今 FHS 標(biāo)準(zhǔn)也在不斷的修訂中。
2.2 目錄說明
目錄 說明
/ 整個文件系統(tǒng)層次結(jié)構(gòu)的根目錄
/bin 可執(zhí)行文件(命令)目錄旗芬,可以被root與一般用戶使用讶坯,如 cat,chmod岗屏,mkdir 等常用命令
/sbin 開機辆琅、修復(fù)、還原系統(tǒng)所需要的指令目錄这刷,這些指令只有 root 才能夠利用來“設(shè)置”系統(tǒng)婉烟,其他使用者最多只能用來“查詢”
/boot 開機引導(dǎo)文件目錄,如 Linux 的內(nèi)核(kernel)文件名為 vmlinuz暇屋,開機管理程序 grub
/dev 存取設(shè)備目錄似袁。在 Linux 中,任何設(shè)備都是以文本形態(tài)存在于這個目錄中的咐刨,如 cpu昙衅,disk 等
/etc 系統(tǒng)主要的配置文件目錄,如前面提到的用戶的密碼信息定鸟。
/lib 系統(tǒng)函數(shù)庫目錄
/media 可移除的設(shè)備目錄而涉,如光盤,DVD
/mnt 暫時掛載的設(shè)備目錄
/opt 第三方軟件放置目錄联予,如 KDE 桌面管理系統(tǒng)
/run 系統(tǒng)開機后所產(chǎn)生的各項信息放置目錄啼县,可以使用內(nèi)存仿真
/srv 服務(wù)所需要取用的數(shù)據(jù)目錄,如 WWW 服務(wù)沸久,F(xiàn)TP 服務(wù)
/tmp 一般使用者或者是正在執(zhí)行的程序暫時放置文件的目錄季眷,任何人都能夠存取,重要的數(shù)據(jù)不可放置在此目錄
/usr 軟件資源所放置的目錄卷胯,類似Windows 系統(tǒng)的 C:\Windows\ 和 C:\Program files\ 安裝一些系統(tǒng)默認(rèn)的軟件或者一般的軟件
/usr/bin 用戶能夠使用的指令目錄
/usr/lib 類似于 /lib 目錄
/usr/lib64 類似于 /lib64 目錄
/usr/libexec 某些不被一般使用者慣用的可執(zhí)行文件或腳本目錄子刮,如 X 圖形窗口下面的操作指令
/usr/local 軟件的安裝目錄
/usr/sbin 非系統(tǒng)正常運行所需要的系統(tǒng)指令,如某些網(wǎng)絡(luò)服務(wù)軟件的服務(wù)指令窑睁,基本功能和 /sbin 差不多
/usr/share 只讀架構(gòu)的數(shù)據(jù)文件和共享文件目錄
/usr/games 與游戲比較相關(guān)的數(shù)據(jù)放置目錄
/usr/include c/c++等程序語言的文件開始(header)與包含檔(include)放置目錄挺峡,當(dāng)我們以t arball 方式 (*.tar.gz 的方式安裝軟件)安裝某些軟件時葵孤,會使用到里頭的許多包含檔
/usr/src 一般源代碼建議放置目錄
/home 使用者主文件夾目錄。沒創(chuàng)建一個新的使用者賬號沙郭,便在該目錄下創(chuàng)建一個和用戶名稱相同的文件夾
/lib64 用來存放與 /lib 不同的格式的二進(jìn)制函數(shù)庫佛呻,如支持 64 位的 /lib64 函數(shù)
/root 系統(tǒng)管理員(root)的主文件夾
/proc 虛擬文件系統(tǒng)目錄裳朋,數(shù)據(jù)都是放在內(nèi)存中的病线,而不占用任何的硬盤空間,如系統(tǒng)核心鲤嫡、行程信息送挑,網(wǎng)絡(luò)狀態(tài)
/sys 虛擬文件系統(tǒng)目錄,和 /proc 類似暖眼,同樣也是不占用硬盤空間惕耕,主要也是記錄核心與系統(tǒng)硬件信息較相關(guān)的信息
/var 經(jīng)常性變動的文件目錄,如高速緩存诫肠,登錄文件以及軟件運行中產(chǎn)生的文件司澎,如 數(shù)據(jù)庫文件
/var/cache 應(yīng)用程序本身運行過程中會產(chǎn)生緩存文件目錄
/var/lib 程序執(zhí)行過程中數(shù)據(jù)文件放置的目錄
/var/lock 文件鎖目錄,如共享鎖栋豫,只能讀取文件挤安,不能修改文件
/var/log 登錄文件放置的目錄
/var/mail 個人電子郵件信箱放置的目錄
/var/run 與 /run 類似
/var/spool 排隊等待其他程序使用的數(shù)據(jù)目錄,如工作調(diào)度數(shù)據(jù)
在 CentOS7 中丧鸯,目錄的編排與過去的版本不同蛤铜,將許多原本放在根目錄(/)中的目錄,放到了 /usr 目錄中了丛肢,然后只在根目錄下加上目錄的鏈接設(shè)置围肥。包括下面這些:
- /bin -> /usr/bin
- /sbin -> /usr/sbin
- /lib -> /usr/lib
- /lib64 -> /usr/lib64
- /var/lock -> /run/lock
- /var/run -> /run
這樣做帶可以隱藏文件路徑拦焚,增加權(quán)限安全楼眷,有節(jié)省存儲的好處谨履。
結(jié)合上面的目錄邦蜜,Linux 的目錄樹結(jié)構(gòu)如下圖所示勇吊。
- 文件與目錄管理
3.1 特殊目錄與路徑
3.1.1 特殊目錄
- .:表示當(dāng)前的目錄调限,也可以使用 ./ 來表示衙荐。
- ..:表示上一級目錄荆陆,也可以使用 ../ 來表示篮愉。
- -:表示前一個工作目錄腐芍。
- ~:表示當(dāng)前使用者的主文件夾,也即是 /home/user名试躏。
- ~user名:表示 user 這個使用者的主文件夾猪勇。
3.1.2 特殊路徑
- 絕對路徑
一種從系統(tǒng)的根目錄開始寫起的路徑表示方式,如 /home/wzw/Desktop
- 相對路徑
一種以當(dāng)前目錄為相對位置的路徑的表示方式颠蕴,如當(dāng)前在 /home/wzw/Download 目錄中泣刹,想切換到 /home/wzw/Desktop 目錄助析,只需要使用 cd ../Desktop 命令即可。
絕對路徑寫起來可能會比絕對路徑椅您,但具有絕對的正確性外冀,而相對路徑相比絕對路徑更加的靈活,如在寫程序時為了程序的可移植性掀泳,常使用相對路徑來表示目錄雪隧。
3.2 目錄相關(guān)命令
3.2.1 切換目錄
命令格式:cd 目錄
cd 是 Change Dictionary 的縮寫,目錄可以為前面提到的特殊目錄员舵,使用絕對路徑或者時相對路徑表示脑沿。
示例:
cd / # 切換目錄到根目錄
3.2.2 顯示當(dāng)前目錄
命令格式:pwd [-p]
pwd 是 Print Working Dictionary 的縮寫,也就是顯示當(dāng)前所在的目錄马僻,p 參數(shù)是可以取得當(dāng)前目錄的真實目錄庄拇,如鏈接的目錄文件 /bin ,直接使用 pwd 命令韭邓,顯示 /bin措近,但加上 P 參數(shù),顯示真實的目錄為 /usr/bin女淑。
示例:
cd /bin # 切換目錄到 /bin
pwd # 顯示當(dāng)前目錄為 /bin
pwd -P # 顯示當(dāng)前目錄真實目錄為 /usr/bin,CentOS7 下成立瞭郑,其他版本 Linux 可能不成立哦
3.2.3 查看目錄
命令格式:ls [-aAdfFhilnrRSt] 目錄名稱或者文件名、ls [--color={never,auto,always}] 目錄名稱或者文件名诗力、ls [--full-time] 目錄名稱或者文件名
ls 這個命令的參數(shù)比較多凰浮,參數(shù)的詳情可以使用 man 、 info 查看 ls 詳細(xì)信息苇本,或者查看 ls 的幫助ls -- help袜茧。
選項與參數(shù):
-a :全部的文件,連同隱藏文件( 開頭為 . 的文件) 一起列出來(常用)
-A :全部的文件瓣窄,連同隱藏文件笛厦,但不包括 . 與 .. 這兩個目錄
-d :僅列出目錄本身,而不是列出目錄內(nèi)的文件數(shù)據(jù)(常用)
-f :直接列出結(jié)果俺夕,而不進(jìn)行排序 (ls 默認(rèn)會以文件名排序I淹埂)
-F :根據(jù)文件、目錄等信息劝贸,給予附加數(shù)據(jù)結(jié)構(gòu)姨谷,例如:
*:代表可可執(zhí)行文件; /:代表目錄映九; =:代表 socket 文件梦湘; |:代表 FIFO 文件;
-h :將文件大小以人類較易讀的方式(例如 GB, KB 等等)列出來;
-i :列出 inode 數(shù)字捌议,也即是鏈接到目錄或者文件的數(shù)目
-l :長數(shù)據(jù)串行出哼拔,包含文件的屬性與權(quán)限等等數(shù)據(jù)(常用)
-n :列出 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)
這些參數(shù)最常用的還是 l 參數(shù)斋荞,為了方面使用,很多 Linux 版本都給 ls -l 命令起了個別名 ll虐秦,兩種命令是同樣的作用平酿。
3.2.4 創(chuàng)建新的目錄
命令格式:mkdir [-mp] 目錄名稱
mkdir 為 Make Dictionary 的縮寫,目錄名稱前可以加上目錄位置悦陋,m 參數(shù)設(shè)置目錄權(quán)限蜈彼,不采用默認(rèn)的目錄權(quán)限(umask),p 參數(shù)遞歸創(chuàng)建所需的目錄俺驶。
示例:
cd ~/Desktop # 切換用戶的主文件夾下的桌面
mkdir test # 在桌面上創(chuàng)建 test 目錄
mkdir -m 711 test0 # 創(chuàng)建 test0 目錄幸逆,并給目錄設(shè)置 rwx--x--x 權(quán)限
ls -ld test0 # 顯示 test0 目錄的屬性
mkdir -p test1/test2/test3 # 創(chuàng)建多級目錄,不加 p 參數(shù)暮现,會提示沒有此文件或目錄还绘,創(chuàng)建失敗
ls -ld test* # 顯示剛才創(chuàng)建的前綴為 test 目錄的屬性
3.2.5 刪除空的目錄
命令格式:rmdir [-p] 目錄名稱
rmdir 為 Remove Dictionary 的縮寫,p 參數(shù)遞歸刪除空目錄栖袋。
示例:
mkdir test # 刪除上面創(chuàng)建的 test 目錄
mkdir -p test1/test2/test3 # 遞歸刪除上面創(chuàng)建的 test1/test2/test3 目錄
但是如果目錄不為空拍顷,即目錄內(nèi)有內(nèi)容,就不能使用 rmdir 刪除目錄塘幅,而要用 rm -r 命令刪除昔案。
命令格式:rm [-rf] 目錄名稱
r 參數(shù)是將目錄下的內(nèi)容一一詢問是否要刪除,在加上 f 參數(shù)則不詢問直接強行刪除电媳。
示例:
mkdir test # 創(chuàng)建 test 目錄
touch test/test.txt # 在 test 目錄中創(chuàng)建 test.txt 文件
rm -rf test # 刪除 test 目錄及目錄中的所有內(nèi)容踏揣,如果直接 rmdir 刪除,會提示刪除失敗匾乓,目錄非空
3.3 文件相關(guān)命令
3.3.1 新建文件
命令格式:touch [-acdmt] 文件名稱
一個文件在 Linux 中是有多個時間參數(shù)來記錄時間相關(guān)的信息的捞稿。
- modification time (mtime): 當(dāng)該文件的“內(nèi)容數(shù)據(jù)”變更時,就會更新這個時間,內(nèi)
容數(shù)據(jù)指的是文件的內(nèi)容括享,而不是文件的屬性或權(quán)限搂根。 - status time (ctime): 當(dāng)該文件的“狀態(tài) (status)”改變時,就會更新這個時間铃辖,像是權(quán)限與屬性被更改了剩愧,都會更新這個時間。
- access time (atime): 當(dāng)“該文件的內(nèi)容被取用”時娇斩,就會更新這個讀取時間(access)仁卷。舉例來說,我們使用 cat 去讀取一個文件時犬第, 就會更新該文件的 atime 锦积。
touch 命令不僅可以創(chuàng)建文件,還可以修改文件的時間信息歉嗓,a 參數(shù)就是修改 atime 的丰介;m 參數(shù)是修改 mtime 的;c 參數(shù)修改文件的時間鉴分,若該文件不存在則不創(chuàng)建新文件哮幢;d 參數(shù)是 date 簡寫,可以在后面直接加上時間參數(shù)志珍。
3.3.2 復(fù)制文件
命令格式:cp [-adfilprsu] 來源文件 目標(biāo)文件
選項與參數(shù):
-a :相當(dāng)于 -dr --preserve=all 的意思橙垢,至于 dr 請參考下列說明(常用)
-d :若來源文件為鏈接文件的屬性(link file),則復(fù)制鏈接文件屬性而非文件本身
-f :為強制(force)的意思伦糯,若目標(biāo)文件已經(jīng)存在且無法打開柜某,則移除后再嘗試一次
-i :若目標(biāo)文件(destination)已經(jīng)存在時,在覆蓋時會先詢問動作的進(jìn)行(常用)
-l :進(jìn)行硬式鏈接(hard link)的鏈接文件創(chuàng)建敛纲,而非復(fù)制文件本身
-p :連同文件的屬性(權(quán)限喂击、用戶、時間)一起復(fù)制過去载慈,而非使用默認(rèn)屬性(備份常用)
-r :遞回持續(xù)復(fù)制惭等,用于目錄的復(fù)制行為(常用)
-s :復(fù)制成為符號鏈接文件 (symbolic link),亦即“捷徑”文件
-u :destination 比 source 舊才更新 destination办铡,或 destination 不存在的情況下才復(fù)制
--preserve=all :除了 -p 的權(quán)限相關(guān)參數(shù)外辞做,還加入 SELinux 的屬性, links, xattr 等也復(fù)制了。
最后需要注意的寡具,如果來源文件有兩個以上秤茅,則最后一個目的文件一定要是“目錄”才行!
3.3.3 刪除文件
在上面刪除非空目錄中提到的命令也同樣適用于刪除文件童叠。
3.3.4 移動文件
命令格式:cp [--fiu] 來源位置 目標(biāo)位置
f 參數(shù)為如果目標(biāo)文件已存在框喳,則不詢問直接覆蓋课幕,i 參數(shù)為如果目標(biāo)文件已存在,則詢問是否覆蓋五垮,u 參數(shù)為如果目標(biāo)文件已存在乍惊,但來源文件比較新,則更新目標(biāo)文件為來源文件放仗,另外此命令還可以用來重命名文件和目錄润绎。
3.3.5 查看內(nèi)容
查看一個文件內(nèi)容的命令很多,最常用的有 cat诞挨、more莉撇、less 等等,當(dāng)然我們也可以直接在文本編輯器中惶傻,如vim(還有語法高亮)打開查看文件的內(nèi)容棍郎。
- cat 是 Concatenate(連續(xù))的簡寫,并不是“貓”的意思哦银室,cat 由第一行開始顯示文件內(nèi)容
- tac 從最后一行開始顯示涂佃,可以看出 tac 是 cat 的倒寫。
- nl 顯示的時候粮揉,順道輸出行號巡李。
- more 一頁一頁的顯示文件內(nèi)容抚笔,空格鍵向下翻頁扶认,Enter 鍵向下滾動一行,/字符串殊橙,查詢字符串辐宾。
- less 與 more 類似,但是比 more 更好的是膨蛮,他可以往前翻頁叠纹,空格鍵向下翻頁,pagedown 鍵向下翻動一頁敞葛,pageup 向上翻動一頁誉察。
- head 只看頭幾行。
- tail 只看尾巴幾行惹谐。
- od 以二進(jìn)制的方式讀取文件內(nèi)容持偏。
個人 GitHub 地址:https://github.com/weizhiwen,歡迎來訪氨肌。