返回文章列表

Emacs 在 Raspberry Pi OS 系統管理中的應用

本文介紹如何在 Raspberry Pi OS 上使用 Emacs 進行系統管理,包含文字複製貼上、全域性搜尋替換、圖形化編輯、C 語言程式開發等技巧,並提供 Python 自動化範例,提升系統管理效率。

系統管理 文字編輯器

Emacs 不僅是個功能強大的文字編輯器,更是 Raspberry Pi OS 系統管理的利器。它能處理純文字檔案、程式碼,甚至可以圖形化操作,大幅提升工作效率。本文將探討 Emacs 的多種應用,包含基本操作、圖形化介面、C 語言程式開發,以及 Python 自動化範例,讓您完整掌握 Emacs 的精髓。

使用 Emacs 進行 Raspberry Pi OS 系統管理的附加主題

在 Raspberry Pi OS 中,Emacs 是一個強大且多功能的文字編輯器。它不僅可以用來編輯文字檔案,還提供了豐富的功能來提高工作效率。這篇文章將探討如何使用 Emacs 進行文字複製、貼上以及全域性搜尋與替換的操作。

文字複製與貼上

要複製三個單詞並將它們貼上到另一個位置,首先需要設定標記(mark)。具體步驟如下:

  1. 設定標記:將遊標移動到需要複製的三個單詞後,按下 <Ctrl+ @>。這樣就設定了一個標記。
  2. 定義區域:將遊標移動到三個單詞之前。這樣就定義了一個區域,從遊標到標記之間的所有內容。
  3. 剪下文字:按下 <Esc+ W>,將區域內的文字傳送到 Kill Ring。這些文字會被剪下但不會從螢幕上消失。
  4. 貼上文字:將遊標移動到需要貼上的位置,按下 <Ctrl+Y>。這樣就會在新位置還原這些文字。

內容解密:

  • 設定標記:在 Emacs 中,<Ctrl+ @> 的操作可以設定一個標記點。這個點是用來定義一個區域範圍的。
  • 定義區域:在 Emacs 中,區域是指從當前遊標位置到標記之間的所有內容。這個區域可以用來進行各種操作,比如剪下、複製、搜尋等。
  • 剪下文字<Esc+ W> 的操作會將定義好的區域內容剪下並放入 Kill Ring。Kill Ring 是 Emacs 中用來儲存剪下和刪除的內容的一個環形緩衝區。
  • 貼上文字<Ctrl+Y> 的操作會將 Kill Ring 中的最新內容貼上到當前遊標位置。

全域性搜尋與替換

Emacs 提供了兩種全域性搜尋與替換的方式:無條件替換和互動替換。

無條件替換

無條件替換是指每次遇到舊字串都會自動替換成新字串,不需要使用者確認。具體步驟如下:

  1. 按下 <Esc+ %>,輸入 replace-string 並按下 <Enter>
  2. 輸入舊字串(例如 men),按下 <Enter>
  3. 輸入新字串(例如 women),按下 <Enter>

這樣就會自動替換所有出現的舊字串為新字串。

互動替換

互動替換是指每次遇到舊字串都會提示使用者確認是否替換。具體步驟如下:

  1. 按下 <Esc+ X>,輸入 query-replace 並按下 <Enter>
  2. 輸入舊字串和新字串,每次遇到舊字串時會提示是否替換。

情境演練:Emacs 編輯器操作

以下是一個實際的情境演練,展示如何在 Emacs 中進行文字複製、貼上以及全域性搜尋與替換的操作。

情境演練步驟

  1. 啟動 Emacs:在 shell 提示符下輸入 emacs osfile 並按下 <Enter>
  2. 輸入文字:輸入「Windows 是所有人的首選作業系統。」
  3. 設定標記:將遊標移動到「Windows」中的「W」,按下 <Ctrl+ @> 設定標記。
  4. 定義區域:使用滑鼠選取整行文字,定義要複製的區域。
  5. 剪下文字:按下 <Esc+ W> 將選取的文字放入 Kill Ring。
  6. 貼上文字:按下 <Enter> 新建一行,然後按下 <Ctrl+ Y> 貼上剪下的文字。
  7. 重複貼上:重複步驟 5 和 6 六次,總共有八行相同的文字。
  8. 互動替換:按下 <Alt+%>,輸入 everyonestudents 進行互動替換。
  9. 無條件替換:按下 <Alt+X>,輸入 replace-string,然後輸入 WindowsRaspberry Pi OS 進行無條件替換。
  10. 儲存並離開:儲存緩衝區並離開 Emacs。

情境演練圖示

此圖示展示了情境演練中每個步驟之間的邏輯關係。

內容解密:

  • 啟動 Emacs:在終端機中使用命令 emacs osfile 啟動 Emacs 編輯器。
  • 輸入文字:在 Emacs 中輸入需要編輯的文字內容。
  • 設定標記:使用 <Ctrl+ @> 設定一個標記點,用於定義區域範圍。
  • 定義區域:使用滑鼠選取需要操作的文字範圍,定義一個區域。
  • 剪下文字:使用 <Esc+ W> 剪下選取的文字並放入 Kill Ring。
  • 貼上文字:使用 <Ctrl+ Y> 在當前遊標位置貼上剪下的文字。
  • 重複貼上:重複剪下和貼上的步驟,達到需要的重複次數。
  • 互動替換:使用 <Alt+%>query-replace 命令進行互動式搜尋與替換。
  • 無條件替換:使用 <Alt+X>replace-string 命令進行無條件搜尋與替換。
  • 儲存並離開:使用快捷鍵儲存編輯後的內容並離開 Emacs 編輯器。

結果展示

完成以上步驟後,螢幕顯示應該類別似於以下圖示:

Windows 是所有人的首選作業系統
Windows 是學生們的首選作業系統
Windows 是電腦科學家們的首選作業系統
Windows 是工程師們的首選作業系統
Windows 是系統管理員們的首選作業系統
Windows 是網頁伺服器們的首選作業系統
Windows 是科學家們的首選作業系統
Windows 是網路專家們的首選作業系統

這樣就完成了一次完整的 Emacs 編輯器操作流程。透過這些步驟,玄貓展示瞭如何高效地使用 Emacs 進行文字編輯和管理。

使用 GNU Emacs 進行純圖形化編輯

在學習 GNU Emacs 的過程中,我們可以選擇在文字終端機視窗中進行操作,但對於初學者來說,更方便的方式是透過圖形使用者介面(GUI)進行操作。這樣可以讓我們在圖形環境中更直觀地完成編輯工作。

圖形化編輯資料檔案

以下練習課程展示瞭如何使用圖形化的 GNU Emacs 對資料檔案進行進一步編輯。這些操作在 Raspberry Pi 的 GUI 桌面環境下執行時,看起來和感覺像是執行在任何其他具有 GUI 的作業系統上的文書處理或桌面出版應用程式,例如 Windows 11 或 Mac OS X。在接下來的練習課程中,我們將使用 GNU Emacs 28.2。

練習課程 3.5

步驟 1: 在終端機或控制檯視窗中,於 Shell 提示符下輸入 emacs datafile,然後按下 <Enter> 鍵。您的螢幕顯示應該類別似於圖 3.4。

步驟 2: 使用滑鼠將遊標移動到緩衝區第十行開始處的字元 1 上,然後按下左鍵。遊標現在位於字元 1 上。

步驟 3: 按住左鍵不放,然後拖動滑鼠使整個第十行被選取,包括第十行末尾的數字 10 右邊的一個字元。釋放左鍵。整個第一行應該被選取。

步驟 4: 使用滑鼠將遊標移動到 Emacs 螢幕頂部的「編輯」選項上。按下左鍵。一組類別似於圖 3.6 的下拉選單選項出現。

Edit pull-down menu

步驟 5: 選擇「複製」選項。您在步驟 3 中選取的文字現在儲存在一個臨時緩衝區中。

步驟 6: 按下 <Enter> 鍵。這將在緩衝區底部開啟第十一行。

步驟 7: 移動滑鼠使遊標位於第十一行的第一個字元位置上,然後按下左鍵。遊標現在位於該位置。

步驟 8: 選擇「編輯 > 貼上」下拉選單選項。您現在已經將緩衝區第十行中的十個字元貼到了第十一行中。您的螢幕顯示現在應該類別似於圖 3.7。

Datafile after editing and adding an 11th line

步驟 9: 選擇「檔案 > 儲存(當前緩衝區)」下拉選單選項。在出現的「寫入檔案:」對話方塊中,將檔案儲存到主目錄中名為 datafile11,然後選擇「檔案 > 離開 Emacs」。

在圖形化 Emacs 中啟動、儲存檔案並離開

如練習課程 3.5 中所示,GNU Emacs 提供了高度的滑鼠/圖形介面指令捷徑。這種文字檔案處理方式對於初學者和有經驗的使用者都是最有效率的方法。請注意,如圖 3.6 中所示的下拉選單上也顯示了某些選項的快捷鍵指令。點選選單選項按鈕或按壓鍵盤組合鍵可以達到相同的效果。這種靈活性增加了您使用 Emacs 的便利性。

當然,您仍需使用鍵盤來輸入文字!

練習課程 3.6 請您修改練習課程 3.2 中建立的 alien 檔案。那個練習課程允許您使用 Emacs 建立一個簡單的 Bash shell 指令別名檔案。現在您將對其進行修改,以便它可以用來為 C shell 建立別名。您還將修改主目錄中的現有檔案 .cshrc,以便當您使用 C shell時,別名 shell 指令可供您在 alien3 檔案中使用。

準備步驟

與所有之前的練習課程一樣,我們假設您正在互動式 shell 清除終端或控制檯視窗中工作。此外,C shell 預設安裝在您的 Raspberry Pi系統上。

準備步驟 1: 您可以使用 ls -la 命令來檢視主目錄中是否有一個 .cshrc 檔案。如果主目錄中沒有 .cshrc 檔案,請使用 Emacs 建立一個名為 .cshrc 的新檔案並不含任何文字。然後離開 Emacs ,輸入 chmod u+ x .cshrc ,然後按下 <Enter> 鍵。

準備步驟2: 假設預設情況下,Bash 是您 Raspberry Pi系統上的預設 Shell 。要找出您目前正在使用哪個 Shell ,請輸入 echo $SHELL ,然後按下 <Enter> 鍵 。如果您正在使用 C Shell ,系統將回應 /bin/csh 。如果您正在使用 Bash Shell ,系統將回應 /bin/bash 。要找出安裝在 Raspberry Pi OS 上的 Shell ,並安裝 C Shell (如果尚未安裝),請使用以下命令:

bob@raspberrypi:~ $ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/usr/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
bob@raspberrypi:~ $ sudo apt install csh

工作流程

首先我們要介紹如何從頭完成前面提到的一些基本操作流程並介紹每個步驟為什麼需要這樣設計: 此圖示展示了完整流程結構及內容:

  • A:此圖示是從啟動Emacs開始。
  • B:此階段主要是根據不同資料需求選擇不同編輯模式。
  • C:此階段開始進入資料編輯模式。
  • D:此階段開始進入別名編輯模式。
  • E:此階段根據需要決定要執行何種操作。
  • F:若是複製操作則會直接進入儲存流程。
  • G:若是編輯操作則會直接進入貼上流程。
  • H:完成所有編輯後即可儲存。
  • I:最後執行離開流程。

這樣確保能夠充分理解每個流程及其作用邏輯,

Python自動化範例

以下為Python自動化範例及內容解說:

import os

def start_emacs(file_name):
    os.system(f'emacs {file_name}')

def modify_file(file_name):
    # 在這裡新增修改檔案的邏輯
    pass

def save_and_exit(file_name):
    # 在這裡新增儲存並離開Emacs的邏輯
    pass

if __name__ == "__main__":
    file_name = "datafile"
    start_emacs(file_name)
    modify_file(file_name)
    save_and_exit(file_name)

內容解密:

import os

def start_emacs(file_name):
# 操作說明:
# 本函式負責啟動Emacs並載入指設定檔案。
# 函式會呼叫OS系統命令 `emacs {file_name}`,
# {file_name} 是變數引數傳遞給命令,
# 呼叫完成則會自動開啟Emacs並載入該檔案,
# 提供快速啟動及載入功能。
	 os.system(f'emacs {file_name}')

def modify_file(file_name):
# 操作說明:
# 本函式負責修改指設定檔案內容,
# 傳遞引數file_name後即可自動執行,
# 未來可以考慮新增更多實務功能,
# 提供更多修改工具及操作機制。
	pass

def save_and_exit(file_name):
# 操作說明:
# 本函式負責儲存並關閉Emacss,
# 傳遞引數file_name後即可自動執行,
# 未來可以考慮新增更多儲存工具及操作機制,
	pass

if __name__ == "__main__":
	 file_name = "datafile"
	 start_emacs(file_name)
	 modify_file(file_name)
	 save_and_exit(file_name)

以上就是Python自動化範例及詳細邏輯解說

編輯與編譯 C 語言程式:Emacs 入門

Emacs 是一款功能強大的文字編輯器,不僅適合編寫文字檔案,也能用於程式開發、電子郵件撰寫、執行 Shell 指令等。以下是如何使用 Emacs 編輯與編譯 C 語言程式的詳細步驟。

編輯 C 語言程式

首先,我們來編輯一個簡單的 C 語言程式。這個程式會讓使用者輸入兩個數字,然後計算第一個數字的第二個數字次方。

#include <stdio.h>
#include <math.h>

int main() {
    float x, y;
    printf("This program takes x and y values from stdin and displays x^y.\n");
    printf("Enter x: ");
    scanf("%f", &x);
    printf("Enter y: ");
    scanf("%f", &y);
    printf("x^y is: %6.3f\n", pow(x, y));
    return 0;
}

內容解密:

  • 這段程式碼首先包含了 stdio.hmath.h 這兩個標頭檔,分別用於輸入輸出操作和數學函式。
  • main 函式是程式的入口點,定義了兩個浮點數變數 xy
  • printf 函式用於顯示提示資訊,讓使用者知道程式的功能。
  • scanf 函式用於從標準輸入讀取使用者輸入的數值。
  • pow 函式用於計算 xy 次方,結果以小數點後三位精確度顯示。

使用 Emacs 編輯與編譯

以下是詳細的步驟:

1. 啟動 Emacs

在命令列提示符下輸入 emacs power.c,這會啟動 Emacs 並開啟一個名為 power.c 的新檔案。

2. 編輯程式碼

將上述 C 語言程式碼輸入到 Emacs 中。使用 <Tab> 鍵來自動縮排程式碼,使其更具可讀性。

3. 儲存檔案

從功能表中選擇 File > Save,將程式碼儲存到檔案中。

4. 編譯程式

從功能表中選擇 Tools > Compile...,在出現的提示中輸入編譯命令 make -k。這會開始編譯你的 C 語言程式。

5. 處理錯誤

如果編譯過程中出現錯誤,Emacs 會顯示錯誤資訊。你可以根據錯誤資訊進行修正,然後重新編譯。

執行與測試

完成編譯後,你可以在終端機視窗中執行該程式。輸入以下命令來執行你的 C 語言程式:

./power

接著按照提示輸入兩個數字,程式會計算並顯示第一個數字的第二個數字次方。

測試與驗證

你可以多次測試不同的輸入值,確保程式正確地計算並顯示結果。這樣就完成了使用 Emacs 編輯、編譯和執行 C 語言程式的全過程。

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

title Emacs 在 Raspberry Pi OS 系統管理中的應用

package "物聯網架構" {
    package "感知層" {
        component [感測器] as sensor
        component [執行器] as actuator
        component [嵌入式裝置] as device
    }

    package "網路層" {
        component [閘道器] as gateway
        component [MQTT Broker] as mqtt
        component [邊緣運算] as edge
    }

    package "平台層" {
        cloud "IoT Platform" as platform
        database [時序資料庫] as tsdb
        component [規則引擎] as rules
    }

    package "應用層" {
        component [監控儀表板] as dashboard
        component [告警系統] as alert
        component [數據分析] as analytics
    }
}

sensor --> device : 資料採集
device --> gateway : 資料傳輸
gateway --> mqtt : MQTT 協議
mqtt --> edge : 邊緣處理
edge --> platform : 雲端上傳
platform --> tsdb : 資料儲存
platform --> rules : 規則處理
rules --> alert : 觸發告警
tsdb --> analytics : 資料分析
analytics --> dashboard : 視覺化

@enduml

內容解密:

  • 啟動 Emacs:在命令列提示符下輸入 emacs power.c 啟動 Emacs。
  • 編輯 C 語言程式碼:將完整的 C 語言程式碼輸入到 Emacs 中。
  • 儲存檔案:從功能表中選擇 File > Save 儲存檔案。
  • 編譯程式:從功能表中選擇 Tools > Compile... ,然後輸入編譯命令。
  • 處理錯誤:根據 Emacs 提供的錯誤資訊進行修正。
  • 執行與測試:在終端機視窗中執行並測試你的 C 語言程式。

透過這些步驟,你可以高效地使用 Emacs 編輯、編譯和執行 C 語言程式。希望這些指引能夠幫助你更好地理解和應用 Emacs 在 C 語言開發中的強大功能。