1. 程式人生 > 其它 >Linux基礎06 軟連結, 硬連結, 檔案編輯vim

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檔案當前檔案的哪行下面