Linux基礎06 軟連結, 硬連結, 檔案編輯vim
一.檔案的軟硬連結
1.軟連結
一個檔案,被分為兩個部分:
1)使用者資料(真實資料)
2)元資料
元資料:用來描述檔案的屬性(包括inode)
block:資料塊,預設4k(不到4k要佔用一個block)
ln -s /root/soft_link /tmp/soft_link (注: 使用相對路徑可能會失敗, mac本可以軟連結到Desktop桌面)
原始檔 目標
軟連結的應用場景
1)軟體升級
2)程式碼釋出
3)不方便移動的目錄
4)資料回滾
5)程式讀取
2.硬連結
1)具有同一個inode號的檔案,互為硬連結檔案 ls -i 檢視檔案inode, 系統通過inode號找到檔案資料塊block, 唯一
[root@localhost ~]# touch hard_link [root@localhost ~]# ln hard_link hard_link1
如圖,說明有兩個硬連結,inode值相同
需要注意當建立資料夾是,該硬連結數為2。如下圖,該資料夾下,有個代表自己的硬連結。
如果在他下面建立個123資料夾。那麼在123資料夾下也有個a的硬連結 .. 。所以此時a有3個硬連結
一次類推,如果在123下面再建立一個資料夾。那麼a的硬連結還是3。如果在a下面再建立一個資料夾,那麼a的硬連結會再加1
2)目錄不能建立硬連結
軟硬連結 ln -s:做軟軟鏈-f:強制做 -v:反向做連結 &&:銜接多條命令,前面執行成功之後,再執行後面的 ||:銜接多條命令,前面執行不成功,後面也要執行
軟硬連結總結:
1)建立命令不同
軟連結:ln -s
硬連結:ln
2)目錄不能建立硬連結,並且硬連結不可以跨越系統的分割槽(inode可能衝突),軟連結可以
3)硬連結檔案與原始檔inode相同,軟連結檔案與原始檔inode不同
4)刪除軟連結檔案,對原始檔無影響,但是刪除軟連結原始檔對軟連結檔案有影響
5)刪除硬連結檔案,對原始檔也無影響,並且刪除原始檔,對硬連結檔案也無影響
企業面試題:
當前磁碟空間還剩餘500G,但是就無法往裡面寫入資料,報錯,磁碟空間滿了。
檢視磁碟容量使用情況df -h
檢視inode是否被用完 df -i
檢視磁碟資訊 df -h:人類可讀 -i:檢視磁碟inode
然後通過find命令查詢資料夾下小檔案刪除
檔案編輯
vi和vim (vim是升級版, 有高亮)
[root@oldboyedu ~]# yum install -y vim
1)三種模式
a.命令模式
[root@oldboyedu ~]# vim /etc/my.cnf
G: shift+g ,將游標移動到檔案的末尾
gg: 將游標移動到檔案的開頭
dd: 刪除(剪下)一行,(刪除多行 ndd dnd :n為數字 + p = 剪下)
D: 將游標之後的內容都刪除
u: 撤銷
dG: 刪除游標以下的所有內容(包括游標所在行)
dgg: 刪除游標以上的所有內容(包括游標所在行)
$(shift+4): 將游標移動到行尾
^(shift+6): 將游標移動到行首
ctrl+r: 恢復撤銷
x: 刪除游標所在字元
X: 刪除游標之前的字元
yy: 複製,nyy,yny(2yy從游標開始往下複製2行)
p(小寫): 貼上(游標所在行的下一行)
P(大寫): 貼上(游標所在行的上一行)
ctrl+f 往下翻頁(行比較多)
ctrl+b 往上翻頁
r: 單個字元替換
R: 多個字元替換(按ESC退出替換,退格鍵刪除替換的恢復原來的)
b.編輯模式
[root@oldboyedu ~]# vim /etc/my.cnf
i:進入編輯模式
I:將游標跳至行首,並進入編輯模式
A:將游標跳到行末,並進入編輯模式
a:將游標向後移動一個字元,並進入編輯模式
o:將游標調至下一行(新建),並進入編輯模式
O:將游標調至上一行(新建),並進入編輯模式
s:刪除游標所在的字元,並進入編輯模式
S:刪除游標所在的行,並進入編輯模式
注:當檔案編輯時非正常退出,或者編輯的時候,別人也開啟改檔案,會出現 警告,存在".該檔名.swp"的臨時檔案(就是正在編輯的內容)
非正常退出的話,可以把該臨時檔案刪除,就能正常打開了。
c.末行模式(底下輸入的)
[root@oldboyedu ~]# vim /etc/my.cnf
:w //儲存當前狀態
:w! //強制儲存當前狀態(例如許可權問題, 需要強制儲存)
:q //退出當前文件(文件必須儲存才能退出)
:q! //強制退出文件不會修改當前內容
:wq //先儲存,在退出
:wq! //強制儲存並退出
:x //先儲存,在退出
ZZ //儲存退出, shfit+zz相當於 :wq 相當於:x
:number //跳轉至對應的行號,和普通模式Ngg一個意思
:set nu //顯示行號
:set nonu //不顯示行號
末行模式的報錯
E37: No write since last change (add ! to override) # 沒儲存就退出報錯
E45: 'readonly' option is set (add ! to override) # 只讀, 比如root使用者強制才有用
E212: Unable to open and write files
末行模式(查詢和替換)
查詢 /string 需要搜尋的內容(查詢)
n 按搜尋到的內容依次往下進行查詢
N 按搜尋到的內容依次往上進行查詢
替換 :s///g (/,#或@分割都行, /碰到路徑需要轉義\/)
:1,5s#sbin#test#g 替換1-5行中包含sbin的內容為test
:%s#sbin#test#g 替換整個文字檔案中包含sbin的替換為test
:%s#sbin#test#gc 替換內容時時提示是否需要替換
%表示所有行 s表示替換 g表示所有匹配到的內容 c表示提示
替換為 w (y/n/a/q/l/^E/^Y)?
y:替換一次
n:選中下一個
a:全部替換
q:退出
l:替換一次並退出詢問
另存
:w /root/test 將檔案所有內容另存為/root/test
讀入
:r /etc/hosts 讀入/etc/hosts檔案至當前游標下面
:5r /etc/hosts 指定/etc/hosts檔案當前檔案的哪行下面