# 第一周:
## 安裝虛擬機:
### 到ftp.iij.ad.jp下載 CentOS-7-x86_64-LiveKDE-1810.iso。

## 下載好之後,到VirtualBox的網站下載最新版本的安裝包及擴展包,如果是Winodws就把該圖有打勾的2個部分都下載

### 安裝好之後,點到介面內的新增,並跟著圖標進行動作,持續點選Next

### 這邊的步驟為:
### extension pack (File->Tools->Extension Pack Manager)

### 後續啟動虛擬機,並點選 CentOS 桌面左下角的開始圖標(application),開始進行 Install。

### 在安裝過程中,管理員的密碼要設定成centos。
### 這邊的步驟為:
### 使用者的名稱、密碼要設定成 user

### 都安裝好後,再從 VirtualBox 裡面移除原本的光碟檔,再次重新登入,確認是否設定成功。
### windows: ipconfig linux:ifconfig,可以看到ip位址

### VMWARE和virtual box在NAT上會有所不同

### 課程其他資源:
https://www.bilibili.com/video/BV1U14y1G7UJ?p=1&vd_source=f74a220251f63c0d2381f8c51b2cbdee
https://www.bilibili.com/video/BV1Ug411k71N/?spm_id_from=333.999.0.0&vd_source=f74a220251f63c0d2381f8c51b2cbdee
https://hackmd.io/@jenny126/CentOS7/%2F2vZs_D8GRv29KdIQiiv95g
https://www.bilibili.com/video/BV1z54y1z7yN/?spm_id_from=333.337.search-card.all.click&vd_source=f74a220251f63c0d2381f8c51b2cbdee
# 第二周:
## VirtualBox中 Window是無法看到裡面的,會在VirtualBox中 Window多設定一張網路卡,設定host only模式,主要是為了在host下可以與VM進行通訊

## 設定NAT流程:
### 到CentOS 在 VirtualBox 下方的網路卡設定,在介面卡1設定``NAT網路卡``,而在介面卡2設定僅```限主機介面卡```,然後點選VirtualBox Host-Only Ethernet Adapter。如果找不到此介面卡,就要到檔案-->工具-->Network Manager自己去做增加等動作,新增時要勾選DHCP Server。
## 終端機指令:
### #是超級使用者的提示符號。
### $是一般使用者的提示符號。
### cd指令代表change directory
### cd ~指令可以回到主文件夾。
### cd -指令可以回到上一次路徑。
### ~符號代表主文件夾。例如在 Windows 底下,user的家目錄為 C:\Users\。
### pwd指令代表print work directory,用於將當前工作目錄的完整路徑輸出到標準輸出
### clear指令可以清除終端機畫面的內容。
### kill -9 [pid]指令可以移除背景處理程序。
### echo $? 指令可以顯示上一個命令的執行結果,這個狀態碼是一個整數,通常是0表示成功,非零值表示錯誤。
### sudo指令可以在執行階段切換成管理者
### ifconfig指令等於 Windows 底下的ipconfig。




### 如果顯示ifconfig: command not found的錯誤,就輸入sudo yum install net-tools來進行安裝。之所以使用yum是因為在 CentOS 底下沒有apt。
## 關閉防火牆:
### 1.輸入 su 進入超級使用者。
### 2.輸入 sudo yum install gedit 安裝 gedit 套件。
### 3.close selinux (gedit /etc/selinux/config)
### save -> close -> reboot
### 4.輸入 getenforce 進行確認。
### 5.輸入 systemctl stop firewalld 停止防火牆,用於保護電腦免受潛在的網絡攻擊。
### 6.輸入 systemctl disable firewalld 關閉防火牆,關閉後會禁止它在系統啟動時自動啟動。
### 7.輸入 systemctl status firewalld 檢查防火牆,可以檢查firewalld服務是否正在運行以及是否出現任何錯誤。





## 和遠端進行登入操作:
### 1.輸入 sudo yum install openssh-server -y 安裝套件。
### 2.輸入 systemctl start sshd 此指令是啟動 OpenSSH 伺服器(sshd)服務,OpenSSH 是一個用於安全遠程登錄和文件傳輸的套件
### 3.輸入 systemctl status sshd 檢查伺服器,會顯示SSH服務(sshd)的當前狀態和相關信息。

## ssh server install: yum install openssh-server -y
## 下載 PuTTY:
https://www.putty.org/
## 下載 WinSCP:
https://winscp.net/eng/download.php
### 在 PuTTY 下輸入 CentOS 對外主機的 IP 位址,然後點Open就可以進行登入再操作

### 在 WinSCP 下輸入 CentOS 對外主機的 IP 位址,然後點登入,登入後就可以進行檔案傳輸。

## 網頁伺服器流程:
### 1.輸入 sudo yum install httpd -y 安裝套件。
### 2.輸入 systemctl start httpd 啟動伺服器。
### 3.輸入 systemctl status httpd 檢查伺服器。
### 4.輸入 cd /var/www/html 前往該資料夾。
### 5.輸入 echo "hi" > hi.htm 寫入檔案。
### 6.回到本機瀏覽器。
### 7.輸入 虛擬機 IP 位址 + 檔案名 來進行確認。


## 參考連結:
https://www.putty.org/
https://winscp.net/eng/download.php
### 最後顯示結果:

# 第三週:
### 架設網站IPv6
### 設定網路卡介面:
### 勾選並選擇Bridged Adapter


## 檢查防火牆的流程:

## 啟動伺服器的流程:


## 架設ChatGPT機器人:
https://mrmad.com.tw/chatgpt-line-robot-creation-teaching

## C語言用gedit編寫,再使用gcc來去編譯

# 第四週:
## 建立快照:
### 網址:
https://quietbo.com/2021/07/04/virtualbox-%E9%82%84%E5%8E%9F%E4%B9%8B%E5%89%8D%E7%9A%84%E5%82%99%E4%BB%BD%E8%88%87%E9%82%84%E5%8E%9F%E6%96%B9%E5%BC%8F-%E5%BF%AB%E7%85%A7-%E5%BF%85%E5%AD%B8/
## 安裝 Wget:

## 安裝 Conda操作流程:
### wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
```
bash Miniconda3-latest-Linux-x86_64.sh
press q
enter yes
press enter
enter no
/home/user/miniconda3/bin/conda config --set
auto_activate_base false
cd
gedit .bashrc
export PATH=$PATH:/home/user/miniconda3/bin
restart konsole
```












## 建立環境:
### 1.conda init 初始化命令
### 2.conda create -n py310 python=3.10 安裝Python 3.10版本
### 3.restart konsole


## 安裝FFmpeg流程:
https://sysadminxpert.com/install-ffmpeg-on-centos-7/

## 安裝VLC:
### yum install vlc
## 安裝 Whisper:
### 1.yum install git
### 2.conda activate py310
### 3.pip install git+https://github.com/openai/whisper.git
### 4.pip install pytube
## 下載程式:
### 1.touch subtitle.py
### 2.gedit subtitle.py
### 3.copy from https://raw.githubusercontent.com/smallko/test-whisper/main/gen_sub.py
### 4.paste
## 執行程式:
### python subtitle.py

## 放各種音頻和視頻格式:
### vlc
## 編輯字幕:
### gedit p4switch1.srt
### 教學影片:
https://zhuanlan.zhihu.com/p/360889789?utm_id=0
## 第一章:
## 1-3 自由軟體:
## 通用公共授權GPL:
### GPL要求軟體在重新散佈或修改時,必需提供原始程式碼
## Apache軟體:
### 與GPL不同的點是允許再授權
### 可以拿別人的來修改,修改後不需要再散佈出去
## 1-4 國際認證:
### LPIC、RHCE、NCLP
## 第2章:
## 虛擬機器軟體:
### VMWare、VirtualBox、Hyper-V(Windows)、kvm(linux)
## 期中考考題:
### 在Linux系統必要的分割區有2個:
### 跟目錄[/]、swap 虛擬記憶體

# 第五周:
## 期中考:
### Linux安裝時要有2個分割區: / (根目錄)、swap
### 一般使用者:$
### 超級使用者:#
### Linux 管理者名稱: root
### Windows 管理者名稱: administrator

### 0.0.0.0代表任一介面的ip
### 快捷鍵:
連結:
https://blog.csdn.net/qq_45083975/article/details/105274397

## clear(清除畫面內容)
## 常用指令:
### chmod (change mode) +x (excutable)

### touch可以用來產生一個空白的檔案
### dmesg | more:
### 可以分頁檢視dmesg的資訊

### netstat:
### 用於顯示和分析網絡連接和網路統計信息的命令行工具

### uname:
### 用於顯示系統的相關信息

### hostnamectl:
### 用於設置、顯示和修改主機名稱以及相關的設置。

### PS1:

### 參考連結:
https://blog.gtwang.org/linux/how-to-make-a-fancy-and-useful-bash-prompt-in-linux-1/
### echo pts:

### fg:
### 在前景中執行工作

### ls:
### 用於列出目錄內的文件和子目錄。

### 更新密碼:
連結:
https://www.unixmen.com/reset-root-password-centos-7/

### 更改主機名稱:

### Linux 裡面第一支被執行的應用程式 (pid(process id) = 1):
### (早期系統)old: init
### (新系統)new: systemd
# 第6周:
## /lib
### 動態函式庫: lib 開頭, .so.* 結尾
### 靜態函式庫: lib 開頭, .a 結尾
## /mnt:
### 掛載設備的目標目錄

## 4-2
### ls:


### cd:
### 變更至其他目錄

### 特殊目錄:

### touch:
### 用於創建空白文件或者更新現有文件的時間戳記





### pipe:
### 用於在命令行界面上將多個指令連接在一起,以實現更複雜的操作和功能

### cat:
### 用於連接文件並打印它們的內容


### 顯示前五行,挑最後三行並顯示出來

### 2個大於是追加(append):

# 第9周:
## 1.Linux 每一個目錄下都有「. 」「.. 」目錄,其意義分別代表甚麼?
### Ans: .為目前目錄 、 ..為上一層目錄
## 2.宇元(char)設備所用的符號是?
### Ans: c
## 3. 區场(block)設備所用的符號是?
### Ans: b
## 4. 只要顯示a.txt的最前面三行,可以使用甚麼指令?
### Ans: head -n 3 a.txt
## 5. Linux 為家目錄訂定了一個符號,其符號為?
### Ans: ~
## 6.若要拷貝/abc目錄(包含目錄下的a. txt,b.txt)到/tmp目錄下,要使用甚麼指令?
### Ans: cp -r /abc /tmp
## 7.檔案權限中代表可讀、可寫、可執行的符號分別為何?
### Ans: r w x
## 8.根目錄下放置系統設定檔的目錄為?
### Ans: /etc
## 9.在Linux下,檔案a和檔案A指的是相同的檔案,對or 錯?
### Ans: 錯
## 10. Linux的檔案系統最上層-根目錄,其代表符號為?
### Ans: /
## 11. Linux 具有最高權限的帳號為?
### Ans: root
## 12.一般使用者的命令提示符號為何?
### Ans: $
## 13. 變動性與系統等待排隊處理的檔案,其目錄為?
### Ans: /var
## 14. 刪除空的目錄所使用的指令為何?
### Ans: rmdir
## 15. 一般讓Linux 系統啟動並運作最少需要幾個分割區?其分割區名稱為?
### Ans: 2 , / swap
## 16. Linux 提供的”虛擬主控台”的功能,利用鍵盤可以切換主控台,最多為幾個?
### Ans: 6
## 17. 查詢 Linux 目前登入的使用者帳號資訊能翰入何種指令?
### Ans: W
## 18. 若要把a.sh檔案改名稱為b.sh,要使用甚麼指定?
### Ans: mv a.sh b.sh
## 19. 重新啟動指令為何?
### Ans: reboot /shutdown -r now
## 20. 關機並且關開電源指令可以使用?
### Ans: shutdown -h now / halt -p
## 21. 列出檔案清單的指令為何?
### Ans: ls
## 22.這學期我們所使用的Linux 發行套件叫作?
### Ans: centos
## 23. 管理者的命令提示符號為何?
### Ans: #
## 24. 建立新目錄的指令為何?
### Ans: mkdir
## 25. 若要把a. txt,b.txt合併成C. txt,請問指令為何?
### Ans: cat a.txt b.txt > c.txt
# 第10周:
### 在Linux中link有分為2種,hard(硬連結) 、symbolic(符號連結) ,與Window的捷徑相似

### windows下捷徑可以連結到任意的檔案或者是資料夾
### 蘋果系統可能只有讀取的功能,但如果要寫入的話可能就會有問題,但如果採用EXFAT格式就可以進行可讀可寫的功能


## Ext3和Ext2的差別在於多一個日誌功能


### block會影響到未來架設伺服器的選擇,如果是選擇文字類型,block可以設定較小點,而影片、圖片就可以選擇較大的block

## 5-1:

## 此指令可以查看檔案更進階的內容

## 檔案的特殊屬性 SUID/SGID/SBIT:
https://dywang.csie.cyut.edu.tw/dywang/linuxsecurity/node39.html
## which 可以尋找執行檔所在的位置

## s = SUID 、t = SBIT
## r(可讀)=4、w(可寫)=3、x(可被執行)=1
## ls -l /tmp -->查看tmp資料夾裡面所有的資料夾跟檔案的隱藏格式,但並不是資料夾本身
## 此指令是查看資料夾屬性

## 使用者身分切換:

## Access讀取最新時間、Modify內容變動
## change time : 除了內容改變會變動外,屬性變動也會變更時間


## 使用ntpdate 調整時區:

## slink(符號連結):

## hlink(硬連結):


## file可以知道檔案是甚麼類型的
## dynamically linked(動態連結)執行時環境要有動態連結的函式庫在裡面
## 靜態連結在編譯時會把函式庫的內容一起編譯到程式碼裡面,使程式碼變得更龐大,優點是執行時不用再進入函式庫

## 修改環境變數:

## dd 想要產生較大的測試檔案:

## 可以顯示硬碟空間使用率:

# 第11周:
## DU DF差別:
### DU是指考慮檔案、目錄的大小,DF是指磁碟分割區的情況

## du -h會顯示該單位

## du -h -s 目前資料夾(包含子資料夾及下面所有檔案)累加最後的結果

## du -h -s /etc ect資料夾的檔案大小

## du -h --max-depth 1 可以知道該檔案大小


## stdout(螢幕 標準輸出):

## stderr(標準錯誤流):





## hide
### 把正確的放在c.txt裡面,2>&1是指把錯誤的放在跟1相同位置,而1在c.txt,等於就是把錯誤放在c.txt,因此正確和錯誤的都會放在c.txt


## 5-3

## 放在管道右邊有個首要條件是可以從標準輸入讀取並處理

## pipe 可將前一個命令的輸出作為後一個命令的輸入

## xargs 可將標準輸入數據轉換為命令行參數的工具

## 有名管道-->其中一個進程將數據寫入管道,而另一個進程則從管道中讀取該數據



## 5-4:

## 搜尋方式:


## updatedb(更新資料庫):第一次更新會比較久 ,locate(查詢檔案)


## find(指定檔名搜尋)
## 把第一個點省略掉,就會從本目錄



## 期中考必考重點
https://blog.gtwang.org/linux/unix-linux-find-command-examples/
## 最後一行是指前面找到的內容會被填充到大括號中
## -exec rm 把這些.txt檔案刪除,最後以\為結尾

## 增量備份流程:


# 第12周:
## 通配符與正則表達式是不一樣的,通配符是匹配檔案名稱用的,就是尋找檔案,正則表達式則是針對內容進行匹配,用來尋找檔案裡面的內容

https://bpdocs.blueprism.com/bp-7-1/zh-hans/helpWildcardsAndRegex.htm
## a+至少一次或多次 、a? 0次

## Linux三劍客: awk / grep / sed
## grep 進行內容塞選
## awk用於從文本文件或標準輸入中讀取數據,並根據指定的模式和操作來處理和轉換這些數據。
## sed用於處理和轉換文本流,可以進行搜索、替換、刪除、插入等操作。
## 尋找以.conf檔案結尾的,並查看其中有包含network,最終把檔案找出來,-n是指顯示第幾行

https://blog.gtwang.org/linux/linux-grep-command-tutorial-examples

## 不分大小寫:

## 標示行號:

## 反向匹配: 若想要將匹配的資料排除,只顯示出沒有關鍵字的那幾行資料,可以加上 -v 參數。

## ps 查看背景有哪些程式正在運行,grep sleep搜尋哪些程式在睡眠

## 顯示前後幾行:

## alias用於創建自定義命令的功能


## /etc/passwd存放系統的帳號、針對帳號的資訊

## 以nologin作為結尾

## 匹配空白行:

## 去掉註解和空白行:

## 正規表達式:


## 各種出現次數的指定:

## 多種字眼的組合:


## dmesg可以看到有關硬體的資訊


## tty 主設備號用來區分不同種類的設備,次設備號用來區分同一類型的多個設備

# 第13周:

## FAT32 掛載方式:
## 卸載時一定要先離開現在所在的目錄,使用umount

## USB driver : if it is FAT32, just plug into linux system. It can identify the usb drive.
## Linux can also mount automatically.
https://earthcat99.pixnet.net/blog/post/36811189


## NTFS 掛載方式:
https://it001.pixnet.net/blog/post/328444228


## 這種系統帳號是不允許登入的,是用來執行或是維護伺服器


## 密碼破解流程:
## Jhon the Ripper(密碼破解工具)
https://trendoceans.com/how-to-install-john-the-ripper-on-all-platforms/



## 如何使用 John the Ripper 進行密碼破解:
https://ithelp.ithome.com.tw/m/articles/10300529

## 考試重點:

# 第14周:
## mkdir -p 目錄名稱: 加上-p,如果資料夾不存在,則創建資料夾,如果資料夾存在,則不動作,也不會有錯誤發生

## 擴展a..d:

## 也可以合併

## 一定要加-d才可以看到資料夾裡面的內容

## 擁有者把自己的可讀權限拿掉後的結果
## r(可讀)

## x(可被執行)
## 針對目錄來說,x就是代表是否可以進入資料夾的權限

## w(可寫入)
## 可以針對目錄去做異動,可寫入、修改、新增資料或刪除檔案等

## 不能新增子目錄

## touch用法:

## 對於一般使用者來說如果目錄的權限沒有w,就不能刪除檔案,但管理員(root)還是可以刪

## 使用su -名稱 可以切換使用者


## 連同testdir2底下所有檔案一起做更改



## 參考資料:
https://blog.gtwang.org/linux/how-to-make-file-immutable-on-linux-chattr-command/
## 高階屬性是使用lsattr

## 這邊的i是指檔案不可以被更動(immutable),不可以寫入、刪除、建立連結檔等
## chattr:


## 如果要刪除這個檔案就必須移除掉i

## 可以讓檔案只能增加內容,不可以刪除或覆寫

## a是指只能透過echo這行指令來去修改才可以,其他都不行


## 透過cpuinfo這個檔案使用cat去看proc,就可以知道Linux一些關於cpu的資訊,例如:核心或是時脈的部分。

## 查看記憶體(mem)

## 也可以使用free -h查看
## -h代表顯示時會用常用的單位


## ps可以觀察行程的資訊


## 提供了行程的詳細信息

## 首先是 ps aux,它用於列出當前正在運行的行程的詳細信息。ps命令用於顯示行程狀態,aux選項用於顯示所有用戶的所有行程
## | 表示管道(pipe)。管道將第一個命令的輸出作為第二個命令的輸入,在這種情況下,它將 ps aux 的輸出鏈接到 more 命令



## pstree(父行程):
## pstree可以知道之間的關係




## sleep 100前景執行,ctrl+z可以暫停,bg 丟到背景開始執行,jobs可以去查看行程執行的狀態


# 第15周:
## 參考連結:
https://ithelp.ithome.com.tw/articles/10221185
## ACL(Access Control List)存取控制串列:ACL允許系統管理員根據用戶、組或其他條件來限制或允許對資源的訪問。


## 相比上一張,多一個使用者mary,他具備可讀可寫的功能



## su 帳號: 直接切換到"帳號",所在位址不變
## Shell 腳本:

## 透過這個方式可以新增帳號:

## 參考連結:
https://ithelp.ithome.com.tw/m/articles/10264860
## FirewallD:
https://blog.gtwang.org/linux/centos-7-firewalld-command-setup-tutorial/

## zones:
## 目前有哪些zones

## 目前正在使用的zones

## 列出zones的詳細設定


## 最後結果

## serivce服務:


## 加入port,使用選項--add-port


## ssh連線:





## ssh tunnel:
### 用於在本地和遠程系統之間傳輸數據

## 參考連結:
https://blog.gtwang.org/linux/centos-7-firewalld-command-setup-tutorial/
## 壓縮與解壓縮流程:
http://note.drx.tw/2008/04/command.html


## 更改系統時區指令:
https://blog.gtwang.org/linux/centos-linux-change-system-timezone-command-tutorial/


## 壓縮檔zip:



## tar打包並壓縮流程,tgz格式:



## 副檔名bz2




# 第16周:
## 設定系統時間:



## 網路校時協定(NTP)更新系統時間:


```
tock.stdtime.gov.tw
watch.stdtime.gov.tw
time.stdtime.gov.tw
clock.stdtime.gov.tw
tick.stdtime.gov.tw
```

## !988 重複執行988行的指令

## !keyword(關鍵字) ,這裡是打!time,會找到第1004行中有timedatectl中有包含time並執行

## 如果安裝完server,卻無法連接? 如何debug:
## 1.systemctl status 伺服器 查看狀態, 如果已經running,但還是無法連接
## 2.查看防火牆,selinux
## 3. 檢查port number

## 設定系統排程工作(crondtab):


## 範例:





## 磁碟額配設定:
## 會針對家目錄(/home)進行配額,會單獨出來變成一個分割區

## 操作流程:








## 參考連結:
https://blog.gtwang.org/linux/unix-linux-find-command-examples/
## 使用者資訊/etc/passwd 密碼/etc/shadow