文件屬性
[root@zhao2 ~]# ll -d /etc/hosts /tmp /bin/ls /dev/sda /dev/tty1 /etc/grub2.cfg /dev/log-rwxr-xr-x. 1 root root 117680 Oct 31 2018 /bin/ls
# 權(quán)限 軟硬鏈接 所屬人 所屬組 大小 創(chuàng)建時間 文件名
srw-rw-rw-. 1 root root 0 Jul 31 08:21 /dev/log
brw-rw----. 1 root disk 8, 0 Jul 31 08:21 /dev/sda
crw--w----. 1 root tty 4, 1 Jul 31 08:23 /dev/tty1
lrwxrwxrwx. 1 root root 22 Jul 24 23:32 /etc/grub2.cfg -> ../boot/grub2/grub.cfg
-rw-r--r--. 1 root root 158 Jun 7 2013 /etc/hosts
drwxrwxrwt. 12 root root 4096 Jul 31 09:47 /tmp
第一列 srw-rw-rw-首個字符詳解
在文件權(quán)限的一列中戴陡,首個字符代表著不同的意義
- 文件Windows的文件夾
l 鏈接文件
s socket 本地 進(jìn)程與進(jìn)程的一種通信方式
b block 塊設(shè)備文件弦悉,例如光盤健芭、硬盤、分區(qū)等
c 字符設(shè)備哆料,用于提供用戶的輸入和輸出
對于一些文件無法準(zhǔn)確的區(qū)分類型挪挤,可以使用file命令查看查看文件的類型
[root@zhao ~]# file 123.rar access.log anaconda-ks.cfg test.txt th.jpg 123.zip
123.rar: RAR archive data, v80, flags: Archive volume, Locked, Solid, Authenticated,
# RAR文件
access.log: ASCII text, with very long lines
# text文件
anaconda-ks.cfg: ASCII text
# text文件
test.txt: ASCII text
# text文件
th.jpg: JPEG image data, JFIF standard 1.01
# JPEG文件
123.zip: Zip archive data, at least v2.0 to extract
# Zip文件
軟鏈接和硬鏈接
我們知道文件都有文件名與數(shù)據(jù)洞拨,這在 Linux 上被分成兩個部分:用戶數(shù)據(jù) (user data) 與元數(shù)據(jù) (metadata)烤礁。用戶數(shù)據(jù),即文件數(shù)據(jù)塊 (data block)肥照,數(shù)據(jù)塊是記錄文件真實內(nèi)容的地方脚仔;而元數(shù)據(jù)則是文件的附加屬性,如文件大小舆绎、創(chuàng)建時間鲤脏、所有者等信息。在 Linux 中吕朵,元數(shù)據(jù)中的 inode 號(inode 是文件元數(shù)據(jù)的一部分但其并不包含文件名猎醇,inode 號即索引節(jié)點號)才是文件的唯一標(biāo)識而非文件名。文件名僅是為了方便人們的記憶和使用努溃,系統(tǒng)或程序通過 inode 號尋找正確的文件數(shù)據(jù)塊硫嘶。下圖展示了通過文件名打開文件的過程
硬鏈接指向原文件inode的指針,硬鏈接文件與原始文件其實就是同一個文件梧税。我們每添加一個硬鏈接沦疾,該文件的inode連接數(shù)就會增加1,由于此特性第队,即便原始文件被刪除哮塞,依然可以通過硬鏈接文件來訪問。硬鏈接就是同一個文件使用了多個別名凳谦。
軟鏈接與硬鏈接不同忆畅,若文件用戶數(shù)據(jù)塊中存放的內(nèi)容是另一文件的路徑名的指向,則該文件就是軟連接尸执。軟鏈接就是一個普通文件家凯,只是數(shù)據(jù)塊內(nèi)容有點特殊。軟鏈接有著自己的 inode 號以及用戶數(shù)據(jù)塊如失。
ln常用選項及說明
選項 | 解釋 |
---|---|
-s | 軟鏈接 |
軟鏈接的應(yīng)用場景
軟件升級與軟件回退
# 假設(shè)上線qq_v1.1
[root@node2 ~]# mkdir qq_v1.1
[root@node2 ~]# ln -s /root/qq_v1.1/ /root/qq
[root@node2 ~]# [root@node2 ~]# mkdir qq_v1.2
[root@node2 ~]# ll
total 0
lrwxrwxrwx. 1 root root 14 Jul 31 15:20 qq -> /root/qq_v1.1/
drwxr-xr-x. 2 root root 6 Jul 31 15:20 qq_v1.1
drwxr-xr-x. 2 root root 6 Jul 31 15:20 qq_v1.2
# 軟件升級肆饶,讓/root/qq鏈接到qq_v1.2
[root@node2 ~]# rm -f /root/qq && ln -s /root/qq_v1.2/ /root/qq
[root@node2 ~]# ll
total 0
lrwxrwxrwx. 1 root root 14 Jul 31 15:21 qq -> /root/qq_v1.2/
drwxr-xr-x. 2 root root 6 Jul 31 15:20 qq_v1.1
drwxr-xr-x. 2 root root 6 Jul 31 15:20 qq_v1.2
[root@node2 ~]#
# 軟件回退,讓/root/qq重新鏈接至qq_v1.1
[root@node2 ~]# rm -f qq && ln -s /root/qq_v1.1 /root/qq
[root@node2 ~]# ll
total 0
lrwxrwxrwx. 1 root root 13 Jul 31 15:24 qq -> /root/qq_v1.1
drwxr-xr-x. 2 root root 6 Jul 31 15:20 qq_v1.1
drwxr-xr-x. 2 root root 6 Jul 31 15:20 qq_v1.2
不方便移動的目錄
硬鏈接:相當(dāng)于給同一個文件岖常,取了多個別名
[root@node2 ~]# cat file
wuennan
[root@node2 ~]# ln /root/file /root/file_hard
[root@node2 ~]# ll
total 8
-rw-r--r--. 2 root root 8 Jul 31 15:12 file
-rw-r--r--. 2 root root 8 Jul 31 15:12 file_hard
[root@node2 ~]# cat >> file_hard << EOF
> Hello
> EOF
[root@node2 ~]# cat file
wuennan
Hello
# 刪除源文件后驯镊,硬鏈接依然生效
[root@node2 ~]# rm file
rm: remove regular file ‘file’? y
[root@node2 ~]# cat file_hard
wuennan
Hello
軟連接和硬鏈接的區(qū)別
ln命令創(chuàng)建硬鏈接,ln -s命令創(chuàng)建軟鏈接竭鞍。
目錄不能創(chuàng)建硬鏈接板惑,并且硬鏈接不可以跨越分區(qū)系統(tǒng)。
目錄軟鏈接特別常用偎快,并且軟鏈接支持跨越分區(qū)系統(tǒng)冯乘。
硬鏈接文件與源文件inode相同,軟鏈接文件與源文件inode不同晒夹。
刪除軟連接文件裆馒,對源文件及硬鏈接文件無任何影響姊氓。
刪除文件的硬鏈接文件,對源文件無任何影響喷好。
刪除鏈接文件的源文件翔横,對硬鏈接無影響,會導(dǎo)致軟鏈接失效梗搅。
刪除源文件及起硬鏈接文件禾唁,整個文件會被真正的刪除。
命令執(zhí)行流程[擴(kuò)展了解]
當(dāng)我們執(zhí)行一個命令時无切,計算機(jī)執(zhí)行流程如下:
判斷命令是否通過絕對路徑執(zhí)行
判斷命令是否存在alias別名
判斷用戶輸入的是內(nèi)置命令還是外置命令
Bash內(nèi)部命令直接執(zhí)行荡短,外部命令檢測是否存在緩存
通過$PATH變量查找命令,有執(zhí)行哆键,無報錯 command not found
絕對路徑-->alias--->hash緩存-->$PATH變量路徑--->有執(zhí)行--->沒有 command not found