[TOC] 文件的軟硬鏈接 1.軟鏈接 2.硬鏈接 文件編輯vi和vim vim比vi多了高亮顯示 須先安裝軟體包yum install y vim 三種方式: 1.命令模式 可控制游標移動,對文本進行查看,翻頁,複製,粘貼,刪除,剪切等工作 [root@gong ~] vim /etc/my.cn ...
目錄
文件的軟硬鏈接
1.軟鏈接
軟鏈接就相當於windows的快捷方式,軟鏈接文件會將incode 指向源文件的 block,當我們在訪問軟鏈接時,其實就是在訪問源文件本身
一個文件,被分為兩個部分:
1)用戶數據
2)元數據
元數據:是電腦用來描述文件的屬性,例如文件大小,創建時間,屬組,屬主等,稱為incode
用戶數據:可以稱為block,文件數據塊,是記錄文件真實內容的地方,預設4k
ln -s /root/soft_link /tmp/soft_link
源文件 目標
示例:
[root@centos7 ~]# touch soft_link
[root@centos7 ~]# ln -s soft_link /tmp/soft_link
[root@centos7 ~]# ls -li soft_link /tmp/soft_link
33584458 -rw-r--r--. 1 root root 0 Jun 21 15:03 soft_link
16780579 lrwxrwxrwx. 1 root root 9 Jun 21 15:04 /tmp/soft_link -> soft_link
軟鏈接的應用場景:
1)軟體升級
2)代碼發佈
3)不方便移動的目錄
4)數據回滾
5)程式讀取
2.硬鏈接
若一個incode號對應多個文件名,則稱這些文件為硬鏈接,就是同一個文件使用了多個別名,如下圖所示hard link就是file的一個別名,他們有共同的incode
1)具有同一個inode號的文件,互為硬鏈接文件
2)目錄不能創建硬鏈接,會報錯
示例:
[root@centos7 ~]# ls -li /etc/passwd
17231345 -rw-r--r--. 1 root root 798 Jun 12 20:11 /etc/passwd
總結
1)創建命令不同
軟鏈接:ln -s
硬鏈接:ln
2)目錄不能創建硬鏈接,並且硬鏈接不可以跨越系統的分區,軟鏈接可以
3)硬鏈接文件與源文件inode相同,軟鏈接文件與源文件inode不同
4)刪除軟鏈接文件,對源文件無影響,但是刪除軟鏈接源文件對軟鏈接文件有影響
5)刪除硬鏈接文件,對源文件也無影響,並且刪除源文件,對硬鏈接文件也無影響
6)只有原文件和硬鏈接同時刪除,原文件才真正刪除
註意
ln
-s:做軟鏈接
-f:強製做鏈接
-v:反向做鏈接
&&:銜接多條命令,前面執行成功之後,再執行後面的
||:銜接多條命令,前面執行不成功,後面也要執行
查看磁碟信息df
-h:人類可讀
-i:查看磁碟inode
業面試題:
當前磁碟空間還剩餘500G,但是就無法往裡面寫入數據,報錯,磁碟空間滿了。
[root@db04 ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/vg_db01-lv_root 1152816 76391 1076425 7% /
tmpfs 238319 1 238318 1% /dev/shm
/dev/sda1 128016 39 127977 1% /boot
\#模擬
[root@db04 ~]# dd if=/dev/zero of=/opt/disk bs=1K count=1024
[root@db04 ~]# mkfs.ext4 -i 1024 /opt/disk
[root@db04 ~]# mkdir /data1
[root@db04 ~]# mount -t ext4 -o loop /opt/disk /data1
[root@db04 data1]# touch file{1..2000}
touch: 無法創建"file1014": 設備上沒有空間
touch: 無法創建"file1015": 設備上沒有空間
touch: 無法創建"file1016": 設備上沒有空間
touch: 無法創建"file1017": 設備上沒有空間
touch: 無法創建"file1018": 設備上沒有空間
[root@db04 data1]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_db01-lv_root 18G 2.0G 15G 12% /
tmpfs 931M 0 931M 0% /dev/shm
/dev/sda1 485M 39M 421M 9% /boot
/opt/disk 891K 39K 801K 5% /data1
[root@db04 data1]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/vg_db01-lv_root 1152816 76393 1076423 7% /
tmpfs 238319 1 238318 1% /dev/shm
/dev/sda1 128016 39 127977 1% /boot
/opt/disk 1024 1024 0 100% /data1
硬連接數計算
[root@db04 ~]# mkdir hard
[root@db04 ~]# ll hard -d
drwxr-xr-x 2 root root 4096 6月 1 12:50 hard
[root@db04 ~]# cd hard
[root@db04 hard]# mkdir test1
[root@db04 ~]# ll -d hard
drwxr-xr-x 3 root root 4096 6月 1 12:50 hard
[root@db04 ~]# cd hard
[root@db04 hard]# touch test
[root@db04 ~]# ll -d hard
drwxr-xr-x 3 root root 4096 6月 1 12:50 hard
文件編輯vi和vim
vim相容了vi的所有優勢,yrong比vi多了高亮顯示
須先安裝vim命令的軟體包yum install -y vim
三種模式:
1.普通模式
也就是命令模式,進入文本當中就是普通模式,可控制游標移動,對文本進行查看,翻頁,複製,粘貼,刪除,剪切等 工作
[root@gong ~]# vim /etc/my.cnf
G | shift+g ,將游標移動到文件的末尾 |
---|---|
gg | 將游標移動到文件的開頭 ,ngg就是移至n行行首 |
dd | 刪除一行,(刪除多行 ndd dnd :n為數字 + p = 剪切) |
D | 將游標之後的內容都刪除 |
u | 撤銷 |
dG | 刪除游標以下的所有內容(包括游標所在行) |
dgg | 刪除游標以下的所有內容(包括游標所在行) |
$(shift+4) | 將游標移動至行尾 |
^(shift+6) | 將游標移動至行首 |
Ctrl+r | 恢復撤銷 |
x | 刪除游標所在字元 |
X | 刪除游標之前的字元 |
yy | 複製,複製n 行,nyy ,yny |
p | 粘貼(游標所在行的下一行) |
P | 粘貼(游標所在行的上一行) |
Ctrl+f | 往下翻頁(行比較多) |
Ctrl+b | 網上翻頁 |
r | 單個字元替換 |
R | 多個字元替換(按ESC退出替換) |
2.編輯模式
需要由普通模式進入到編輯模式,可移動游標自由修改文件。
[root@gong ~]# vim/etc/my.cnf
i | 進入編輯模式 |
---|---|
I | 將游標跳至行首,併進入編輯模式 |
A | 將游標跳到行末,併進入編輯模式 |
a | 將游標向後移動一個字元,併進入編輯模式 |
o | 將游標調至下一行,併進入編輯模式 |
O | 將游標調至上一行,併進入編輯模式 |
s | 刪除游標所在的字元,併進入編輯模式 |
S | 刪除游標所在的行,併進入編輯模式 |
3.末行模式
主要用於搜索,保存,退出文件,還可以讓用戶執行外部的linux命令跳轉到所編寫文檔的特定行數
[root@gong ~]# vim/etc/my.cnf
:w | 保存當前狀態 |
---|---|
:w! | 強制保存當前狀態 |
:q | 退出當前文檔(文檔必須保存才能退出) |
:q! | 強制退出文檔不會修改當前內容 |
:wq | 先保存,再退出 |
:wq! | 強制保存並退出 |
:x | 先保存,再退出 |
ZZ | 保存退出, shfit+zz相當於 :wq 相當於:x |
:number | 跳轉至對應的行號,和普通模式Ngg一個意思 |
3.末行模式的報錯
E37: No write since last change (add ! to override)
E45: 'readonly' option is set (add ! to override)
E212: Unable to open and write files
末行模式(查找和替換)
查找 /string 需要搜索的內容(查找)
n 按搜索到的內容依次往下進行查找
N 按搜索到的內容依次往上進行查找
替換
: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文件當前文件的哪行下麵