antony@notes:~/misc$ cat "Linux.md"
Linux
Linux
Linux 電腦基礎

Application會透過Operating system(OS)使用cpu、memory、Hard Disk和Network。
Operating system分為windows及Linux,可以透過"dxdiag"這個命令,在windows的系統下,看到硬體規格和系統資訊。
如何確認內網有沒有通?
ping 120.96.143.150(教室內的其他台主機)如何確認外網有沒有通?
ping 8.8.8.8(google在美國的電腦)

以前的Alpine Linux 可以連接很多台Terminal(終端機),每一個Terminal對應一個使用者,Termianl上面會跑shell程式
Terminal只有螢幕和鍵盤
使用者在Terminal的鍵盤下指令後,會由shell程式接收,透過RS-232傳到Linux computer,而linux computer會把執行完的命令結果,再透過RS-232傳回Terminal,這時候shell會負責把執行結果顯示在終端機的螢幕上。
在終端機上要能夠使用(讓你用鍵盤打字,而且能夠接受資料)有一個條件,就是shell(貝殼)程式,它會一直在終端機上面跑。
當使用者在第一次操作的時候,必須要打User name和password,輸入完後,會藉由Terminal的shell接收,再透過RS-232傳給Linux電腦,傳到以後,Linux電腦就會去看有沒有打對,
現在在Linux電腦跟終端機虛擬化(硬體變軟體)後,terminal就是我們在windows用的CMD,RS-232變成ssh連進去
如果對就可以進去Linux電腦裡面,這時候就可以建目錄,
建目錄的命令:
mkdir,mk是make,後面的dir是directory
認識shell
所有的電腦都是由硬體和軟體構成的﹐而負責主要運算的部分就是所謂作業系統的核心(kernel)﹐kernel 必須能夠接受來自鍵盤的輸入﹐然後交由 CPU 進行處理﹐最後將執行結果輸出到螢幕上。
比方說﹐輸入 pwd 命令﹐我們知道這是 print working directory 的意思﹐但作為 kernel 來說﹐它並不知道 pwd 是什麼﹐這時候﹐shell 就會幫我們將 pwd 翻譯為 kernel 能理解的程式碼。所以﹐我們在使用電腦的時候﹐基本上就是和 shell 打交道﹐而不是直接和 kernel 溝通。
從字面來解析的話﹐shell 就是“殼”﹐kernel 就是“核”。shell 就是使用者和 kernel 之間的界面﹐將使用者下的命令翻譯給 kernel 處理﹐關係如下圖﹕

我們在 shell 輸入一個命令﹐shell 會嘗試搜索整個命令行﹐並對其中的一些特殊字符做出處理﹐如果遇到 CR 字符( Enter ) 的時候﹐就嘗試重組整行命令﹐並解釋給 kernel 執行。
以上資料參考自認識shell
在Alpine Linux建帳號: adduser
有一個使用者叫rbean,只要他透過網路進到linux電腦,他就一定會有一個家目錄
/home/rbean練習: 請建立 ybean 及 zbean 帳號, 並使用 ssh 登入
sudo adduser -s /bin/bash -h /home/ybean -D ybean建帳號的時候有兩件事,
- 因為要跟電腦做溝通,一定要透過終端機,所以我們指定貝殼程式(
-s /bin/bash), - 要先給她一個家目錄(
-h /home/帳號),如果沒給-h,系統也會幫你建,所以可以不用下-h。 -D的用意是在創帳號的時候先不用輸入密碼
- 因為要跟電腦做溝通,一定要透過終端機,所以我們指定貝殼程式(
刪除使用者的命令
sudo deluser --remove-home ybean–remove-home 是刪除使用者ybean的家目錄
更改使用者密碼
sudo passwd ybean
建立目錄:mkdir
使用 mkdir 指令,可以建立 Directory 參數所指定的一或多個目錄。
每一個新的目錄都會包含標準的項目點 (.) 及點點 (..)。可以用 -m 模式 旗標來指定新目錄的許可權。
當建立目錄時,會建立在現行或工作目錄中,除非將絕對路徑名稱指定成檔案系統中的其他位置。
- 若要在現行工作目錄下建立名為 Test 的新目錄,並使用預設許可權,請鍵入:
bigred@m1:~$ mkdir test
bigred@m1:~$ ls -al | grep tes
drwxr-sr-x 2 bigred bigred 4096 Feb 24 12:37 test- 要同時建立多個目錄,只要在指令後面逐一加上新目錄名稱:
bigred@m1:~$ mkdir dir1 dir2 dir3
bigred@m1:~$ ls -al | grep dir
drwxr-sr-x 2 bigred bigred 4096 Feb 24 12:39 dir1
drwxr-sr-x 2 bigred bigred 4096 Feb 24 12:39 dir2
drwxr-sr-x 2 bigred bigred 4096 Feb 24 12:39 dir3- 若要在先前建立的 /home/bigred/test 目錄下,建立名為 Test01 的目錄,並且許可權為
rwxr-xr-x,請鍵入:
bigred@m1:~$ mkdir -m 755 /home/bigred/test/test01
bigred@m1:~$ ls -al test
total 12
drwxr-sr-x 3 bigred bigred 4096 Feb 24 12:42 .
drwxr-sr-x 13 bigred bigred 4096 Feb 24 12:39 ..
drwxr-sr-x 2 bigred bigred 4096 Feb 24 12:42 test01- 若要在 /home/bigred/test02/test 目錄下建立名為 Test 的目錄,並使用預設許可權,請鍵入:
bigred@m1:~$ mkdir -p /home/bigred/test02/test
bigred@m1:~$ ls -al | grep test02
drwxr-sr-x 3 bigred bigred 4096 Feb 24 12:46 test02
bigred@m1:~$ ls -al test02
total 12
drwxr-sr-x 3 bigred bigred 4096 Feb 24 12:46 .
drwxr-sr-x 14 bigred bigred 4096 Feb 24 12:46 ..
drwxr-sr-x 2 bigred bigred 4096 Feb 24 12:46 test- 白話來說
-p可以一次建立多層目錄
刪除目錄或檔案 : rm
使用 rm 指令,可以自系統中移除由 Directory 參數所指定的目錄。
目錄必須空白(只能包含 . 及 ..)才能移除,而且必須對其母目錄具有寫入權。使用 ls -al Directory 指令,以檢查該目錄是否是空的。
以下是 rm 指令的用法範例:
- 刪除123這個檔案
bigred@m1:~$ ls -al | grep 123
-rw-r--r-- 1 bigred bigred 0 Feb 24 13:06 123
bigred@m1:~$ rm 123
bigred@m1:~$ ls -al | grep 123- 將/home/bigred/test目錄底下的test目錄與檔案刪除
bigred@m1:~$ rm -r /home/bigred/test
-r :r的全名是recursive,中文為遞迴的,由於在Linux裡面會有很多層目錄,當我們在
rm後面加上-r,這時候系統會跑到最底層的目錄去刪,一路刪到最上層,會把所有的目錄和檔案全部刪除