返回文章列表

Linux 命令列操作與技巧

本文整理了 Linux 命令列操作的技巧與,涵蓋命令列編輯快捷鍵、命令自動補全、外部命令的幫助檔案、命令管道與輸出重定向、以及 Vim 編輯器的基本操作。藉由這些技巧,使用者可以更有效率地操作 Linux 系統,提升工作效率。

系統管理 開發工具

在 Linux 環境下,熟練掌握命令列操作技巧能大幅提升工作效率。本文彙整了常用的快捷鍵、自動補全功能、以及如何有效運用管道和重定向等技巧,讓使用者能更快速地完成檔案管理、系統監控、文字編輯等任務。此外,也介紹了 Vim 編輯器的基本操作,包含模式切換、遊標移動、文字編輯、搜尋與取代等功能,幫助使用者入門這款強大的編輯器。

Linux 命令列操作與技巧

Linux 命令列提供了豐富的操作技巧和快捷鍵,能夠大幅提升工作效率。瞭解這些實用功能有助於使用者更靈活地使用命令列介面。

命令列編輯快捷鍵

在命令列中,可以使用多種快捷鍵來提高編輯效率。以下是一些常用的快捷鍵:

  • 刪除操作

    • Ctrl+K:刪除遊標後的所有內容直到行尾。
    • Ctrl+U:刪除遊標前的所有內容直到行首。
    • Ctrl+W:向後刪除一個單字。
    • Alt+Backspace:刪除前一個單字。
  • 遊標移動

    • Alt+F:向前移動一個單字。
    • Alt+B:向後移動一個單字。
    • Ctrl+](字元):快速跳轉到輸入的字元。
  • 編輯與貼上

    • Ctrl+Y:貼上之前剪下的文字。
    • Ctrl+T:交換遊標前的兩個字元。
    • ESC+T:交換遊標前的兩個單字。
    • Ctrl+_:復原上一次的修改。

命令自動補全功能

命令列提供了強大的自動補全功能,能夠減少輸入錯誤並提高效率。以下是一些自動補全的快捷鍵:

  • TAB 鍵:用於自動補全檔案或目錄名稱。連續按兩次 TAB 可以顯示所有可能的選項。
  • Ctrl+X, ~(波浪符號):自動補全使用者名稱。
  • Ctrl+X, @(at 符號):自動補全主機名稱。
  • Ctrl+X, $(美元符號):自動補全環境變數名稱。
  • Ctrl+X, !(驚嘆號):自動補全命令或檔案名稱,與 TAB 鍵功能相同。

自動補全範例

# 按下 TAB 鍵自動補全目錄或檔案名稱
mkdir /path/to/dir[TAB]

外部命令與幫助檔案

大多數外部命令需要透過套件管理器安裝,如 apt-getyum。要取得外部命令的幫助,可以使用以下方法:

  • 使用 --help 引數,例如:mkdir --help
  • 使用 man 命令,例如:man mkdir

man 命令的使用

# 取得 mkdir 命令的幫助檔案
man mkdir

# 搜尋包含特定字串的手冊頁面
man -k runlevel

# 顯示所有與特定主題相關的手冊頁面
man -a runlevel

資訊頁面與導航

除了 man 命令外,GNU 工具還提供了 info 命令來取得更詳細的資訊。導航鍵包括:

  • n:下一節
  • p:上一節
  • u:傳回上一層索引

命令結構與引數

大多數命令由命令名稱、選項和引陣列成。例如:

kill -p 2300

其中,kill 是命令名稱,-p 是選項,2300 是引數。

內建命令與外部命令的區別

BASH 提供了多個內建命令,這些命令無需安裝且無法解除安裝。內建命令的幫助檔案可以透過 help 命令檢視,例如:

help alias

常見內建命令

  • alias:定義新的別名或顯示現有別名。
  • bind:顯示或設定目前的 Readline 鍵繫結或函式繫結。
  • echo:輸出引數,以空格分隔,並以換行符結尾。

圖形化幫助系統

根據使用的 X-Windows 桌面環境(GNOME 或 KDE),可以使用不同的幫助系統:

  • GNOME:gnome-help
  • KDE:khelpcenter

命令管道與輸出重定向

大多數命令和指令碼接受標準輸入(STDIN)並輸出到標準輸出(STDOUT)。可以使用管道和重定向符號將輸出傳遞給其他命令或儲存到檔案中。

輸出重定向範例

# 將 echo 命令的輸出重定向到檔案
echo HelloWorld > output_file.txt

命令管線與輸出重新導向

在 Linux 系統中,命令管線(Piping)和輸出重新導向(Output Redirection)是兩個非常強大的工具,能夠幫助使用者更有效地處理命令輸出和輸入。

命令管線(Piping)

命令管線允許將一個命令的輸出直接作為另一個命令的輸入。這個過程透過 | 符號實作。例如:

ls -al | less

在這個例子中,ls -al 的輸出被傳送到 less 命令,使得使用者可以分頁檢視檔案列表。按下 Q 鍵離開,或使用方向鍵進行上下滾動。

內容解密:

  1. ls -al:列出當前目錄下的所有檔案和子目錄的詳細資訊。
  2. |:將左邊命令的輸出作為右邊命令的輸入。
  3. less:分頁顯示輸入內容,方便使用者瀏覽。

輸出重新導向(Output Redirection)

預設情況下,每個命令都會從標準輸入(STDIN)讀取,並將結果輸出到標準輸出(STDOUT)。然而,使用者可以透過重新導向運算元改變輸出的去向。

1. 將 STDOUT 導向檔案

使用 > 將命令的輸出儲存到檔案中。例如:

ls -l / > ~/output_file.txt
cat ~/output_file.txt

這會將根目錄 / 的詳細列表儲存到 ~/output_file.txt 檔案中。如果檔案已存在,其內容將被覆寫。

內容解密:

  1. ls -l /:列出根目錄下的檔案和子目錄的詳細資訊。
  2. >:將輸出重新導向到指設定檔案。
  3. ~/output_file.txt:輸出的目標檔案路徑。

2. 追加內容到檔案

使用 >> 將命令的輸出追加到現有檔案的末尾。例如:

ls -l / >> ~/output_file.txt
cat ~/output_file.txt

這會將新的列表追加到 ~/output_file.txt 檔案中,而不是覆寫原有內容。

內容解密:

  1. ls -l /:同上。
  2. >>:將輸出追加到指設定檔案的末尾。
  3. ~/output_file.txt:目標檔案路徑。

3. 導向 STDERR

使用 2> 將錯誤輸出(STDERR)導向到檔案或 /dev/null 以丟棄錯誤訊息。例如:

ls -l / 2> /dev/null

這會執行 ls -l / 命令,但丟棄任何錯誤訊息。

內容解密:

  1. ls -l /:同上。
  2. 2>:將 STDERR 重新導向。
  3. /dev/null:一個特殊的裝置檔案,丟棄所有寫入其中的資料。

4. 同時導向 STDOUT 和 STDERR

使用 &> 可以同時將標準輸出和錯誤輸出導向到同一個檔案或 /dev/null。例如:

ls -l / &> /dev/null

這會丟棄命令的所有輸出,包括正常輸出和錯誤訊息。

內容解密:

  1. ls -l /:同上。
  2. &>:同時將 STDOUT 和 STDERR 重新導向。
  3. /dev/null:丟棄所有輸出。

輸入重新導向

使用 < 可以將檔案內容作為命令的輸入。例如:

wc -l < input_file

這會計算 input_file 檔案的行數。

內容解密:

  1. wc -l:計算輸入的行數。
  2. <:將檔案內容作為輸入。
  3. input_file:輸入檔案的名稱。

命令替換(Command Substitution)

命令替換允許將一個命令的輸出作為另一個命令的引數或指定給變數。使用 $() 包圍命令即可實作。例如:

echo Today is $(date)

或者使用舊式的反引號 `

echo Today is `date`

這兩種方式都會輸出當前的日期。

內容解密:

  1. echo:輸出字串。
  2. $(date)`date`:執行 date 命令並將其輸出作為 echo 的引數。

變數擴充套件(Variable Expansion)

當命令執行時,變數名稱會被其值替換。例如:

echo $SHELL

可能會輸出 /bin/bash,顯示目前使用的 shell。

內容解密:

  1. echo:輸出變數的值。
  2. $SHELL:一個環境變數,表示目前使用的 shell 路徑。

Linux 基礎命令與實用技巧

Linux 系統提供了豐富的命令列工具,讓使用者能夠高效地管理系統、檔案和處理各種任務。以下是一些常用的 Linux 命令和技巧,幫助使用者更好地掌握系統操作。

命令歷史與重複執行

在 Linux 終端機中,可以使用特定的命令來重複執行之前的命令或對命令歷史進行操作。

  • 重複執行上一個命令的引數:!!
  • 重複上一個命令的選項:!$
    • 示例:列出目錄後切換到該目錄
      ls /bin
      cd !$
      
  • 插入上一個命令但不包含最後一個引數:!:-
  • 使用 Ctrl+R 進行反向搜尋命令歷史。

取得更多命令歷史資訊

可以透過設定 HISTTIMEFORMAT 來顯示命令歷史的日期和時間。

HISTTIMEFORMAT="%d/%m/%y %T " && history

將最後執行的命令儲存到指令碼檔案中:

echo "!!" > script_file.sh

自動補全與快速輸入

  • 按下 ESC 然後 *(星號或 TAB 鍵)可以插入自動補全的結果。
  • 按下 ESC 然後 .(句點)可以插入上一個命令的最後一個引數。

系統資訊與監控

  • 檢視記憶體使用情況(以 GB 為單位):free -g
  • 檢視所有執行中的行程:ps -Aps -aux | less
  • 搜尋特定的執行中行程:ps aux | grep search_query
  • 檢視目前日期和時間:date
  • 設定系統時間:sudo date --set="20:20:00"

使用者與多使用者管理

Linux 是一個多使用者系統,提供了多個命令來管理目前登入的使用者。

  • 顯示目前登入使用者的摘要資訊:whousers
  • 顯示使用者的最後登入時間:last user_name
  • 顯示系統上已知使用者的資訊:lslogins -u
  • 顯示目前系統活動和登入使用者的摘要資訊:w
  • 顯示所有使用者最近的登入資訊:lastlog

檔案系統管理

檔案系統命令用於管理檔案和儲存裝置。

  • 以人類可讀的格式顯示磁碟使用情況:df -h
  • 列出目錄中的檔案:lsls -l
  • 列出包括隱藏檔案在內的所有檔案:ls -al
  • 按大小排序列出檔案(人類可讀格式):ls -lSrh
  • 切換到家目錄:cd ~cd
  • 傳回上一個目錄:cd -
  • 建立新目錄:mkdir folder_name
  • 複製檔案:cp input_file output_file
  • 遞迴複製目錄:cp -r dir1 dir2
  • 刪除檔案:rm file_name.ext
  • 刪除目錄:rmdir folder_namerm -r folder_name

實用技巧

程式碼範例1:遞迴刪除目錄

rm -rf folder_name

內容解密:

  1. rm 是用於刪除檔案或目錄的命令。
  2. -r 選項表示遞迴刪除,用於刪除目錄及其內的所有子目錄和檔案。
  3. -f 選項表示強制刪除,不會提示確認訊息。

程式碼範例2:搜尋特定行程

ps aux | grep search_query

內容解密:

  1. ps aux 用於列出所有執行中的行程。
    • a 表示顯示所有使用者的行程。
    • u 表示以使用者為導向的格式顯示詳細資訊。
    • x 表示顯示沒有控制終端的行程。
  2. | 是管道符號,用於將前一個命令的輸出作為下一個命令的輸入。
  3. grep search_query 用於在前一個命令的輸出中搜尋包含 search_query 的行程。

Linux 基本指令與應用

Linux 提供了豐富的指令與工具來進行檔案管理、網路操作及文字編輯等任務。以下將介紹一些常用的 Linux 指令及其應用方法。

檔案管理指令

檔案管理是 Linux 操作中的重要部分。以下是一些基本且常用的檔案管理指令。

檢視檔案內容

要檢視檔案的內容,可以使用 cat 指令:

cat file_name.txt

這個指令會將檔案的內容輸出到終端上。

#### 內容解密:

  • cat 指令用於連線檔案並列印到標準輸出裝置上。
  • file_name.txt 是要檢視的檔案名稱。

如果檔案內容較多,可以使用 moreless 指令分頁檢視:

more file_name.txt
less file_name.txt

#### 內容解密:

  • more 指令用於分頁顯示檔案內容,按下空格鍵可檢視下一頁。
  • less 指令是 more 的進階版本,允許向前和向後瀏覽檔案內容。

建立多個空檔案

可以使用 touch 指令建立多個具有連續名稱的空檔案:

touch file_name{1..100}

#### 內容解密:

  • touch 指令用於建立空檔案或更新現有檔案的時間戳記。
  • {1..100} 是大括號擴充套件,用於生成從 1 到 100 的連續數字。

重新格式化長檔案

可以使用 fmt 指令重新格式化長檔案(如段落)成較短的行:

fmt file_name.txt

#### 內容解密:

  • fmt 指令用於重新格式化文字,使其更易閱讀。

檢視檔案詳細資訊

可以使用 stat 指令檢視檔案的詳細統計資訊和屬性:

stat file_name.txt

#### 內容解密:

  • stat 指令用於顯示檔案或檔案系統的狀態資訊。

網路操作指令

Linux 提供了一系列強大的網路操作指令,用於管理和檢視網路組態和狀態。

檢視網路組態

要檢視系統的基本網路組態(如 IP 位址、網路遮罩、MAC 位址等),可以使用:

ifconfig

#### 內容解密:

  • ifconfig 指令用於組態和顯示網路介面引數,但該指令在某些新版 Linux 發行版中已被棄用,建議使用 ip 指令代替。

測試遠端主機連通性

可以使用 ping 指令測試遠端主機是否可達:

ping example.com

#### 內容解密:

  • ping 指令用於測試與遠端主機之間的連通性,透過傳送 ICMP ECHO_REQUEST 包並等待回應。

文字編輯器

Linux 下有多種文字編輯器可供選擇,包括 viemacsnano 等。

vi 編輯器

vi 是 Linux 下一個功能強大但學習曲線較陡的文字編輯器。

#### 內容解密:

  • vi 編輯器具有多種模式,包括命令模式和插入模式,用於編輯文字檔案。

除了 vi,還有其他文字編輯器如 emacsnano 可供選擇,分別具有不同的特點和適用場景。

其他實用工具

Linux 下還有許多其他實用工具,如用於建立文字橫幅的 figlettoilet,以及用於重複輸出的 yes 指令等。

建立文字橫幅

可以使用 figlettoilet 建立文字橫幅:

figlet HelloWorld
toilet HelloWorld

#### 內容解密:

  • figlettoilet 是用於建立文字橫幅的工具,可以使用不同的字型和樣式。

這些工具和指令構成了 Linux 操作的重要組成部分,為使用者提供了豐富的功能和靈活性。透過掌握這些基本指令和工具,可以更有效地使用和管理 Linux 系統。

Vim 編輯器入門

Vim(Vi Improved)是一款功能強大的文字編輯器,源自於最初的 Vi 編輯器。它在程式設計師和系統管理員中廣泛使用,因為它提供了豐富的功能和高效的操作方式。瞭解 Vim 的基本概念和操作對於有效地使用它至關重要。

Vim 的歷史與發展

Vim 的前身是 Vi 編輯器,它首次出現在 1979 年。Vi 是根據 ex 編輯器開發的,其名稱源自 ex 命令 “visual”,該命令用於切換到視覺模式。Vim 是 “Vi Improved” 的縮寫,於 1991 年首次公開發布,提供了許多增強功能,並且與 Vi 向後相容。

啟動 Vim

以下是啟動 Vim 的基本命令:

  • vi file:編輯或建立檔案(如果指定的檔案不存在,則建立新檔案)。
  • vi -r:顯示被救援的檔案。
  • vi -r file:還原被救援的檔案。
  • vi +n file:編輯檔案並將遊標定位到第 n 行。

內容解密:

這些命令用於啟動 Vim 並開啟或建立檔案。其中,-r 選項用於顯示或還原因某些原因(如系統當機)而被救援的檔案,而 +n 選項則允許使用者直接跳轉到檔案的特定行。

插入模式與命令模式

Vim 有兩種主要模式:插入模式和命令模式。瞭解這兩種模式之間的區別對於有效地使用 Vim 至關重要。

  • 命令模式:啟動 Vim 後預設進入命令模式。在此模式下,可以進行遊標移動、文字貼上和刪除等操作。
  • 插入模式:在命令模式下按下 “i” 或 “I” 鍵可以進入插入模式,此時可以輸入和修改文字。按下 ESC 鍵可以傳回命令模式。

內容解密:

在命令模式下,大多數命令會立即執行,除了以冒號(:)開頭的命令,它們需要在按下 Enter 鍵後才會執行。瞭解這兩種模式的切換方式對於高效使用 Vim 非常重要。

離開 Vim

以下是離開 Vim 的常用命令:

  • :x:儲存變更並離開。
  • :wq file:儲存變更並離開(可以指定新檔案名稱)。
  • :q!:強制離開,不儲存變更。
  • :qa!:強制離開所有開啟的檔案,不儲存變更。

內容解密:

這些命令用於離開 Vim 並決定是否儲存變更。其中,:x:wq 用於儲存變更,而 :q!:qa! 則用於強制離開而不儲存變更。

插入文字

以下是用於插入文字的命令:

i   在遊標前插入
I   在行首插入
a   在遊標後插入
A   在行尾插入
o   在當前行下方開啟新行
O   在當前行上方開啟新行
r   取代單一字元
R   取代多個字元

內容解密:

這些命令讓使用者能夠在不同位置插入或取代文字。其中,“i” 和 “a” 命令分別用於在遊標前後插入文字,而 “o” 和 “O” 命令則用於在當前行的上下方開啟新行。

遊標移動

以下是用於移動遊標的命令:

h   向左移動
j   向下移動
k   向上移動
l   向右移動
w   移至下一個單詞
W   移至下一個以空白分隔的單詞
b   移至單詞開頭
B   移至以空白分隔的單詞開頭
e   移至單詞結尾
E   移至以空白分隔的單詞結尾
(   向後移動一個句子
)   向前移動一個句子
{   向後移動一個段落
}   向前移動一個段落
0   移至行首
$   移至行尾
1G  移至檔案開頭
G   移至檔案結尾
nG  移至第 n 行
:n  移至第 n 行

內容解密:

這些命令提供了豐富的遊標移動方式,使用者可以根據需要選擇適合的命令來移動遊標。其中,“h”, “j”, “k”, “l” 鍵提供了基本的方向控制,而其他命令則提供了更豐富的導航功能。

刪除文字

以下是用於刪除文字的命令:

x   刪除遊標右側字元
X   刪除遊標左側字元
D   刪除至行尾
dd  刪除當前行
:d  刪除當前行

內容解密:

這些命令讓使用者能夠刪除文字。其中,“x” 和 “X” 命令分別用於刪除遊標右側和左側的字元,而 “D” 和 “dd” 命令則用於刪除從遊標位置到行尾的文字或整行文字。

複製與貼上文字(Yanking 與 Putting)

Vim 使用 “yank” 和 “put” 命令來實作複製和貼上功能。

  • yy:y:複製當前行。
  • y$:複製從遊標位置到行尾的文字。
  • p:在遊標後貼上文字。
  • P:在遊標前貼上文字。

內容解密:

這些命令讓使用者能夠複製和貼上文字。其中,“yy” 和 “:y” 命令用於複製當前行,而 “p” 和 “P” 命令則用於在遊標前後貼上文字。

搜尋與取代文字

以下是用於搜尋和取代文字的基本命令:

  • /str:向前搜尋字串 “str”。
  • ?str:向後搜尋字串 “str”。
  • n:重複上一次搜尋(向前)。
  • N:反向重複上一次搜尋。
  • :s/pattern/string/flags:取代文字。其中,“c” 旗標用於確認取代,而 “g” 旗標用於全域取代。

內容解密:

這些命令讓使用者能夠在檔案中搜尋特定的字串或模式,並進行取代。其中,:s 命令提供了強大的取代功能,使用者可以根據需要選擇不同的旗標來控制取代行為。