對於 Linux 使用者來說,命令列編輯器是不可或缺的工具之一。它可以幫助你快速地編輯和處理文件,提高工作效率。但是,對於新手來說,學習命令列編輯器可能會有些困難和挑戰。今天,我們將介紹幾個最受歡迎和最實用的 Linux 命令列編輯器,幫助你快速掌握這個技能。
如果你正在使用 Linux 或 BSD 的話,你很可能已經預設安裝了 ed(在 Linux 上是 GNU 版 ed,而在 BSD 上是 BSD 版 ed)。但是,一些極簡的環境可能沒有包括 ed,這也沒關係,你的發行版的軟體倉庫中很可能有 ed 可供下載。 macOS 預設安裝了 BSD 版 ed。
這個看似簡單的編輯器為使用者提供了許多易於學習和使用的命令。
GNU ed 指令是一個行編輯器。它被認為是標準的Unix 文字編輯器,因為它是首個出現在Unix 的文字編輯器,並且它曾經無處不在,你在任何一個POSIX 系統中都能找到它(通常來說,你現在也可以)。在某種程度上,你可以很容易看出來它是第一個文字編輯器,因為它在許多方面的功能都十分基礎。和其他大多數的文字編輯器不同,它不會打開一個屬於自己的視窗或顯示區域,事實上,在預設情況下,它甚至不會提示使用者輸入文字。從另一個方面來說,它在互動功能上的缺失也可以成為一個優點。它是一個多功能的編輯器,你可以用簡短的命令控制它,無論是在互動式的命令列中,還是在編寫的 shell 腳本裡。
安裝 ed
#如果你正在使用 Linux 或 BSD 的話,你很可能已經預設安裝了 ed(在 Linux 上是 GNU 版 ed,而在 BSD 上是 BSD 版 ed)。但是,一些極簡的環境可能沒有包括 ed,這也沒關係,你的發行版的軟體倉庫中很可能有 ed 可供下載。 macOS 預設安裝了 BSD 版 ed。
啟動 ed
#當你啟動 ed 的時候,你的終端提示符不見了,看起來好像是 ed 停止運作了。其實它沒有,它只是在等你輸入指令而已。
$ ed
為使 ed 顯示更詳細的信息,你可以輸入命令 p 讓它返回一個提示符:
$ ed p ?
這個問號(?)是預設的 ed 提示字元。
緩衝區
當 ed 啟動時,你其實是在跟一個叫 緩衝區buffer 的東西打交道。緩衝區是記憶體中的一塊區域。你不會直接編輯文件,而是在編輯它對應的緩衝區。當你退出 ed 卻沒有把修改儲存到磁碟的檔案上時,所有的修改都會遺失,因為它們只在緩衝區裡存在。 (這對一個已經習慣了初始的 草圖緩衝區scratch buffer 的資深 Emacs 用戶可能很耳熟。)
使用 ed 輸入文字
啟動 ed 後,你處於指令模式。這意味著你可以向編輯器發送指令,例如讓它顯示一個提示符,而不是空白區域。你可以使用 a 指令開始附加文字到目前的緩衝區,使用一個實心的點 . 來終止輸入。例如,下面的這個例子往緩衝區裡附加了兩行文字(“hello world” 和 “hello ed”):
? a hello world hello ed .
使用點 . 終止輸入後,你將回到指令模式。
查看緩衝區
#怎麼查看目前緩衝區裡都有什麼?你可以輸入想要查看的行號,也可以使用 ,p 指令來顯示所有的行:
? 1 hello world 2 hello ed ,p hello world hello ed
寫入檔案
#如果你現在對文字很滿意,你可以使用 w 指令把緩衝區寫入到檔案中,後面跟上目標檔案名稱:
? w example.txt 19
寫入操作後顯示的那個數字代表著寫入到檔案中的字元數。
讀取檔案
#除了使用 ed 來讀取文本,你也可以使用 r 指令把一個已經存在的檔案載入到緩衝區裡:
? r myfile.txt
另外,你也可以在啟動 ed 時,在它後面加上你想要載入到緩衝區裡的檔名:
$ ed myfile.txt
編輯緩衝區
#鑑於 ed 是一個文字編輯器,你當然可以使用一種特殊的語法來編輯緩衝區裡的文字。使用 sed 或 vim 的使用者或許會覺得這個語法很熟悉。假設現在緩衝區裡已經載入了一個檔案:
$ ed myfile.txt ,p This is an example document. There is some text, but not much. There is some errors, but not much.
如果你要把第一句話中的 document 修改為 file,你可以先選擇目標行(1),然後使用 s 指令呼叫搜尋函數,後面跟著搜尋文字和取代文字:
? 1 This is an example document. s/document/file/ 1 This is an example file.
如果你要編輯其他行,步驟也是一樣的,只要提供一個不同的行號:
? 3 There is some errors, but not much. s/is/are/ s/much/many/
你可以使用 ,p 指令來看到你對緩衝區的歷史編輯記錄:
This is an example file. There is some text, but not much. There are some errors, but not many.
當然,這些修改只存在於緩衝區。你如果在 ed 編輯器外查看這個文件,你只會看到原始的文字:
$ cat myfile.txt This is an example document. There is some text, but not much. There is some errors, but not much.
如果你要把这些修改保存回文件中,使用 w 命令即可:
w myfile.txt 258
清空缓冲区
如果想要得到一个新的缓冲区,以此来打开一个新的文件,或者把一个新的文件加载到不同的环境中,你可以使用 c 命令。使用这个清空缓冲区后,什么也不会输出,因为缓冲已经是空的了:
c ,p
退出
如果要退出当前的 ed 会话,你可以使用 q 命令。它并不会给你一个保存缓冲区的机会,所以你要确保自己在这之前执行了保存操作。
尝试一下 ed 吧
ed 还可以做到很多事情,学习 ed 可以让你知道它和部分的 vim 是如何工作的。我并没有尝试使用 ed 来写这篇文章,老实说,我也不认为它是通常意义上的最佳文本编辑器。但是,ed 仍然是一个出色的编辑器。通过阅读它的文档,你可以很轻松地学会它。在 GNU 系统上,你可以使用 info ed 来查看它的操作手册。
总之,Linux 命令行编辑器是 Linux 用户必备的工具之一。在本文中,我们介绍了 Vim、Nano、Emacs 和 Ed 四种常用且优秀的命令行编辑器。每个编辑器都有其特色和用途,你可以根据自己的需求选择其中的一种或几种。希望这篇文章能够对你有所帮助,让你更加熟练地使用 Linux 命令行编辑器。
以上是Linux 命令列編輯 – 編輯無限可能!的詳細內容。更多資訊請關注PHP中文網其他相關文章!