Linux系統(tǒng)中編輯文件命令的知識(shí)詳解
Linux系統(tǒng)中的vi命令是Visual Interface的簡(jiǎn)稱(chēng),是一個(gè)文件編輯命令。那么下面由學(xué)習(xí)啦小編為大家整理了linux系統(tǒng)中編輯文件命令的知識(shí)詳解,希望對(duì)大家有幫助!
Linux系統(tǒng)中編輯文件命令的知識(shí)詳解
vi 命令介紹
vi 是”Visual Interface” 的簡(jiǎn)稱(chēng),它在Linux 上的地位就仿佛Edit 程序在DOS上一樣。它可以執(zhí)行輸出、刪除、查找、替換、塊操作等眾多文本操作,而且用戶(hù)可以根據(jù)自己的需要對(duì)其進(jìn)行定制,這是其他編輯程序所沒(méi)有的。
vi 不是一個(gè)排版程序,它不象Word 或WPS 那樣可以對(duì)字體、格式、段落等其他屬性進(jìn)行編排,它只是一個(gè)文本編輯程序。
vi 沒(méi)有菜單,只有命令,且命令繁多。限于篇幅,本文只介紹常用的命令。
Vi 有三種基本工作模式:命令行模式,文本輸入模式和末行模式。
命令行模式:
任何時(shí)候,不管用戶(hù)處于何種模式,只要按一下“ESC” 鍵,即可使vi 進(jìn)入命令行模式;當(dāng)在shell 環(huán)境下輸入vi 命令啟動(dòng)vi 編輯器時(shí),也是處于該模式下。
在該模式下 ,用戶(hù)可以輸入各種合法的vi 命令,用于管理自己的文檔。此時(shí)從鍵盤(pán)上輸入的任何字符都被當(dāng)作編輯命令來(lái)解釋?zhuān)糨斎氲淖址呛戏ǖ膙i 命令,則vi 在接受用戶(hù)命令之后完成相應(yīng)的動(dòng)作(但需注意的是,所輸入的命令并不在屏幕上顯示出來(lái))。若輸入的字符不是vi 的合法命令,vi 會(huì)響鈴報(bào)警。
文本輸入模式:
在命令模式下輸入插入命令 i、 附加命令a 、打開(kāi)命令 o、 修改命令c 、取代命令r 或替換命令s 都可以進(jìn)入文本輸入模式。在該模式下,用戶(hù)輸入的任何字符都被vi 當(dāng)做文件內(nèi)容保存起來(lái),并將其顯示在屏幕上。在文本輸入過(guò)程中,若想回到命令模式下,按“ESC” 鍵即可。
末行模式:
在命令模式下用戶(hù)按“:” 鍵即可進(jìn)入末行模式下,此時(shí)Vi 會(huì)在顯示窗口的最后一行(通常也是屏幕的最后一行)顯示一個(gè)“:” 作為末行模式的提示符,等待用戶(hù)輸入命令。多數(shù)文件管理命令都是在此模式下執(zhí)行的(如把編輯緩沖區(qū)的內(nèi)容寫(xiě)到文件中等)末行命令執(zhí)行完后,vi 自動(dòng)回到命令模式。
若在末行模式下輸入命令過(guò)程中改變了主意, 可按“ESC” 鍵或用退格鍵將輸入的命令全部刪除之后,再按一下退格鍵,即可使vi 回到命令模式下。
Linux系統(tǒng)中編輯文件的常用命令
---- 1.光標(biāo)命令
k、j、h、l——上、下、左、右光標(biāo)移動(dòng)命令。雖然您可以在Linux中使用鍵盤(pán)右邊的4個(gè)光標(biāo)鍵,但是記住這4個(gè)命令還是非常有用的。這4個(gè)鍵正是右手在鍵盤(pán)上放置的基本位置。
nG——跳轉(zhuǎn)命令。n為行數(shù),該命令立即使光標(biāo)跳到指定行。
Ctrl G——光標(biāo)所在位置的行數(shù)和列數(shù)報(bào)告。
w、b——使光標(biāo)向前或向后跳過(guò)一個(gè)單詞。
---- 2.編輯命令
i、a、r——在光標(biāo)的前、后以及所在處插入字符命令(i=insert、a=append、r=replace)。
cw、dw——改變(置換)/刪除光標(biāo)所在處的單詞的命令 (c=change、d=delete)。
x、d$、dd——刪除一個(gè)字符、刪除光標(biāo)所在處到行尾的所有字符以及刪除整行的命令。
---- 3.查找命令
---- /string、?string——從光標(biāo)所在處向后或向前查找相應(yīng)的字符串的命令。
---- 4.拷貝復(fù)制命令
---- yy、p——拷貝一行到剪貼板或取出剪貼板中內(nèi)容的命令。
擴(kuò)展:Linux系統(tǒng)中編輯文件命令的常見(jiàn)問(wèn)題及應(yīng)用技巧
---- 1.在一個(gè)新文件中讀/etc/passwd中的內(nèi)容,取出用戶(hù)名部分。
---- vi file
---- :r /etc/passwd 在打開(kāi)的文件file中光標(biāo)所在處讀入/etc/passwd
---- :%s/:.*//g 刪除/etc/passwd中用戶(hù)名后面的從冒號(hào)開(kāi)始直到行尾的所有部分。
---- 您也可以在指定的行號(hào)后讀入文件內(nèi)容,例如使用命令“:3r /etc/passwd”從新文件的第3行開(kāi)始讀入 /etc/passwd的所有內(nèi)容。
---- 我們還可以使用以下方法刪掉文件中所有的空行及以#開(kāi)始的注釋行。
---- #cat squid.conf.default | grep -v '^$' | grep -v '^#'
---- 2.在打開(kāi)一個(gè)文件編輯后才知道登錄的用戶(hù)對(duì)該文件沒(méi)有寫(xiě)的權(quán)限,不能存盤(pán),需要將所做修改存入臨時(shí)文件。
---- vi file
---- :w /tmp/1 保存所做的所有修改,也可以將其中的某一部分修改保存到臨時(shí)文件,例如僅僅把第20~59行之間的內(nèi)容存盤(pán)成文件/tmp/1,我們可以鍵入如下命令。
---- vi file
---- :20,59w /tmp/1
---- 3.用VI編輯一個(gè)文件,但需要?jiǎng)h除大段的內(nèi)容。
---- 首先利用編輯命令“vi file”打開(kāi)文件,然后將光標(biāo)移到需要?jiǎng)h除的行處按Ctrl G顯示行號(hào),再到結(jié)尾處再按Ctrl G,顯示文件結(jié)尾的行號(hào)。
---- :23,1045d 假定2次得到的行號(hào)為23和1045,則把這期間的內(nèi)容全刪除,也可以在要?jiǎng)h除的開(kāi)始行和結(jié)束行中用ma、mb命令標(biāo)記,然后利用“:'a,'bd”命令刪除。
---- 4.在整個(gè)文件的各行或某幾行的行首或行尾加一些字符串。
---- vi file
---- :3,$s/^/some string / 在文件的第一行至最后一行的行首插入“some string”。
---- :%s/$/some string/g 在整個(gè)文件每一行的行尾添加“some string”。
---- :%s/string1/string2/g 在整個(gè)文件中替換“string1”成“string2”。
---- :3,7s/string1/string2/ 僅替換文件中的第3行到第7行中的“string1”成“string2”。
---- 注意: 其中s為substitute,%表示所有行,g表示global。
---- 5.同時(shí)編輯2個(gè)文件,拷貝一個(gè)文件中的文本并粘貼到另一個(gè)文件中。
---- vi file1 file2
---- yy 在文件1的光標(biāo)處拷貝所在行
---- :n 切換到文件2 (n=next)
---- p 在文件2的光標(biāo)所在處粘貼所拷貝的行
---- :n 切換回文件1
---- 6.替換文件中的路徑。
---- 使用命令“:%s#/usr/bin#/bin#g”可以把文件中所有路徑/usr/bin換成/bin。也可以使用命令“:%s//usr/bin//bin/g”實(shí)現(xiàn),其中“”是轉(zhuǎn)義字符,表明其后的“/”字符是具有實(shí)際意義的字符,不是分隔符