linux文件系統(tǒng)結(jié)構(gòu)
- 顯示linux根目錄下所有文件,其中
/為根目錄
ls -l /
total 24
lrwxrwxrwx. 1 root root 7 Jun 30 23:11 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Jul 11 13:03 boot
drwxr-xr-x. 21 root root 3360 Jul 11 13:23 dev
drwxr-xr-x. 143 root root 8192 Jul 11 13:23 etc
drwxr-xr-x. 3 root root 25 Jun 30 23:19 home
lrwxrwxrwx. 1 root root 7 Jun 30 23:11 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Jun 30 23:11 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Apr 11 2018 media
drwxr-xr-x. 2 root root 6 Apr 11 2018 mnt
drwxr-xr-x. 3 root root 16 Jun 30 23:14 opt
dr-xr-xr-x. 226 root root 0 Jul 11 13:23 proc
dr-xr-x---. 5 root root 184 Jun 30 23:21 root
drwxr-xr-x. 40 root root 1220 Jul 11 13:24 run
lrwxrwxrwx. 1 root root 8 Jun 30 23:11 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Apr 11 2018 srv
dr-xr-xr-x. 13 root root 0 Jul 11 13:23 sys
drwxrwxrwt. 25 root root 4096 Jul 11 13:25 tmp
drwxr-xr-x. 13 root root 155 Jun 30 23:11 usr
drwxr-xr-x. 21 root root 4096 Jun 30 23:21 var
路徑表示
- 文件路徑,例如在cat文件的完整目錄名為
/home/cat,有兩個(gè)特殊的工作目錄,一個(gè)是用戶當(dāng)前工作目錄.,另一個(gè)是當(dāng)前目錄的上一層目錄..
cd ..
- 絕對(duì)路徑是指從根目錄開(kāi)始一直寫(xiě)到所需文件為止,例如我要查找
panjianqiao文件
cd /home/panjianqiao
- 相對(duì)路徑是指在當(dāng)前的工作目錄下,直接查找所在目錄及以下的文件,例如我現(xiàn)在在
panjianqiao文件夾下,要尋找Desktop文件
cd Desktop
假如我在Desktop下要切換到Downloads,可以有兩種辦法:
絕對(duì)路徑
cd /home/panjianqiao/Downloads
相對(duì)路徑
cd ../Downloads
cd(change directory縮寫(xiě))命令
Linux 命令按照來(lái)源方式,可分為兩種,分別是shell內(nèi)置命令和外部命令。
Shell 內(nèi)置命令,就是 Shell 自帶的命令,這些命令是沒(méi)有執(zhí)行文件的。
外部命令就是由程序員單獨(dú)開(kāi)發(fā)的,是命令,所以會(huì)有命令的執(zhí)行文件。
Linux中的絕大多數(shù)命令是外部命令,而 cd 命令是一個(gè)典型的 Shell 內(nèi)置命令,所以 cd 命令沒(méi)有執(zhí)行文件所在路徑。
cd ~ #回到自己的主目錄
cd ~panjianqiao #返回指定用戶的主目錄(這里為panjianqiao)
cd - #返回上次所在目錄
cd . #返回當(dāng)前所在目錄
cd .. #返回父目錄
pwd(print working directory)命令
[panjianqiao@localhost ~]$ whoami #用于返回當(dāng)前登陸用戶
panjianqiao
[panjianqiao@localhost ~]$ pwd #顯示當(dāng)前工作路徑
/home/panjianqiao
ls(list)命令
[panjianqiao@localhost ~]$ ls -a #返回全部文件,包括隱藏文件
. .bash_profile .dbus .esd_auth Music Templates
.. .bashrc Desktop .ICEauthority Pictures Videos
.bash_history .cache Documents .local .pki
.bash_logout .config Downloads .mozilla Public
[panjianqiao@localhost ~]$ ls -A #返回全部文件,不包括.和..文件
.bash_history .bashrc .dbus Downloads .local Pictures Templates
.bash_logout .cache Desktop .esd_auth .mozilla .pki Videos
.bash_profile .config Documents .ICEauthority Music Public
[panjianqiao@localhost ~]$ ls -l #使用長(zhǎng)格式列出文件和目錄信息
total 0
drwxr-xr-x. 2 panjianqiao panjianqiao 40 Jul 11 13:17 Desktop
drwxr-xr-x. 2 panjianqiao panjianqiao 6 Jun 30 23:22 Documents
drwxr-xr-x. 2 panjianqiao panjianqiao 6 Jun 30 23:22 Downloads
drwxr-xr-x. 2 panjianqiao panjianqiao 6 Jun 30 23:22 Music
drwxr-xr-x. 2 panjianqiao panjianqiao 6 Jun 30 23:22 Pictures
drwxr-xr-x. 2 panjianqiao panjianqiao 6 Jun 30 23:22 Public
drwxr-xr-x. 2 panjianqiao panjianqiao 6 Jun 30 23:22 Templates
drwxr-xr-x. 2 panjianqiao panjianqiao 6 Jun 30 23:22 Videos
mkdir(make directory)命令
- -m 選項(xiàng)用于手動(dòng)配置所創(chuàng)建目錄的權(quán)限,而不再使用默認(rèn)權(quán)限。
- -p 選項(xiàng)遞歸創(chuàng)建所有目錄,以創(chuàng)建 /home/test/demo 為例,在默認(rèn)情況下,你需要一層一層的創(chuàng)建各個(gè)目錄,而使用 -p 選項(xiàng),則系統(tǒng)會(huì)自動(dòng)幫你創(chuàng)建 /home、/home/test 以及 /home/test/demo。
[panjianqiao@localhost ~]$ mkdir test
[panjianqiao@localhost ~]$ ls
Desktop Documents Downloads Music Pictures Public Templates test Videos
[panjianqiao@localhost ~]$ mkdir -p ./test2/demo
[panjianqiao@localhost ~]$ ls
Desktop Downloads Pictures Templates test2
Documents Music Public test Videos
[panjianqiao@localhost ~]$ mkdir -p test3/demo
[panjianqiao@localhost ~]$ ls
Desktop Downloads Pictures Templates test2 Videos
Documents Music Public test test3
[panjianqiao@localhost ~]$ mkdir -m 711 test4
[panjianqiao@localhost ~]$ ls
Desktop Downloads Pictures Templates test2 test4
Documents Music Public test test3 Videos
[panjianqiao@localhost ~]$ ls -l
total 0
drwxr-xr-x. 2 panjianqiao panjianqiao 40 Jul 11 13:17 Desktop
drwxr-xr-x. 2 panjianqiao panjianqiao 6 Jun 30 23:22 Documents
drwxr-xr-x. 2 panjianqiao panjianqiao 6 Jun 30 23:22 Downloads
drwxr-xr-x. 2 panjianqiao panjianqiao 6 Jun 30 23:22 Music
drwxr-xr-x. 2 panjianqiao panjianqiao 6 Jun 30 23:22 Pictures
drwxr-xr-x. 2 panjianqiao panjianqiao 6 Jun 30 23:22 Public
drwxr-xr-x. 2 panjianqiao panjianqiao 6 Jun 30 23:22 Templates
drwxrwxr-x. 2 panjianqiao panjianqiao 6 Jul 13 14:18 test
drwxrwxr-x. 3 panjianqiao panjianqiao 18 Jul 13 14:19 test2
drwxrwxr-x. 3 panjianqiao panjianqiao 18 Jul 13 14:20 test3
drwx--x--x. 2 panjianqiao panjianqiao 6 Jul 13 14:25 test4
drwxr-xr-x. 2 panjianqiao panjianqiao 6 Jun 30 23:22 Videos
rmdir(remove empty directory)命令
此命令只能刪除空目錄(此命令并不常用)
- -p 選項(xiàng)遞歸刪除所有目錄
[panjianqiao@localhost ~]$ rmdir test
[panjianqiao@localhost ~]$ ls
Desktop Downloads Pictures Templates test3 Videos
Documents Music Public test2 test4
[panjianqiao@localhost ~]$ rmdir ./test2 #只能刪除空目錄,這里的test2中還存在demo
rmdir: failed to remove ‘./test2’: Directory not empty
[panjianqiao@localhost ~]$ rmdir ./test2/demo #刪除了test2中的demo目錄,test2還存在
[panjianqiao@localhost ~]$ ls
Desktop Downloads Pictures Templates test3 Videos
Documents Music Public test2 test4
touch 命令
創(chuàng)建文件以及修改文件參數(shù)(當(dāng)文件不存在會(huì)創(chuàng)建文件,文件存在時(shí)會(huì)修改文件參數(shù))
Linux 系統(tǒng)中,每個(gè)文件主要擁有 3 個(gè)時(shí)間參數(shù)(通過(guò) stat 命令進(jìn)行查看),分別是文件的訪問(wèn)時(shí)間、數(shù)據(jù)修改時(shí)間以及狀態(tài)修改時(shí)間:
- 訪問(wèn)時(shí)間(Access Time,簡(jiǎn)稱 atime):只要文件的內(nèi)容被讀取,訪問(wèn)時(shí)間就會(huì)更新。例如,使用 cat 命令可以查看文件的內(nèi)容,此時(shí)文件的訪問(wèn)時(shí)間就會(huì)發(fā)生改變。
- 數(shù)據(jù)修改時(shí)間(Modify Time,簡(jiǎn)稱 mtime):當(dāng)文件的內(nèi)容數(shù)據(jù)發(fā)生改變,此文件的數(shù)據(jù)修改時(shí)間就會(huì)跟著相應(yīng)改變。
- 狀態(tài)修改時(shí)間(Change Time,簡(jiǎn)稱 ctime):當(dāng)文件的狀態(tài)發(fā)生變化,就會(huì)相應(yīng)改變這個(gè)時(shí)間。比如說(shuō),如果文件的權(quán)限或者屬性發(fā)生改變,此時(shí)間就會(huì)相應(yīng)改變。
[panjianqiao@localhost ~]$ touch bols #創(chuàng)建bols文件
[panjianqiao@localhost ~]$ ls
bols Desktop Documents Downloads Music Pictures Public Templates Videos
[panjianqiao@localhost ~]$ ll --time=atime bols #查看文件的訪問(wèn)時(shí)間,ll相當(dāng)于ls -l
-rw-rw-r--. 1 panjianqiao panjianqiao 0 Jul 13 15:03 bols
[panjianqiao@localhost ~]$ touch bols
[panjianqiao@localhost ~]$ ll --time=atime bols #即使bols文件存在,也不會(huì)報(bào)錯(cuò),只會(huì)修改訪問(wèn)時(shí)間
-rw-rw-r--. 1 panjianqiao panjianqiao 0 Jul 13 15:42 bols
[panjianqiao@localhost ~]$ ll --time=ctime bols #查看bols文件的狀態(tài)修改時(shí)間
-rw-rw-r--. 1 panjianqiao panjianqiao 0 Jul 13 15:42 bols
ln 命令
linux文件操作系統(tǒng)主要使用的是ext4文件系統(tǒng),ext4文件系統(tǒng)會(huì)把分區(qū)分為兩大部分,一部分為inode(節(jié)點(diǎn)),另一部分為block(數(shù)據(jù)塊)。
inode默認(rèn)大小為128Byte,用來(lái)記錄文件的權(quán)限(r,w,x)、文件的所有者和大小、文件的atime、ctime和mtime以及其真正保存文件數(shù)據(jù)的block編號(hào)。每個(gè)文件都有一個(gè)inode,其中文件名是不包含在inode中的,文件名存在于文件所在目錄中的block中。
block用于存放數(shù)據(jù),大小可以是1KB、2KB、4KB,默認(rèn)大小為4KB,如果單個(gè)block存放不下數(shù)據(jù),則可以使用多個(gè)block,其中多個(gè)block數(shù)據(jù)可能是連續(xù)的也可能是分散的。
因此,想要讀取一個(gè)文件首先應(yīng)該在目錄的block中找到該文件的inode,通過(guò)inode索引到實(shí)際存放數(shù)據(jù)的block上。
ln命令用于給文件創(chuàng)建鏈接,根據(jù)linux文件系統(tǒng)特點(diǎn)分為硬鏈接和軟鏈接
- 硬鏈接:通過(guò)給文件的inode信息分配多個(gè)文件名
- 軟鏈接:相當(dāng)于給文件產(chǎn)生快捷方式(類比于windows)
- 無(wú)-s:建立硬鏈接
- -s :建立軟鏈接
- -f:強(qiáng)制建立鏈接,如果文件存在,則刪除文件后再建立鏈接文件
[panjianqiao@localhost ~]$ touch demo
[panjianqiao@localhost ~]$ ln /home/panjianqiao/demo /tmp #建立硬鏈接,其中tmp下的文件屬于臨時(shí)文件,若未標(biāo)識(shí)文件名則與原文件名保持一致
[panjianqiao@localhost ~]$ touch demo2
[panjianqiao@localhost ~]$ ln -s /home/panjianqiao/demo2 /tmp #建立軟鏈接。注意!軟鏈接文件路徑必須為絕對(duì)路徑,硬鏈接文件路徑無(wú)此要求
[panjianqiao@localhost ~]$ cd /tmp
[panjianqiao@localhost tmp]$ ls #由于篇幅限制,只顯示相關(guān)信息,鏈接文件存在于tmp文件夾下
demo
demo2
硬鏈接
[panjianqiao@localhost tmp]$ ls -i /home/panjianqiao/demo /home/panjianqiao/demo2 #查看兩個(gè)文件的inode編號(hào)
2982387 /home/panjianqiao/demo 2982388 /home/panjianqiao/demo2
[panjianqiao@localhost tmp]$ ls -i /tmp/demo /tmp/demo2 #查看兩個(gè)鏈接文件的inode編號(hào)
2982387 /tmp/demo 17540877 /tmp/demo2
從上述分析可以看出,硬鏈接只是文件名字不同,其實(shí)兩個(gè)文件名都可以映射到同一個(gè)inode編號(hào)上,因此硬鏈接的特點(diǎn)如下:
- 無(wú)論修改原文件demo還是修改硬鏈接文件demo,另一個(gè)文件數(shù)據(jù)都會(huì)改變。
- 無(wú)論刪除原文件還是鏈接文件,只要還有一個(gè)文件存在就可以被訪問(wèn)。
- 硬鏈接不會(huì)建立新的inode信息,同時(shí)也不能垮文件系統(tǒng)建立。
- 硬鏈接不能鏈接目錄,太過(guò)復(fù)雜。
軟鏈接(符號(hào)鏈接)
[panjianqiao@localhost tmp]$ ls -il /home/panjianqiao/demo2 /tmp/demo2 #查看文件demo2和軟鏈接文件demo2的長(zhǎng)格式文件信息包括inode編號(hào)
2982388 -rw-rw-r--. 1 panjianqiao panjianqiao 0 Jul 14 13:28 /home/panjianqiao/demo2
17540877 lrwxrwxrwx. 1 panjianqiao panjianqiao 23 Jul 14 13:28 /tmp/demo2 -> /home/panjianqiao/demo2
軟鏈接可以通過(guò)命令顯示中的/tmp/demo2 -> /home/panjianqiao/demo2識(shí)別出原文件的位置,軟鏈接的原文件和鏈接文件的inode編號(hào)不一致,說(shuō)明軟鏈接文件存放的block為當(dāng)前文件名索引到原文件inode編號(hào)信息。與硬鏈接相比,軟鏈接沒(méi)有了許多限制,應(yīng)用的更為廣泛。軟鏈接的特點(diǎn)如下:
- 無(wú)論是修改原文件還是軟鏈接文件,另一個(gè)文件的數(shù)據(jù)都發(fā)生改變
- 刪除軟鏈接文件,原文件不受影響,反之若刪除原文件則會(huì)導(dǎo)致軟鏈接文件找不到原文件。
- 軟鏈接文件會(huì)新建inode和block信息,而在block中不存放真正的數(shù)據(jù)。
- 軟鏈接可以跨文件系統(tǒng)
- 軟鏈接可以鏈接目錄
windows系統(tǒng)下產(chǎn)生快捷方式的原因在于原文件的位置太深,不好操作,新建一個(gè)快捷方式在桌面容易操作
cp 命令
此命令可以用于復(fù)制文件和目錄,同時(shí)還可以用于對(duì)比兩文件的新舊等。
選項(xiàng):
- -a:相當(dāng)于-d、-p、-r選項(xiàng)的集合
- -d:如果源文件為軟鏈接(對(duì)硬鏈接無(wú)效),則復(fù)制出的目標(biāo)文件也為軟鏈接
- -i:詢問(wèn),如果目標(biāo)文件已經(jīng)存在,則會(huì)詢問(wèn)是否覆蓋
- -l:把目標(biāo)文件建立為源文件的硬鏈接文件,而不是復(fù)制源文件
- -s:把目標(biāo)文件建立為源文件的軟鏈接文件,而不是復(fù)制源文件
- -p:復(fù)制后目標(biāo)文件保留源文件的屬性(包括所有者、所屬組、權(quán)限和時(shí)間)
- -r:遞歸復(fù)制,用于復(fù)制目錄
- -u:若目標(biāo)文件比源文件有差異,則使用該選項(xiàng)可以更新目標(biāo)文件,此選項(xiàng)可用于對(duì)文件的升級(jí)和備用
復(fù)制文件
[panjianqiao@localhost ~]$ ls
bols demo2 Documents Music Public Videos
demo Desktop Downloads Pictures Templates
[panjianqiao@localhost ~]$ cp bols /tmp/ #復(fù)制文件
[panjianqiao@localhost ~]$ cp bols /tmp/clangs #改名復(fù)制文件
復(fù)制目錄
[panjianqiao@localhost ~]$ mkdir test
[panjianqiao@localhost ~]$ cp -r test /tmp/ #復(fù)制目錄
復(fù)制軟鏈接文件
[panjianqiao@localhost ~]$ ls -l /tmp/demo2 #demo2文件為一個(gè)軟鏈接文件
lrwxrwxrwx. 1 panjianqiao panjianqiao 23 Jul 14 13:28 /tmp/demo2 -> /home/panjianqiao/demo2
[panjianqiao@localhost ~]$ cp /tmp/demo2 /tmp/demo2_t1 #復(fù)制的文件為原文件
[panjianqiao@localhost ~]$ cp -d /tmp/demo2 /tmp/demo2_t2 #復(fù)制的文件為軟鏈接文件
[panjianqiao@localhost ~]$ ls -l /tmp/demo2_t1 /tmp/demo2_t2
-rw-rw-r--. 1 panjianqiao panjianqiao 0 Jul 16 19:04 /tmp/demo2_t1
lrwxrwxrwx. 1 panjianqiao panjianqiao 23 Jul 16 19:04 /tmp/demo2_t2 -> /home/panjianqiao/demo2
在復(fù)制軟鏈接文件時(shí),需要對(duì)在cp的選項(xiàng)添加-d,對(duì)硬鏈接無(wú)效。
rm(remove)命令
此命令用于刪除文件、目錄
選項(xiàng):
- -f:強(qiáng)制刪除(force),和 -i 選項(xiàng)相反,使用 -f,系統(tǒng)將不再詢問(wèn),而是直接刪除目標(biāo)文件或目錄。
- -i:和 -f 正好相反,在刪除文件或目錄之前,系統(tǒng)會(huì)給出提示信息,使用 -i 可以有效防止不小心刪除有用的文件或目錄。
- -r:遞歸刪除,主要用于刪除目錄,可刪除指定目錄及包含的所有內(nèi)容,包括所有的子目錄和文件。
[panjianqiao@localhost ~]$ ls
bols demo2 Documents Music Public test
demo Desktop Downloads Pictures Templates Videos
[panjianqiao@localhost ~]$ rm bols
[panjianqiao@localhost ~]$ rm -i demo
rm: remove regular empty file ‘demo’? y
[panjianqiao@localhost ~]$ rm -ir /tmp/test
rm: remove directory ‘/tmp/test’? y
mv(move)命令
此命令可以在不同的目錄下移動(dòng)文件或目錄,也可以對(duì)文件和目錄進(jìn)行重命名
選項(xiàng):
- -f:強(qiáng)制覆蓋,如果目標(biāo)文件已經(jīng)存在,則不詢問(wèn),直接強(qiáng)制覆蓋
- -i:交互移動(dòng),如果目標(biāo)文件已經(jīng)存在,則詢問(wèn)用戶是否覆蓋(默認(rèn)選項(xiàng))
- -n:如果目標(biāo)文件已經(jīng)存在,則不會(huì)覆蓋移動(dòng),而且不詢問(wèn)用戶
- -v:顯示文件或目錄的移動(dòng)過(guò)程
- -u:若目標(biāo)文件已經(jīng)存在,但兩者相比,源文件更新,則會(huì)對(duì)目標(biāo)文件進(jìn)行升級(jí)
移動(dòng)文件
[panjianqiao@localhost ~]$ touch demo
[panjianqiao@localhost ~]$ mv demo /tmp
[panjianqiao@localhost ~]$ ls /tmp #由于篇幅限制,只顯示相關(guān)信息
demo
...
移動(dòng)目錄
[panjianqiao@localhost ~]$ mkdir -p ./test/demo
[panjianqiao@localhost ~]$ ls
Desktop Documents Downloads Music Pictures Public Templates test Videos
[panjianqiao@localhost ~]$ mv test /tmp
[panjianqiao@localhost ~]$ ls
Desktop Documents Downloads Music Pictures Public Templates Videos
[panjianqiao@localhost ~]$ ls /tmp/test
demo
文件重命名
[panjianqiao@localhost ~]$ mv /tmp/demo /tmp/demo1 #在同一目錄下移動(dòng)文件相當(dāng)于重命名
[panjianqiao@localhost ~]$ ls tmp
[panjianqiao@localhost ~]$ ls /tmp #由于篇幅限制,只顯示相關(guān)信息
demo1
...
目錄重命名
[panjianqiao@localhost ~]$ mv /tmp/test /tmp/test_change
[panjianqiao@localhost ~]$ ls /tmp #由于篇幅限制,只顯示相關(guān)信息
...
test_change
...