大家好,我是雲計算磊哥,從業20年的IT老鳥。運維培訓15年,總結了一套從入門到精通的全運維開發寶典手冊。準備用300天時間寫一套博文,手把手從安裝軟件講起,從行業到產品,從過去到未來,從理論到操作,從視頻到文檔工具,一站式。從零基礎入門到20k運維開發工程師崗位諸多就業問題。多方位全方面的給你講清楚雲計算這個行業該如何做。關注我。後續更精彩。

------------------------------------------------------------------------------------------------

       上篇文章中已經介紹了文件目錄與路徑和目錄與文件操作,下面將介紹Vim文本編輯器、文件時間和文件類型的內容。

一, Vim文本編輯器

Linux系統上的編輯器是對一些服務配置和文件編輯的工具,類似於Windows系統中的記事本。Vi編輯器是Linux上最基本的文本編輯器,工作在字符模式下,效率非常高。儘管在Linux上也有很多圖形界面的編輯器可用,如gedit編輯器,但在系統和服務器管理中,Vi編輯器的功能是那些圖形編輯器所無法比擬的。Vim是Vi的增強版,如果計算機上沒有安裝Vim,可以使用下面命令下載安裝。

[root@localhost ~]# which vim
/usr/bin/vim
[root@localhost ~]# yum -y install vim-enhanced

Vim編輯器主要有三種模式:命令模式、編輯模式和末行模式(擴展命令模式)。

命令模式:控制光標,對文件進行復制、粘貼、刪除、查詢等操作。

編輯模式:進行文本錄入與更改。

末行模式:文檔保存與退出,設置編輯環境。

每個模式下都有不同的命令快捷鍵,和圖形界面相比有些抽象,但當用户熟練這些操作之後,工作效率就會比圖形界面高很多。

當打開Vim編輯器後,默認進入命令模式,進入其他模式的指令以命令模式發起的,例如,按i鍵進入編輯模式。此時如果進入末行模式,用户需要先按Esc鍵返回到命令模式,然後輸入“:”即可,如圖所示。

運維開發寶典006-Linux系統文件編輯神器:Vim文本編輯器、文件時間、文件類型_命令模式


二, 命令模式下的常用命令

光標定位常用的命令如表所示。

命令

説明

h、j、k、l

光標上下左右移動,也可用鍵盤自帶方向鍵

0$

光標移動到行首、行尾

ggG

光標移動到第三行,移動到第n

/字符串

(n N可循環的),快速定位到某一行

/^d

定位首字母為d的行

/txt$

定位結尾為txt的行

文本編輯常見的命令如表所示。

命令

説明

yy

複製當前行

dd

刪除當前行

p

粘貼

x

刪除光標所在的字符

D

從光標處刪除到行尾

u

undo撤銷

^r

redo重做

r

可以用來修改一個字符

命令和命令也可以組合,作用也是疊加的,例如,3yy、ygg、yG、dgg、dG等等,讀者需平時多加練習。

從命令模式進入其他模式常見的命令如表所示。

命令

説明

o

進入編輯模式,光標下面另起一行

a

進入編輯模式,光標後一位

i

進入編輯模式,光標當前位置

 

進入末行模式

V

進入可視行模式

v

進入可視模式

^v

進入可視塊模式

R

進入替換模式

末行模式常見的命令如表所示。

命令

説明

:w

保存

:q

退出

:wq

保存並退出

:w!

強制保存

:q!

不保存強制退出

:wq!

強制保存退出

:set nu

顯示行號

:set nonu

不顯示行號

:整數

跳到該行

:s/abc/abd

該行第一個abc替換成abd

:s/abc/abd/g

該行所有abc替換成abd

:%字符串

在文本中從下至上搜索字符串

:/字符串

在文本中從上至下搜索字符串

三, 編輯簡單的文檔

用Vim編寫文檔首先要給文檔命名,此處命名為localhost.txt。如果文檔已經創建,則打開;如果文檔不存在,此命令將創建一個文件,如圖所示。

運維開發寶典006-Linux系統文件編輯神器:Vim文本編輯器、文件時間、文件類型_bc_02

打開文檔後,默認進入命令模式,不能編輯文本,需要切換到編輯模式,按i鍵進入編輯模式,如圖所示。

運維開發寶典006-Linux系統文件編輯神器:Vim文本編輯器、文件時間、文件類型_字符串_03


進入編輯模式後,左下角出現“--插入--”,可隨意輸入文本內容,Vim編輯器不會把文本內容當作命令執行,如圖所示。

運維開發寶典006-Linux系統文件編輯神器:Vim文本編輯器、文件時間、文件類型_命令模式_04

在編寫完之後,保存退出。首先按Esc鍵切換到命令模式,然後再輸入“:”,進入末行模式,最後輸入wq,完成保存退出,如圖所示。

運維開發寶典006-Linux系統文件編輯神器:Vim文本編輯器、文件時間、文件類型_命令模式_05

保存退出後,使用cat命令就可以查看剛才輸入的文本,如圖所示。

運維開發寶典006-Linux系統文件編輯神器:Vim文本編輯器、文件時間、文件類型_字符串_06

再次進入文檔,可以繼續編輯文件。按鍵盤方向鍵上快速翻出這條命令,如圖所示。

運維開發寶典006-Linux系統文件編輯神器:Vim文本編輯器、文件時間、文件類型_字符串_07

按o鍵進入編輯模式,另起一行並添加內容,如圖所示。

運維開發寶典006-Linux系統文件編輯神器:Vim文本編輯器、文件時間、文件類型_字符串_08

如果此時不保存文件,直接退出,編輯器會拒絕此操作,如圖所示。

運維開發寶典006-Linux系統文件編輯神器:Vim文本編輯器、文件時間、文件類型_命令模式_09


在末行模式下輸入“q!”強行退出,如圖所示。

運維開發寶典006-Linux系統文件編輯神器:Vim文本編輯器、文件時間、文件類型_bc_10

最後再次查看文本,發現並未保存第二次添加內容,只顯示原來的內容,如圖所示。

運維開發寶典006-Linux系統文件編輯神器:Vim文本編輯器、文件時間、文件類型_命令模式_11

四,文件時間

回到熟悉的Windows系統,在windows下新建一個文件,保存文件的同時也會保存文件的創建時間、修改時間、訪問時間等,如圖所示。

運維開發寶典006-Linux系統文件編輯神器:Vim文本編輯器、文件時間、文件類型_命令模式_12

在Linux系統下,一個文件也有三種時間:訪問時間、修改時間、狀態時間。stat命令可以查看文件的詳細信息,具體如下所示:

[root@localhost ~]# stat /etc/hostname 
  File: '/etc/hostname'
  Size: 6          Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d Inode: 16931194    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:hostname_etc_t:s0
Access: 2019-04-02 09:29:54.065475006 +0800
Modify: 2019-03-30 14:17:48.875787110 +0800
Change: 2019-03-30 14:17:48.912788257 +0800
Birth: -

從輸出結果中可以看到系統保存了三個時間:Access time(訪問時間)、Modify time(狀態時間)、Change time(修改時間)。

在Linux系統中,文件是沒有創建時間的,如果新創建一個文件,它的三個時間都是與創建的時間相同,具體如下所示:

[root@localhost ~]# stat abc.txt 
  File: 'abc.txt'
  Size: 4          Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d Inode: 35505558    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2019-04-08 18:39:49.771126373 +0800
Modify: 2019-04-08 18:39:49.771126373 +0800
Change: 2019-04-08 18:39:49.771126373 +0800
 Birth: -

修改時間:文件的內容被最後一次修改的時間,“ls -l”命令顯示出來的文件時間就是這個時間,當使用Vim對文件進行編輯之後保存,它的ctime就會相應的改變。

訪問時間:對文件進行一次讀操作,它的訪問時間就會改變。例如,cat、less等操作,但是state與ls命令對atime是不會有影響的。

狀態時間:當文件的狀態被改變時,狀態時間就會改變,當使用chmod、chown等命令改變文件屬性時,會改變文件的mtime。

以前的RHEL(Red Hat Enterprise Linux)版本,只要讀取文件,就會刷新時間,這種時間的變化專業術語叫“磁盤的IO操作”,就是寫磁盤,訪問一次寫一次。舉例來説,千鋒教育網站有上萬個網頁,如果有一萬個人訪問,訪問一次時間就會刷新一次,最後會導致大量IO操作,這樣的做的積極意義並不大,由此帶來的消極意義卻是明顯的,大大增加了磁盤IO的工作量。

從RHEL6開始atime延遲修改,刷新時間必須滿足下列兩個條件之一:自上次atime修改後已過去86400秒;發生寫操作。這個改變作用是很大的,例如,find命令查看根目錄下5天以內被改過的文件(選取部分查詢內容顯示),具體如下所示:

[root@localhost ~]# find / -mtime -5

Ø 文件類型

前面提到過文件的顏色類別,但通過顏色判斷文件的類型是不一定正確的。Linux系統中文件是沒有擴展名,修改無實際意義的擴展名無法修改文件的本質,具體如下所示:

[root@localhost ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  
a.txt  b.txt
[root@localhost ~]# file a.txt  
a.txt: ASCII text //是txt文件
[root@localhost ~]# file anaconda-ks.cfg 
anaconda-ks.cfg: ASCII text //也是txt文件
[root@localhost ~]# mv a.txt a.jpg //更改文件的擴展名為jpg格式
[root@localhost ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  
a.jpg  b.txt            
[root@localhost ~]# file a.jpg 
a.jpg: ASCII text //依然是txt文件

使用“ls -l”命令查看文件名,看第一個字符,開頭為“-”是普通文件(如文本文件、二進制文件、壓縮文件、圖片等),開頭為“d”的是目錄文件(藍色),具體如下所示:

[root@localhost ~]# ls -l /etc/
total 1348
-rw-r--r--.  1 root root     5090 Nov  5  2016 DIR_COLORS
-rw-r--r--.  1 root root     5725 Nov  5  2016 DIR_COLORS.256color
-rw-r--r--.  1 root root     4669 Nov  5  2016 DIR_COLORS.lightbgcolor
-rw-r--r--.  1 root root       94 Apr 29  2015 GREP_COLORS
-rw-r--r--.  1 root root      842 Nov  6  2016 GeoIP.conf
-rw-r--r--.  1 root root      858 Nov  6  2016 GeoIP.conf.default
drwxr-xr-x.  8 root root      145 Mar 30 12:46 NetworkManager
drwxr-xr-x.  2 root root       92 Mar 30 12:52 PackageKit
drwxr-xr-x.  2 root root       25 Mar 30 12:46 UPower
drwxr-xr-x.  6 root root      103 Mar 30 12:45 X11
drwxr-xr-x.  3 root root      101 Mar 30 12:45 abrt

…………省略部分文件……………

開頭為“b”表示設備文件(塊設備),存儲設備硬盤、U盤、/dev/sda、 /dev/sda1;“c”表示設備文件(字符設備),打印機、終端、/dev/tty1、/dev/zero;“s”表示套接字文件;“p”表示管道文件;“l”表示鏈接文件(淡藍色)。

[root@localhost ~]# ll /dev/sda c
brw-rw----. 1 root disk 8, 0 Apr  2 09:29 /dev/sda
[root@localhost ~]# ll /dev/zero 
crw-rw-rw-. 1 root root 1, 5 Apr  2 09:29 /dev/zero
[root@localhost ~]# ll /dev/log
srw-rw-rw-. 1 root root 0 Apr  2 09:29 /dev/log
[root@localhost ~]# ll /run/dmeventd-client 
prw-------. 1 root root 0 Apr  2 09:29 /run/dmeventd-client
[root@localhost ~]# ll /etc/grub2.cfg 
lrwxrwxrwx. 1 root root 22 Mar 30 12:52 /etc/grub2.cfg 
-> ../boot/grub2/grub.cfg

使用file命令查看文件類型,如文本文件、二進制文件、管道文件、設備文件、鏈接文件等,具體如下所示:

[root@localhost ~]# file /etc/hostname
/etc/hostname: ASCII text 
[root@localhost ~]# file /dev/sda
/dev/sda: block special
[root@localhost ~]# file /dev/zero 
/dev/zero: character special

使用stat命令查看文件的詳細屬性,例如,文件的名稱、大小、權限、atime、ctime、mtime等,具體如下所示:

[root@localhost ~]# stat /etc/hostname 
File: '/etc/hostname' //文件名字
Size: 6 //大小         Blocks: 8 //佔塊數    IO Block: 4096   regular file
Device: fd00h/64768d Inode: 16931194    Links: 1
Access: (0644/-rw-r--r--) //權限  Uid: ( 0/ root) //所有者  Gid: ( 0/ root)
Context: system_u:object_r:hostname_etc_t:s0
Access: 2018-04-02 09:29:54.065475006 +0800
Modify: 2018-03-30 14:17:48.875787110 +0800
Change: 2018-03-30 14:17:48.912788257 +0800
 Birth: -

       文章的最後提醒大家,特別是Linux初學者。前一個月的操作練習要比理論知識更重要。否則中期很容易基礎命令想不起來,高級技術聽不懂跟不上。所以通過上機練習可以考察同學們對知識點的掌握情況,對代碼的熟練程度。配套視頻也可以看博主的主頁課程。謝謝你的耐心觀看。