Linux文件與目錄管理
文件系統(tǒng)
Linux將文件存儲(chǔ)在單個(gè)目錄結(jié)構(gòu)中,這個(gè)目錄被稱為虛擬 目錄(virtual directory)。虛擬目錄將安裝在PC上的所有存儲(chǔ)設(shè)備的文件路徑納入單個(gè)目錄結(jié)構(gòu)中
Linux虛擬目錄結(jié)構(gòu)只包含一個(gè)稱為根(root)目錄的基礎(chǔ)目錄。根目錄下的目錄和文件會(huì)按 照訪問(wèn)它們的目錄路徑一一列出,這點(diǎn)跟Windows類似
| 目錄 | 用途 |
|---|---|
| / | 虛擬目錄的根目錄。通常不會(huì)在這里存儲(chǔ)文件 |
| /bin | 二進(jìn)制目錄,存放許多用戶級(jí)的GNU工具 4 /boot 啟動(dòng)目錄,存放啟動(dòng)文件 |
| /dev | 設(shè)備目錄,Linux在這里創(chuàng)建設(shè)備節(jié)點(diǎn) |
| /etc | 系統(tǒng)配置文件目錄 5 /home 主目錄,Linux在這里創(chuàng)建用戶目錄 |
| /lib | 庫(kù)目錄,存放系統(tǒng)和應(yīng)用程序的庫(kù)文件 |
| /media | 媒體目錄,可移動(dòng)媒體設(shè)備的常用掛載點(diǎn) |
| /mnt | 掛載目錄,另一個(gè)可移動(dòng)媒體設(shè)備的常用掛載點(diǎn) |
| /opt | 可選目錄,常用于存放第三方軟件包和數(shù)據(jù)文件 |
| /proc | 進(jìn)程目錄,存放現(xiàn)有硬件及當(dāng)前進(jìn)程的相關(guān)信息 |
| /root | root用戶的主目錄 |
| /sbin | 系統(tǒng)二進(jìn)制目錄,存放許多GNU管理員級(jí)工具 |
| /run | 運(yùn)行目錄,存放系統(tǒng)運(yùn)作時(shí)的運(yùn)行時(shí)數(shù)據(jù) |
| /srv | 服務(wù)目錄,存放本地服務(wù)的相關(guān)文件 |
| /sys | 系統(tǒng)目錄,存放系統(tǒng)硬件信息的相關(guān)文件 |
| /tmp | 臨時(shí)目錄,可以在該目錄中創(chuàng)建和刪除臨時(shí)工作文件 |
| /usr | 用戶二進(jìn)制目錄,大量用戶級(jí)的GNU工具和數(shù)據(jù)文件都存儲(chǔ)在這里 |
| /var | 可變目錄,用以存放經(jīng)常變化的文件,比如日志文件 |
- 基本列表功能
ls命令最基本的形式會(huì)顯示當(dāng)前目錄下的文件和目錄
-a參數(shù)用來(lái)顯示隱藏文件和普通文件及目錄
-F參數(shù)在目錄名后加了正斜線(/),以方便用戶在輸出中分辨它們。類似地,它會(huì)在可執(zhí)行 文件(比如上面的my_script文件)的后面加個(gè)星號(hào),以便用戶找出可在系統(tǒng)上運(yùn)行的文件。
-R參數(shù)是ls命令可用的另一個(gè)參數(shù),叫作遞歸選項(xiàng)。它列出了當(dāng)前目錄下包含的子目錄中 的文件。如果目錄很多,這個(gè)輸出就會(huì)很長(zhǎng)
- 創(chuàng)建文件
$ touch test_file
$ vim test_file
- 復(fù)制文件
$ cp test_one test_two
新文件test_two和文件test_one的修改時(shí)間并不一樣。如果目標(biāo)文件已經(jīng)存在,cp命令 可能并不會(huì)提醒這一點(diǎn)。最好是加上-i選項(xiàng),強(qiáng)制shell詢問(wèn)是否需要覆蓋已有文件
- 重命名或移動(dòng)文件
mv file_name new_name
mv file_name /path/name
- 刪除文件或目錄
rm filename
rm -i /file/path
- 創(chuàng)建目錄
mkdir -p New_Dir/Sub_Dir/Under_Dir
- 查看整個(gè)文件
# cat
$ cat -n test1
-n參數(shù)會(huì)給所有的行加上行號(hào)
# more命令
$ more filename
# cat命令的主要缺陷是:一旦運(yùn)行,你就無(wú)法控制后面的操作。為了解決這個(gè)問(wèn)題,開(kāi)發(fā)人 員編寫(xiě)了more命令。more命令會(huì)顯示文本文件的內(nèi)容,但會(huì)在顯示每頁(yè)數(shù)據(jù)之后停下來(lái)
# less命令
$ less filename
- 查看部分文件
# tail命令顯示文件最后幾行的內(nèi)容
$ tail log_file
$ tail -n 2 log_file # 顯示文件的最后兩行
# head命令會(huì)顯示文件開(kāi)頭那些行的內(nèi)容
$ head -5 log_file
ln
1)軟鏈接
軟鏈接(又稱符號(hào)鏈接),可以理解為快捷方式,如果刪除原文件,則對(duì)應(yīng)的軟鏈接文件也會(huì)消失。
ln -s test.txt test_softlink
軟鏈接相當(dāng)于給原文件創(chuàng)建了一個(gè)快捷方式,如果刪除原文件,則對(duì)應(yīng)的軟鏈接文件也會(huì)消失。
2)硬鏈接
硬鏈接,相當(dāng)于給原文件取了個(gè)別名,其實(shí)兩者是同一個(gè)文件,刪除二者中任何一個(gè),另一個(gè)不會(huì)消失;對(duì)其中任何一個(gè)進(jìn)行更改,另一個(gè)的內(nèi)容也會(huì)隨之改變,因?yàn)檫@兩個(gè)本質(zhì)上是同一個(gè)文件,只是名字不同。
ln test.txt test_hardlink
理解文件權(quán)限
Linux采用復(fù)雜的位系統(tǒng)來(lái)判定文件和目錄的訪問(wèn)權(quán)限。每個(gè)文件都有三個(gè)安全等級(jí):文件 的屬主、能夠訪問(wèn)文件的默認(rèn)屬組以及系統(tǒng)上的其他用戶。每個(gè)安全等級(jí)通過(guò)三個(gè)訪問(wèn)權(quán)限位來(lái) 定義:讀取、寫(xiě)入以及執(zhí)行,對(duì)應(yīng)于符號(hào)rwx。如果某種權(quán)限被拒絕,權(quán)限對(duì)應(yīng)的符號(hào)會(huì)用單破折線代替
ls命令可以用來(lái)查看Linux系統(tǒng)上的文件、目錄和設(shè)備的權(quán)限
$ ls –l
total 68
-rw-rw-r-- 1 rich rich
drwxrwxr-x 2 rich rich 4096 2010-09-03 15:12 test1
drwxrwxr-x 2 rich rich 4096 2010-09-03 15:12 test2
輸出結(jié)果的第一個(gè)字段就是描述文件和目錄權(quán)限的編碼。這個(gè)字段的第一個(gè)字符代表了對(duì)象 的類型:
-代表文件
d代表目錄
l代表鏈接
c代表字符型設(shè)備
b代表塊設(shè)備
n代表網(wǎng)絡(luò)設(shè)備
之后有3組三字符的編碼。每一組定義了3種訪問(wèn)權(quán)限:
r代表對(duì)象是可讀的
w代表對(duì)象是可寫(xiě)的
x代表對(duì)象是可執(zhí)行的
若沒(méi)有某種權(quán)限,在該權(quán)限位會(huì)出現(xiàn)單破折線。這3組權(quán)限分別對(duì)應(yīng)對(duì)象的3個(gè)安全級(jí)別:
對(duì)象的屬主
對(duì)象的屬組
系統(tǒng)其他用戶
- 改變權(quán)限
chmod命令用來(lái)改變文件和目錄的安全性設(shè)置。該命令的格式如下: chmod options mode file
mode參數(shù)可以使用八進(jìn)制模式或符號(hào)模式進(jìn)行安全性設(shè)置。八進(jìn)制模式設(shè)置非常直觀,直 接用期望賦予文件的標(biāo)準(zhǔn)3位八進(jìn)制權(quán)限碼即可。
$ chmod 760 newfile
$ ls -l newfile
-rwxrw---- 1 rich rich 0 Sep 20 19:16 newfile
- 改變所屬關(guān)系
有時(shí)你需要改變文件的屬主,比如有人離職或開(kāi)發(fā)人員創(chuàng)建了一個(gè)在產(chǎn)品環(huán)境中需要?dú)w屬在 系統(tǒng)賬戶下的應(yīng)用。Linux提供了兩個(gè)命令來(lái)實(shí)現(xiàn)這個(gè)功能:chown命令用來(lái)改變文件的屬主, chgrp命令用來(lái)改變文件的默認(rèn)屬組。
可用登錄名或UID來(lái)指定文件的新屬主。
$ chown dan newfile
# 非常簡(jiǎn)單。chown命令也支持同時(shí)改變文件的屬主和屬組。
$ chown dan.shared newfile
如果你不嫌麻煩,可以只改變一個(gè)目錄的默認(rèn)屬組。
$ chown .rich newfile
最后,如果你的Linux系統(tǒng)采用和用戶登錄名匹配的組名,可以只用一個(gè)條目就改變二者。
$ chown test. newfile
chown命令采用一些不同的選項(xiàng)參數(shù)。-R選項(xiàng)配合通配符可以遞歸地改變子目錄和文件的所 屬關(guān)系。-h選項(xiàng)可以改變?cè)撐募乃蟹?hào)鏈接文件的所屬關(guān)系。
chgrp命令可以更改文件或目錄的默認(rèn)屬組。
$ chgrp shared newfile
用戶賬戶必須是這個(gè)文件的屬主,除了能夠更換屬組之外,還得是新組的成員?,F(xiàn)在shared 組的任意一個(gè)成員都可以寫(xiě)這個(gè)文件了。這是Linux系統(tǒng)共享文件的一個(gè)途徑