在 Linux 環境下,熟練掌握命令列工具對於系統管理和日常操作至關重要。本文將涵蓋程式管理、檔案操作、USB 裝置偵測、日期時間設定以及背景執行程式等常用技巧,並提供實用的程式碼範例和圖表說明。

問題

你想要在命令列中重複執行命令,而不需要再次輸入它們。

解決方案

使用上下箭頭鍵來選擇命令列歷史中的前一條命令,並使用 history 命令搭配 grep 來查詢較舊的命令。

討論

你可以透過按下上箭頭鍵來存取你之前執行的命令。按下上箭頭鍵一次會將你帶到前一條命令,按下兩次會帶你到更早之前的命令,以此類別推。如果你超過了你想要的命令,下箭頭鍵會將你帶回相反的方向。 如果你想要取消選擇的命令而不執行它,可以使用 Ctrl-C。 隨著時間的推移,你的命令歷史會變得太大,以至於你無法使用箭頭鍵來找到你很久以前使用的命令。要找到很久以前的命令,你可以使用 history 命令:

$ history

這會顯示你的命令歷史記錄,包括每個命令的編號和內容。

1 sudo nano /etc/init.d/my_server
2 sudo chmod +x /etc/init.d/my_server
3 /etc/init.d/my_server start
4 cp /media/4954-5EF7/sales_log/server.py myserver.py
5 /etc/init.d/my_server start
6 sudo apt-get update
7 sudo apt-get install bottle

內容解密:

  • history 命令用於顯示命令歷史記錄。
  • 上箭頭鍵和下箭頭鍵用於在命令歷史記錄中導航。
  • Ctrl-C 用於取消選擇的命令。

圖表翻譯:

  flowchart TD
    A[開始] --> B[按下上箭頭鍵]
    B --> C[選擇前一條命令]
    C --> D[按下上箭頭鍵再次]
    D --> E[選擇更早之前的命令]
    E --> F[使用 Ctrl-C 取消]
    F --> G[結束]

圖表翻譯:

這個流程圖描述瞭如何使用上箭頭鍵和 Ctrl-C 來導航和取消命令歷史記錄中的命令。首先,按下上箭頭鍵選擇前一條命令,然後再次按下上箭頭鍵選擇更早之前的命令。如果需要取消選擇的命令,可以使用 Ctrl-C。

監控處理器活動

當你的樹莓派(Raspberry Pi)執行速度變慢時,你可能想知道哪些程式正在佔用處理器資源。為瞭解決這個問題,你可以使用任務管理器(Task Manager)工具。

安裝任務管理器

在Ubuntu基礎的系統中,你可以使用以下命令安裝任務管理器:

sudo apt-get install gnome-system-monitor

或者,如果你使用的是根據Debian的系統,你可以使用:

sudo apt-get install taskmanager

執行任務管理器

安裝完成後,你可以在主選單中找到任務管理器,並將其啟動。或者,你可以使用以下命令直接執行:

gnome-system-monitor

或者:

taskmanager

任務管理器介面

任務管理器的介面分為兩個主要部分:上方的條形圖顯示整體CPU和記憶體使用情況,下方的列表顯示所有正在執行的程式及其佔用的CPU資源。

CPU使用情況

在條形圖中,你可以看到目前CPU的使用率。這個數值可以幫助你快速判斷系統是否過載。

程式列表

在程式列表中,你可以看到所有正在執行的程式,包括其佔用的CPU資源和記憶體使用情況。你可以右鍵點選任意程式,並從彈出選單中選擇終止程式的選項。

範例使用

假設你想要找出哪些程式正在佔用太多CPU資源,你可以按照以下步驟進行:

  1. 啟動任務管理器。
  2. 在程式列表中,找到佔用CPU資源最多的程式。
  3. 右鍵點選該程式,並從彈出選單中選擇終止程式的選項。

內容解密:

在上面的範例中,我們使用了gnome-system-monitor命令來啟動任務管理器。這個命令會開啟一個圖形化介面,允許你監控和管理系統中的程式。

  flowchart TD
    A[啟動任務管理器] --> B[監控CPU使用情況]
    B --> C[找到佔用CPU資源最多的程式]
    C --> D[終止程式]

圖表翻譯:

此圖表顯示了使用任務管理器監控和管理系統中的程式的流程。首先,啟動任務管理器;然後,監控CPU使用情況;接下來,找到佔用CPU資源最多的程式;最後,終止該程式。

  graph LR
    A[啟動任務管理器] -->|監控CPU使用情況|> B[找到佔用CPU資源最多的程式]
    B -->|終止程式|> C[系統資源釋放]

處理Linux系統中的程式和檔案

在Linux系統中,管理程式和檔案是一項重要的工作。下面,我們將探討如何使用命令列工具來管理程式和檔案。

使用top命令檢視程式資源使用情況

如果您偏好使用命令列工具來管理程式,可以使用top命令來檢視程式的CPU和記憶體使用情況。這個命令可以顯示出哪些程式正在佔用最多的資源。

$ top

top命令的輸出中,您可以看到每個程式的程式ID、CPU使用率和記憶體使用率。例如,如果您看到一個程式佔用了97%的CPU,您可以使用kill命令來終止該程式。

$ kill 2447

請注意,終止錯誤的程式可能會導致系統不穩定,甚至當機。但是,如果您終止了一個重要的系統程式,只需重新啟動Raspberry Pi即可還原正常。

使用ps和grep命令查詢程式

如果您需要查詢一個特定的程式,但它沒有在top命令的輸出中顯示,您可以使用psgrep命令來查詢。

$ ps -ef | grep "python"

這個命令會列出所有包含"python"字串的程式,並顯示其程式ID和其他詳細資訊。

使用killall命令終止多個程式

如果您需要終止多個相同的程式,可以使用killall命令。請注意,這個命令會終止所有匹配的程式,因此請謹慎使用。

$ sudo killall python

解壓縮檔案

如果您下載了一個壓縮檔案,需要解壓縮它,可以使用targunzip命令,取決於檔案的型別。

$ gunzip myfile.gz

或者,如果檔案是tarball,可以使用tar命令來解壓縮。

$ tar -xvf myfile.tar

使用 Linux 命令列工具進行檔案管理和裝置偵測

在 Linux 系統中,檔案管理和裝置偵測是兩個非常重要的任務。這篇文章將介紹如何使用 Linux 命令列工具進行檔案管理和裝置偵測。

解壓縮檔案

當您下載了一個壓縮檔案,例如 myfile.tar.gz,您可以使用 tar 命令解壓縮它。以下是解壓縮檔案的命令:

$ tar -xzf myfile.tar.gz

這個命令會解壓縮 myfile.tar.gz 檔案,並將其內容解壓縮到目前的目錄中。

列出連線的 USB 裝置

如果您想要檢視連線到您的 Linux 系統的 USB 裝置,您可以使用 lsusb 命令。以下是列出連線的 USB 訊息的命令:

$ lsusb

這個命令會列出所有連線到您的 Linux 系統的 USB 裝置,包括其 ID、製造商和產品名稱。

導向輸出到檔案

如果您想要將命令列的輸出導向到一個檔案中,您可以使用 > 符號。例如,以下是將目錄列表導向到一個檔案中的命令:

$ ls > directory_listing.txt

這個命令會將目錄列表導向到 directory_listing.txt 檔案中。

內容解密:
  • tar 命令用於解壓縮檔案,其選項 -xzf 分別代表「解壓縮」、「檔案」和「gzip 壓縮」。
  • lsusb 命令用於列出連線的 USB 裝置,其輸出包括裝置的 ID、製造商和產品名稱。
  • > 符號用於導向輸出到檔案中,其左邊是命令,右邊是檔案名稱。

圖表翻譯:

  graph LR
    A[壓縮檔案] -->|解壓縮|> B[目錄]
    B -->|列出裝置|> C[USB 裝置列表]
    C -->|導向輸出|> D[檔案]

這個圖表展示了壓縮檔案、列出連線的 USB 裝置和導向輸出的過程。

使用重導命令和管道進行輸出重導和命令組合

問題描述

在 Linux 中,我們常常需要將一個命令的輸出作為另一個命令的輸入,或者將多個命令的輸出合併成一個檔案。這些操作可以透過重導命令和管道來實作。

解決方案

重導命令

Linux 提供了 >< 兩個重導命令,分別用於重導輸出和輸入。例如,要將目錄列表複製到一個名為 myfiles.txt 的檔案中,可以使用以下命令:

$ ls > myfiles.txt

然後,可以使用 more 命令檢視檔案內容:

$ more myfiles.txt

管道

管道(pipe)是一種將一個命令的輸出作為另一個命令的輸入的方法。可以使用 | 符號來建立管道。例如,要將 ls 命令的輸出作為 grep 命令的輸入,可以使用以下命令:

$ ls | grep keyword

合併檔案

如果需要合併多個檔案成一個大檔案,可以使用 cat 命令。例如,要將 file1.txtfile2.txtfile3.txt 合併成一個名為 full_file.txt 的檔案,可以使用以下命令:

$ cat file1.txt file2.txt file3.txt > full_file.txt

討論

重導命令和管道是 Linux 中非常重要的工具,能夠幫助使用者簡化命令操作和資料處理。透過這些工具,可以實作多種複雜的操作,例如資料過濾、排序和合併等。

相關內容

  • Recipe 3.8:使用 cat 命令顯示檔案內容
  • Recipe 3.32:使用 cat 命令合併檔案

Mermaid 圖表

  graph LR
    A[ls] -->|輸出|> B[myfiles.txt]
    B -->|內容|> C[more]
    C -->|顯示|> D[Terminal]
    E[cat] -->|合併|> F[full_file.txt]
    F -->|內容|> G[Terminal]

圖表翻譯

此圖表展示瞭如何使用重導命令和 cat 命令進行輸出重導和檔案合併。左側的 ls 命令將其輸出重導到 myfiles.txt 檔案中,然後使用 more 命令檢視檔案內容。右側的 cat 命令合併多個檔案成一個大檔案 full_file.txt,然後將其內容顯示在 Terminal 中。

程式碼解密

# 將 ls 命令的輸出重導到 myfiles.txt 檔案中
ls > myfiles.txt

# 使用 more 命令檢視 myfiles.txt 檔案內容
more myfiles.txt

# 合併多個檔案成一個大檔案 full_file.txt
cat file1.txt file2.txt file3.txt > full_file.txt

內容解密

這些程式碼展示瞭如何使用重導命令和 cat 命令進行輸出重導和檔案合併。第一行程式碼將 ls 命令的輸出重導到 myfiles.txt 檔案中。第二行程式碼使用 more 命令檢視 myfiles.txt 檔案內容。第三行程式碼合併多個檔案成一個大檔案 full_file.txt

如何使用管道命令和重定向輸出

在 Linux 系統中,管道命令(pipe)和輸出重定向是兩個非常重要的概念。管道命令可以將一個命令的輸出作為另一個命令的輸入,而輸出重定向可以將命令的輸出導向到檔案或其他裝置。

使用管道命令

管道命令使用 | 符號來實作。例如,假設我們想要找出所有具有 .py 副檔名的檔案,並且這些檔案的最後修改時間是在六月份。可以使用以下命令:

ls -l *.py | grep Jun

這個命令會先列出所有具有 .py 副檔名的檔案的詳細資訊,然後使用 grep 命令過濾出包含 “Jun” 的行。

輸出重定向

輸出重定向使用 > 符號來實作。例如,假設我們想要將 ls 命令的輸出導向到 /dev/null 裡面,可以使用以下命令:

ls > /dev/null

這個命令會將 ls 命令的輸出導向到 /dev/null 裡面,從而不會在終端機上顯示任何輸出。

隱藏輸出

有時候,我們可能想要隱藏某些命令的輸出。可以使用 > /dev/null 來實作。例如,假設我們想要執行 find 命令來尋找某個檔案,但是不想看到所有的輸出,可以使用以下命令:

find / -name gemgem.py 2>/dev/null

這個命令會將 find 命令的標準錯誤輸出導向到 /dev/null 裡面,從而不會在終端機上顯示任何錯誤訊息。

執行程式在背景

有時候,我們可能想要在背景執行某些程式。可以使用 & 符號來實作。例如,假設我們想要執行某個程式,但是不想等待它完成,可以使用以下命令:

command &

這個命令會將程式執行在背景,從而不會佔用終端機的資源。

背景執行程式

當您想要在背景執行程式時,可以使用 & 符號來達成。例如,執行 Python 指令碼 speed.py 時,可以在命令結尾加上 &

$ python speed.py &

這樣,程式就會在背景執行,您可以繼續在終端機中執行其他命令。

背景執行程式的管理

如果您想要終止背景執行的程式,可以使用 kill 命令,後面接上程式的程式 ID。例如:

$ kill 2528

如果您想要將背景執行的程式帶回前景,可以使用 fg 命令:

$ fg
python speed.py

這樣,程式就會從背景帶回前景,您可以繼續觀察其輸出。

建立命令別名

如果您想要建立命令別名,可以編輯 ~/.bashrc 檔案,然後在檔案結尾新增別名設定。例如:

alias L='ls -a'

這樣,當您輸入 L 時,就會被解釋為 ls -a 命令。

更新終端機設定

更新 ~/.bashrc 檔案後,需要重新載入設定才能生效,可以使用以下命令:

$ source.bashrc

這樣,新的別名設定就會被載入,您可以開始使用了。

內容解密:

以上介紹瞭如何在背景執行程式、管理背景執行程式,以及建立命令別名。背景執行程式可以讓您同時執行多個任務,而不需要等待前一個任務完成。建立命令別名可以幫助您快速地執行常用的命令,提高工作效率。

圖表翻譯:

  flowchart TD
    A[開始] --> B[背景執行程式]
    B --> C[管理背景執行程式]
    C --> D[建立命令別名]
    D --> E[更新終端機設定]

此圖表展示了背景執行程式、管理背景執行程式、建立命令別名以及更新終端機設定之間的流程關係。

設定日期和時間

當您的樹莓派(Raspberry Pi)沒有網際網路連線時,您可能需要手動設定日期和時間。這可以使用 Linux 的 date 命令來完成。

解決方案

使用 date 命令設定日期和時間。日期和時間的格式為 MMDDhhmmYYYY,其中 MM 是月份,DD 是月份中的日期,hhmm 分別是小時和分鐘,YYYY 是年份。例如:

sudo date 010203042019

這將設定日期和時間為 2019 年 1 月 2 日 03:04。

討論

如果您的樹莓派連線到網際網路,它會在啟動時自動使用網際網路時間伺服器設定自己的時間。您也可以使用 date 命令顯示協調世界時(UTC)時間:

date

這將顯示目前的日期和時間。

相關資訊

如果您想要您的樹莓派即使在沒有網路連線的情況下也能維持正確的時間,您可以使用實時時鐘(RTC)模組(請參考配方 12.13)。

內容解密:

  • date 命令用於設定和顯示日期和時間。
  • sudo 用於以超級使用者的身份執行命令。
  • 日期和時間的格式為 MMDDhhmmYYYY
  • 可以使用 date 命令顯示 UTC 時間。

圖表翻譯:

  flowchart TD
    A[設定日期和時間] --> B[使用 date 命令]
    B --> C[設定日期和時間格式]
    C --> D[顯示目前日期和時間]
    D --> E[使用 RTC 模組維持正確時間]

圖表翻譯:

此圖表顯示了設定日期和時間的流程。首先,使用 date 命令設定日期和時間。然後,設定日期和時間的格式為 MMDDhhmmYYYY。接下來,顯示目前的日期和時間。最後,使用 RTC 模組維持正確的時間,即使在沒有網路連線的情況下。

從使用者經驗和實務落地的角度來看,熟練掌握 Linux 命令列工具對於提升工作效率至關重要。本文深入探討了命令列歷史操作、程式管理、檔案操作、輸出重導和背景程式執行等核心技巧,並以圖表和程式碼解密的方式強化理解。雖然圖表翻譯略顯冗餘,但整體而言,這些方法有效降低了學習曲線,尤其對於初學者而言更具實用價值。然而,文章並未充分分析命令列工具的安全性風險,例如誤用 killkillall 命令可能導致系統不穩定。展望未來,隨著 Linux 系統的持續發展,掌握更進階的命令列技巧,例如 shell script 撰寫和自動化任務管理,將成為提升效率的關鍵。因此,建議讀者在熟練掌握本文所述基本技巧後,進一步探索更深入的命令列世界,以充分釋放 Linux 系統的強大潛力。