1. 程式人生 > >Linux系統下檔案檢視/編輯方法介紹

Linux系統下檔案檢視/編輯方法介紹

1、cat 命令介紹

cat 命令的原含義為連線(concatenate),用於連線多個檔案內容並輸出到標準輸出流中(標準輸出流預設為螢幕)。實際運用過程中,我們常使用它來顯示檔案內容。如果您熟悉MS-DOS 下的type 命令,相信不難掌握cat 命令。該命令的常用示例如下:

cat file1.txt                     顯示 file1.txt 檔案的內容
cat file1.txt file2.txt        顯示 file1.txt 和file2.txt 檔案的內容
cat -n file1.txt                顯示 file1.txt
檔案的內容同時顯示行號

2 vi 命令介紹

vi 是“Visual Interface ”的簡稱,它在Linux 上的地位就彷彿Edit 程式在DOS上一樣。它可以執行輸出、刪除、查詢、替換、塊操作等眾多文字操作。而且使用者可以根據自己的需要對其進行定製。這是其他編輯程式所沒有的。
vi 不是一個排版程式,它不像Word 或WPS 那樣可以對字型格式段落等其他屬性進行編排,它只是一個文字編輯程式。
vi 沒有選單,只有命令,且命令繁多。以下只介紹常用的命令。

1、Vi 的三種基本工作模式

命令列模式、文字輸入模式、末行模式。

1.1 命令列模式

任何時候,不管使用者處於何種模式,只要按一下“ESC” 鍵,即可使vi 進入命令列模式。當在shell 環境下輸入vi 命令啟動vi 編輯器時,也是處於該模式下。
在命令列模式下,使用者可以輸入各種合法的vi 命令,用於管理自己的文件。此時從鍵盤上輸入的任何字元都被當作編輯命令來解釋

,若輸入的字元是合法的vi 命令,則vi 在接受使用者命令之後完成相應的動作(但需注意的是所輸入的命令並不在螢幕上顯示出來)。若輸入的字元不是vi 的合法命令,vi 會響鈴報警。

1.2 文字輸入模式

在命令模式下輸入

插入命令 i 、
附加命令a、 
開啟命令 o、 
修改命令c、 
取代命令r ,
替換命令s

都可以進入文字輸入模式,在該模式下,使用者輸入的任何字元都被vi 當做檔案內容儲存起來,並將其顯示在螢幕上。在文字輸入過程中,若想回到命令模式下,按“ESC” 鍵即可。

末行模式

在命令模式下使用者按 “:” 鍵即可進入末行模式下,此時Vi 會在顯示視窗的最後一行(通常也是螢幕的最後一行)顯示一個”:” 作為末行模式的提示符,等待使用者輸入命令。多數檔案管理命令都是在此模式下執行的(如把編輯緩衝區的內容寫到檔案中等)。末行命令執行完後,vi 自動回到命令模式。
若在末行模式下輸入命令過程中改變了主意, 可按“ESC” 鍵,或用退格鍵將輸入的命令全部刪除之後,再按一下退格鍵,即可使vi 回到命令模式下。

2、vi 的進入與退出

在 shell 模式下,鍵入vi 及需要編輯的檔名,即可進入vi 。例如:

vi example.txt

即可編輯 example.txt 檔案。如果該檔案存在,則編輯介面中會顯示該檔案的內容,並將游標定位在檔案的第一行。如果檔案不存在,則編輯介面中無任何內容。如果需要在進入vi 編輯介面後,將游標置於檔案的第n 行,則在vi命令後面加上“+n” 引數即可。例如需要從example.txt 檔案的第5 行開始顯示,則使用如下命令:

vi +5 example.txt

退出 vi 時,需要在末行模式中輸入退出命令“q”。 如果在文字輸入模式下,首先按”ESC“ 鍵進入命令模式,然後輸入“:” 進入末行模式。在末行模式下,可使用如下退出命令:

:q ——直接退出 如果在文字輸入模式下修改了文件內容則不能退出
:wq ——儲存後退出
:x ——儲存後退出
:q! ——不儲存內容 強制退出

3、vi 中顯示行號

在末行模式下,輸入如下命令:

set number

可使 vi 在編輯介面中顯示行號。
此外, 在末行模式下,可使用如下“nu”命令(number 的簡寫)來顯示游標所在行的行號及該行的內容。

4、游標移動操作

全螢幕文字編輯器中,游標的移動操作無疑是最經常使用的操作了。使用者只有熟練地使用移動游標的這些命令,才能迅速準確地到達所期望的位置處進行編輯。
vi 中的游標移動既可以在命令模式下,也可以在文字輸入模式下但操作的方法不盡相同。
在文字輸入模式下,可直接使用鍵盤上的四個方向鍵移動游標;
在命令模式下,不但可以使用四個方向鍵來移動游標,還可以用h、j、k、l 這四個鍵代替四個方向鍵來移動游標。這樣可以避免由於不同機器上的不同鍵盤定義所帶來的矛盾,而且使用熟練後可以手不離開字母鍵盤位置就能完成所有操作,從而提高工作效率。
以下命令均在命令列模式下完成游標移動:

h ——游標左移 如果在按h 命令前輸入數字n,則游標左移n 個字元
l ——游標右移 如果在按l 命令前輸入數字n,則游標右移n 個字元
j ——游標上移 如果在按j 命令前輸入數字n,則游標上移n 個字元
k ——游標下移 如果在按k 命令前輸入數字n,則游標下移n 個字元
0 (零)——游標移到行首
$ ——游標移到行尾
H ——游標移到螢幕上顯示的第一行 並不一定是檔案頭
L ——游標移到螢幕上顯示的最後一行 並不一定是檔案尾
M ——游標移到螢幕的中間一行
nG ——游標移到第 n 行
w或W ——將游標右移至下一個單詞的詞首
e 或E ——如果游標起始位置處於單詞內(即非單詞尾處);則該命令將把游標移到本單詞詞尾;如果游標起始位置處於單詞尾,則該命令將把游標移動到下一個單詞的詞尾。
b 或B ——如果游標處於所在單詞內(即非單詞首),則該命令將把游標移至本單詞詞首;如果游標處於所在單詞的詞首,則該命令將把游標移到上一個單詞的詞首;
Ctrl+G ——狀態命令,顯示當前編輯文件的狀態。包括正在**編輯的檔名**、**是否修改過**、**當前行號**、**檔案的行數**以及**游標之前的行佔整個檔案的百分比。**
此外,也可以通過以下末行模式下的命令完成游標在整個檔案中的移動操作:
:n ——游標移到檔案的第n 行
:$ ——游標移到檔案的最後一行

5、文字插入操作

在命令模式下,使用者輸入的任何字元都被vi 當作命令加以解釋執行,如果使用者要將輸入的字元當作是文字內容時,則首先應將vi 的工作模式從命令模式切換到文字輸入模式。切換的方式是使用下面的命令:

5.1 插入Insert 命令

vi 提供了兩個插入命令:i 和I
(1). i 命令——插入文字從游標所在位置前開始 ,並且插入過程中可以使用鍵刪除錯誤的輸入。此時vi 處於插入狀態,螢幕最下行顯示–INSERT– (插入)字樣。
(2)I 命令——該命令是將游標移到當前行的行首,然後在其前插入文字。

5.2 附加append 命令

vi 提供了兩個附加插入命令:a 和A
(1)a 命令該命令用於在游標當前所在位置之後追加新文字,新輸入的文字放在游標之後,在游標後的原文字將相應地向後移動,游標可在一行的任何位置;
(2)A 命令該命令與 a 命令不同的是A 命令將把游標挪到所在行的行尾,從那裡開始插入新文字。當輸入A 命令後,游標自動移到該行的行尾。a 和A 命令是把文字插入到行尾的唯一方法;

5.3 開啟open 命令

不論是 Insert 命令也好,還是append 命令也好,所插入的內容都是從當前行中的某個位置開始的。若我們希望在某行之前或某行之後插入一些新行,則應使用open 命令。
vi 提供了兩個開啟命令:o 和O
(1)o 命令該命令將在游標所在行的下面新開一行,並將游標置於該行的行首,等待輸入文字。要注意當使刪除字元時只能刪除從插入模式開始的位置以後的字元,對於以前的字元不起作用。
(2)O 命令和 o 命令相反,O 命令是在游標所在行的上面插入一行,並將游標置於該行的行首,等待輸入文字。

6、文字修改操作

在命令模式下可以使用 vi 提供的各種有關命令對文字進行修改,包括對文字內容的刪除、複製、取代和替換等。

6.1 文字刪除/移動

在編輯文字時,經常需要刪除一些不需要的文字,我們可以用鍵將輸錯或不需要的文字刪除,但此時有一個限制就是當刪到行頭之後,再想刪上面那行的內容是不可能的。
在命令模式下 ,vi 提供了許多刪除命令。這些命令大多是以d 開頭的,常用的有:
(1)刪除單個字元
x —— 刪除游標處的字元。若在x 之前加上一個數字n ,則刪除從游標所在位置開始向右的n 個字元。
X —— 刪除游標前面的那個字元。若在X之前加上一個數字n ,則刪除從游標前面那個字元開始向左的n 個字元。
顯然這兩個命令是刪除少量字元的快捷方法。
(2)刪除多個字元
dd —— 刪除游標所在的整行。 在dd 前可加上一個數字n, 表示刪除當前行及其後n-1 行的內容。
D 或d$ —— 兩命令功能一樣,都是刪除從游標所在處開始到行尾的內容。
d0 —— 刪除從游標前一個字元開始到行首的內容。
dw —— 刪除一個單詞。 若游標處在某個詞的中間,則從游標所在位置開始刪至詞尾。同dd 命令一樣,可在dw之前加一個數字n, 表示刪除n 個指定的單詞。
如果使用者不小心進行了誤刪除操作,也不要緊。vi 提供了恢復誤操作的命令,並且可以將恢復的內容移動放在文字的任何地方恢復命令用”np”,其中n 為需要恢復的次數。例如使用dd 命令刪除了一行內容,然後使用”2p”命令,則被刪除的內容會被重新插入兩遍。
通過 dd 命令及p 命令的結合使用,可以很方便的實現文字行的移動操作。

6.2 文字複製命令

yy 複製游標所在的整行 。在yy 前可加上一個數字n,表示複製當前行及其後n-1 行的內容。
文字行復制後,通過使用上面介紹的p 命令,可以將文字行貼上到任何地方。
dd、yy 及p 命令在vi 中的作用,類似於Windows 中圖形編輯程式的”剪下“、”複製“及”貼上“命令。

6.3 取消上一命令Undo

取消上一命令(Undo), 也稱復原命令,是非常有用的命令它可以取消前一次的誤操作或不合適的操作對檔案造成的影響,使之回覆到這種誤操作或不合適操作被執行之前的狀態。
取消上一命令有兩種形式,在命令模式下鍵入字元u 和U。它們的功能都是取消剛才輸入的命令,恢復到原來的情況。小寫u 和大寫U 在具體細節上有所不同,二者的區別在於,大寫U命令的功能是恢復到誤操作命令前的情況,即如果插入命令後使用U 命令,就刪除剛剛插入的內容。如果刪除命令後使用U 命令,就相當於在游標處又插入剛剛刪除的內容。這裡把所有修改文字的命令都視為插入命令。也就是說,U 命令只能取消前一步操作,如果用U命令撤消了前一步操作,當再按U 鍵時並不是撤消再前一步的操作而是(–得+的效果)恢復到第一次使用U 命令之前的狀態,結果是什麼都沒做。而小寫u 命令的功能是把當前行恢復成被編輯前的狀態,而不管此行被編輯了多少次。

6.4 重複命令Redo

重複命令也是一個非常常用的命令。在文字編輯中經常會碰到需要機械地重複一些操作,這時就需要用到重複命令。它可以讓使用者方便地再執行一次前面剛完成的某個複雜的命令。
重複命令只能在命令模式下工作,在該模式下按”.“鍵既可執行一個重複命令時,其結果是依賴於游標當前位置的。

7、文字搜尋與替換操作

在進行文字編輯的時候,您可以需要搜尋或定位特定的單詞或單詞的一部分。
vi 編輯器有向前或向後搜尋指定模式的功能。
“/”是vi 編輯器的模式搜尋命令。鍵入”/”後,螢幕的底部會出現一行,同時一個斜扛會出現在底行的行首上,且游標被放置在斜扛之後。此時您可以在游標位置鍵入你需要搜尋的模式。輸入完成並按下ENTER鍵後,編輯器將開始從游標所在的位置起向檔案尾部搜尋你鍵入的模式。如果輸入的模式被找到,游標將停留在找到的模式上。在找到一個匹配的模式後如果您還需要搜尋下一個匹配的模式,使用命令”n”即可;如果需要找到上一個匹配的模式,則使用”N”命令即可。
此外 “?” 命令也是模式搜尋命令。與”/” 的區別在於: “/” 是從游標當前所在位置向檔案尾部搜尋,而 “?” 命令則是由游標當前所在位置向檔案頭部搜尋。
文字替換操作需要使用末行模式進行操作,即所有文字替換操作命令均以 “:” 開頭。
文字替換命令的格式為:
:s/text1/text2 —— 用於將游標所在段落搜尋到的第一個”text1” 替換為”text2”;
:s/text1/text2/g —— 用於將游標所在段落的所有 “text1” 替換為”text2”;
:m,ns/text1/text2/g —— 用於將從 m行開始至n 行結束的所有搜尋到的”text1”替換為“text2”。 其中可以使用"1, “表示替換文件中的所有符合條件的字元。