文件的軟硬鏈接& 文件編輯vi和vim


文件的軟硬鏈接

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文件當前文件的哪行下面

vim的視圖模式

視圖模式(從命令行模式進入視圖模式)

可視塊模式
  命令模式--》ctrl + v進入VISUAL BLOCK (可視塊模式)
  1.插入 :按shift +i進入編輯模式,輸入#,結束按ESC鍵
  2.刪除:選中內容后,按x或者d鍵刪除
  3.替換:選中需要替換的內容,按下r鍵,然后輸入替換后的內容
例如:
  如何批量注釋文本?
   1)進入可視塊模式 ctrl + v
   2)進入編輯模式,進入行首 shift + i (I)
   3)添加注釋 shift + 3  (#)
   4)ESC 返回 命令模式

2.可視行模式
  命令模式--》shift + v進入VISUAL LINE選中行內容(可視行模式)
  1)復制:選中行內容后按y鍵即可復制
  2)刪除:選中行內容后按d鍵刪除	
vim 文件 +行數,直接進入編輯某一行內容
[root@oldboyedu ~]# vim /etc/services +100   #直接進入到第100行

vim環境變量

環境變量臨時生效

:set nu 顯示行號
:set ic 忽略大小寫,在搜索的時候有用
:set ai 自動縮進
:set list 顯示制表符(空行、tab鍵)
:set no[nu|ic|ai|list..] 取消臨時設定的變量
~/.vimrc 個人環境變量(優先級高) /etc/vimrc  全局環境變量
# vim ~/.vimrc

syntax on
set fenc=utf-8
set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936
set number
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set ruler
set incsearch
set showmatch
set matchtime=10
set ignorecase
set cursorline
set t_Co=256
colorscheme molokai

#語法檢查及高亮
syntax on
#設定默認解碼
set?fenc=utf-8?
set?fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936
#顯示行號
set?number?


#vim使用自動對齊,也就是把當前行的對齊格式應用到下一行
set?autoindent?
#依據上面的對齊格式,智能的選擇對齊方式
set?smartindent?
#設置tab鍵為4個空格
set?tabstop=4?
#設置當行之間交錯時使用4個空格
set?shiftwidth=4?
#設置在編輯過程中,於右下角顯示光標位置的狀態行
set?ruler?
#設置增量搜索,這樣的查詢比較smart

set?incsearch?
#高亮顯示匹配的括號
set?showmatch?
#匹配括號高亮時間(單位為?1/10?s)
set?matchtime=10?

#在搜索的時候忽略大小寫
set?ignorecase?
#禁止生成臨時
#set?nobackup?
#當前行高亮
set?cursorline?
#支持256色
set?t_Co=256?



#使用molokai顏色模板
#colorscheme molokai
//如果個人vim環境沒有配置, 則使用全局vim環境變量配置。
//如果個人vim環境和全局環境變量產生沖突, 優先使用個人vim環境變量。

vim擴展知識

1.同時編輯多個文件

vim -o a.sh zls.txt (水平分割)
vim -O a.sh zls.txt (垂直分割)
//ctrl +ww 文件間切換

2.相同文件之間差異對比

diff 文件對比(用的不多)
vimdiff 以vim 方式打開兩個文件對比,標記不同的內容

3. 如果VIM非正常退出(ctrl+z)掛起或者強制退出終端沒關閉VIM后

//刪除同文件名的.swp文件即可刪除
.filename.swp   rm -f .filename.swp


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM