1.02 Linux 操作系統

什麼是Linux系統?

Linux 是一種開放原始碼作業系統,最初是 Linus Torvalds 出於自身愛好,於 1991 年利用 GNU 的 GCC、GNU Emacs 等工具,在他的 80386 電腦上,創作了一套類 UNIX (UNIX-like)系統的作業系統核心並且在 GPL下釋出,人稱 Linux(即 Linus’ Unix )。

隨著時代的演進, Linux 作業系統也在全球工程師的努力貢獻之下,也與時俱進,跟著電腦硬體的進步而進步,並且在資訊的領域內開枝展葉,在許多的領域中成為出色的作業系統,小至手機、嵌入式系統,大至研究等級的超級電腦,都有非常大量的佔有率。

由於它的原始碼是開放的,也就是說任何人都可以執行、研究、共享和修改它,並在遵循相同的授權條款下再度發行,甚至出售。

一些常用的Linux指令

文件 / 目錄管理
切換目錄 cd //接絕對路徑or相對路徑
查看目前所在文件位置pwd
若目錄不存在,直接新增mkdir -p 目錄
新增母/子目錄mkdir -p 母目錄/子目錄
刪除目錄(非空白)rm -r 目錄路徑
刪除目錄(空白)rmdir 目錄路徑
新增文件touch 文件名稱
刪除文件rm 文件名稱
顯示當前目錄包含的内容ls
顯示當前目錄包含的内容(含隱藏文件)ls -a
詳列當前目錄包含的内容ls -l //或直接打ll
更改文件權限chmod 777 文件名
更改文件擁有者chown UserName: FileName  
使用者 / 用戶組
查看目前使用者whoami
查看目前使用者(詳細資訊)id
查看所有使用者cat /etc/passwd
新增使用者useradd 使用者名稱
移除使用者userdel 使用者名稱
修改使用者名稱資訊usermod
設定密碼passwd 使用者名稱
切換使用者su - 使用者名稱(不加使用者名稱=root
以系统管理員身份執行指令sudo 具體指令
查看目前用戶組groups
查看所有用戶組cat /etc/group
新增用戶組groupadd
移除用戶組groupdel
修改用户組資訊groupmod
進程管理
顯示當前終端運行的進程ps
顯示所有使用者的所有進程(包括系统進程)ps -aux
終止指定PID進程kill PID
強制終止PID進程kill -9 PID
套件管理
顯示所有可更新的套件清單apt update
套件升級apt upgrade
安裝指定的套件apt install <package_name>
刪除指定的套件apt remove <package_name>
顯示所有已安裝的apt list --installed
顯示所有已安裝套件的版本資訊apt list --all-versions
要以root身份執行,不然會報錯

Shell Scripts

「Shell」是指能夠操作應用程式介面的程式,狹義的 Shell 指的是指令列方面的軟體,包括 bash 等,我們需要透過 Shell 將我們輸入的指令與 Kernel 溝通,好讓 Kernel 可以控制硬體來正確無誤的工作。 廣義的 Shell 則包括圖形介面的軟體,因為圖形介面也能夠操作各種應用程式來呼叫核心工作。

Linux 的 Shell 種類有很多,常見的有:

Bourne Shell(/usr/bin/sh或/bin/sh) — (已經被 /bin/bash 所取代)
Bourne Again Shell(/bin/bash) — (就是 Linux 預設的 shell)
C Shell(/bin/csh) — (已經被 /bin/tcsh 所取代)
Turbo C Shell(/bin/tcsh) — (整合 C Shell,提供更多的功能)
K Shell(/bin/ksh)
Shell for Root(/sbin/sh)

Shell Scripts 撰寫

[kami@kami ~]$ mkdir bin; cd bin
[kami@kami bin]$ vim hello.sh
#!/bin/bash
# Program:
# This program shows "Hello World!" in your screen.
# History:
# 2025/05/8 YOOAIO First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
echo -e "Hello World! \a \n"
exit 0

第一行 #!/bin/bash 在宣告這個 script 使用的 shell 名稱:
因為使用的是 bash ,所以要以『 #!/bin/bash 』來宣告這個檔案內的語法使用 bash 的語法。當這個程式被執行時,他就能夠載入 bash 的相關環境設定檔 (一般來說就是 non-login shell 的 ~/.bashrc), 並且執行 bash 來使我們底下的指令能夠執行。(在很多狀況中,如果沒有設定好這一行, 那麼該程式很可能會無法執行,因為系統可能無法判斷該程式需要使用什麼shell來執行)

程式內容的說明:
整個 script 當中,除了第一行的『 #! 』是用來宣告 shell 的之外,其他的 # 都是『註解』用途! 所以上面的程式當中,第二行以下就是用來說明整個程式的基本資料。
一般來說, 建議一定要養成說明該 script 的:1. 內容與功能; 2. 版本資訊; 3. 作者與聯絡方式; 4. 版權宣告方式;5. 歷史紀錄 等等。

此外,若 script 內有較特殊的指令,要使用『絕對路徑』的方式來下達,而在較為特殊的程式碼部分,要加上註解說明。

(撰寫 script 的工具最好使用 vim 而不是 vi ,因為 vim 會有額外的語法檢驗機制,能夠在第一階段撰寫時就發現語法方面的問題)
(程式碼的撰寫最好使用巢狀方式,在包覆的內部程式碼最好能以 [tab] 按鍵的空格向後推, 這樣你的程式碼會顯的非常的漂亮與有條理!在查閱與 debug 上會較為有效率)

主要環境變數的宣告:
建議務必要將一些重要的環境變數設定好, PATH 與 LANG (如果有使用到輸出相關的資訊時) 是當中最重要的,這樣當程式在進行時,可以直接下達一些外部指令,而不必寫絕對路徑。

主要程式部分
就將主要的程式寫好即可,在這個例子當中,就是 echo 那行。

執行成果告知 (定義回傳值)
這裡可以利用 exit 這個指令來讓程式中斷,並且回傳一個數值給系統。在這個例子中使用的是 exit 0 ,代表離開 script 並且回傳一個 0 給系統, 所以當執行完這個 script 後,若接著下達 echo $? 則可得到 0 的值。

You may also like...

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *