Linux

Basic Command

作業系統

作業系統(Operating System, OS):

管理電腦硬體與軟體資源的核心軟體

提供介面,使軟體(應用程式)能和硬體溝通

負責管理電腦的硬體資源(如CPU、記憶體、儲存裝置等)

常見的作業系統包括 Linux , macOS Windows

Windows

  • 開發公司:微軟(Microsoft)。

  • 類型:封閉源代碼的專有作業系統。

  • 歷史背景:Windows 是微軟公司於1985年發佈的作業系統,至今已經成為全球使用最廣泛的桌面操作系統之一。Windows 提供圖形使用者介面(GUI)並且主要面向一般家庭、辦公室和娛樂用途。

Linux

  • 開發者:Linus Torvalds 和全球開源社群。
  • 類型:開放源代碼作業系統。

  • 歷史背景:Linux 由 Linus Torvalds 在1991年開發,起初是作為一個個人計畫,但隨著時間的推移,成為了廣泛使用的開放源代碼作業系統。Linux 通常被用於伺服器、嵌入式系統、雲計算以及開發環境中。

GUI V.S. CLI

  • 圖形化界面(Graphical User Interface, GUI):
    • 圖形用戶界面,適合一般用戶操作。幾乎所有的操作都可以通過點擊圖標和選單來完成
  • 命令行界面(Command Line Interface, CLI):
    • 是一種通過文字命令與計算機系統交互的方式,CLI 提供了一種更高效且靈活的方式來執行操作,特別適用於高級用戶、系統管理員和開發者。

Why Linux ?

  • 免費且開放源代碼:Linux 是開放源代碼的作業系統,這意味著任何人都可以自由地使用、修改和分發它。這不僅減少了授權費用,還允許用戶根據需求自訂操作系統
  • 命令行操作強大:Linux 提供了一個功能強大的命令行介面(CLI),使得高級用戶和開發者能夠以更精確、高效的方式控制系統。CLI 支援強大的腳本編程能力,並且許多任務可以自動化,提升了操作效率。

WSL

Windows的CLI有:Command Prompt, CMD

WSL(Windows Subsystem for Linux):

允許 Windows 用戶在其作業系統上原生運行 Linux 發行版

Shell

Shell是一個程式:

可以從鍵盤接收指令,然後交給系統去執行該指令

不同作業系統使用不同shell

在linux通常使用bash,macOS則是用zsh

CLI of Linux

Shell

為什麼要使用shell ?

  • 看起來比較牛逼
  • 資源需求低、效率高
  • 操作快速
  • 能直接跟系統核心或工具對話
  • 可以寫 Shell script,把一連串命令自動化。
  • 還能跨越數十年的電腦世代持續使用

File(檔案)

定義:檔案是電腦裡存放資料的單位,可以是文字、圖片、程式、影片、配置設定等。

  • 每個檔案都有 檔名(例如 report.txt)。

  • 檔名通常有「副檔名」來表示類型(例如 .txt, .jpg, .sh)。

  • 在 Unix/Linux 裡,一切皆檔案:不只文件,裝置、網路連線、甚至硬體也被抽象成檔案來操作。

Directory(目錄,資料夾)

  • 定義:目錄就是用來存放檔案和其他目錄的「容器」。在 Windows 習慣叫「資料夾」,在 Unix/Linux/ macOS 則稱作「directory」。

  • 特點

    • 可以包含「檔案」或「子目錄」。

    • 目錄本身也是一種檔案(只是內容是「檔案清單」)。

Directory Structure

/(root 根目錄):最頂層的目錄

/home → 存放使用者的目錄,又可以寫成 ~

Basic command

  • pwd
  • ls
  • cd
  • mkdir
  • nano
Syntax: command [options] [arguments]
  • rm
  • cp
  • mv
  • echo
  • touch
options: 用來調整指令的行為 通常以-開頭
arguments: 指令要處理的對象(例如檔案或目錄名稱)

pwd 

pwd 代表 Print Working Directory

功能:顯示你目前所在的「工作目錄」

 

操作檔案時,會依照「目前所在的目錄」來決定路徑

ls

ls = list

功能:列出目錄 (directory) 中的檔案與子目錄

$ ls

$ ls \

$ ls -l

絕對路徑

在 Unix/Linux/macOS 中,檔案和目錄是 樹狀結構

各層目錄之間用 / 分隔 

/home/alice/Documents/report.txt

上面是一個完整的路徑

從根目錄 / 開始描述的位置稱為絕對路徑

絕對路徑不會改變

相對路徑

  • 從「目前所在目錄 (working directory)」開始描述

特殊符號:

. = 當前目錄

.. = 上一層目錄

~ = 使用者的家目錄

../bob 代表上一層目錄底下的bob

./代表當前目錄底下的bob

cd

cd = change directory

功能:切換工作目錄

cd /

cd ..

..代表上一個目錄

../../ 呢 ?

mkdir

mkdir = make directory

功能:建立新目錄 (資料夾)

$ mkdir projects

$ mkdir ~/projects2

touch

功能:建立空檔案

$ touch notes.txt

nano

nano = 簡單的終端文字編輯器

功能:適合快速編輯檔案

$ nano

$ nano f302.cpp

Ctrl+O = 存檔

Ctrl+X = 離開

cat

cat = concatenate(連接)

功能:在終端機上 讀取檔案並輸出內容,或把多個檔案串接起來顯示 / 建立新檔

$ cat filename

cp

cp = copy

功能:複製檔案或目錄

$ cp [選項] 來源檔案 目的地

$ cp file1.txt file2.txt

$ cp notes.txt ~/projects

複製目錄(要加 -r

$ cp -r project/ project_backup/

mv

mv = move

功能:

  1. 移動檔案或目錄 到新的位置
  2. 重新命名檔案或目錄

$ mv oldname.txt newname.txt

oldname.txt 改名成 newname.txt

$ mv notes.txt /home/projects

rm

rm = remove

功能:刪除檔案或目錄

⚠️刪除的檔案無法還原

$ rm file1.txt file2.txt

刪除目錄(必須加 -r 遞迴刪除)

$ rm [選項] 檔案或目錄

$ rm -r old_folder

強制刪除(不詢問)

$ rm -f file.txt

  • ⚠️ 超危險rm -rf / 幾乎會清空整個系統

echo

echo = 「回音」(重複輸出一次)

功能:在 終端機 (Terminal) 輸出文字或變數內容

$ echo "hello world"

$ echo -e "第一行\n第二行\t(縮排)"

$ echo [選項] 文字

C++ 編譯

$ g++ hello2.cpp -o hello2

$ g++ [選項] 原始碼檔案... -o 輸出檔案

原始程式碼檔案(hello2.cpp)

編譯成可執行的檔案(hello2)

-o(output 的縮寫)

$ ./hello2 可以執行

exit

離開

Linux

By ernestii26