## 蔣駿杰 linux的作業
## Ubuntu
什麼是Ubuntu
簡單來說Ubuntu是一個GNU/Linux作業系統,就像你我平常在使用的微軟公司的Windows作業系統或Apple公司的Mac OS一樣,而這個作業系統也有用在伺服器系統上。那麼GNU與
Linux到底是什麼;GNU是一個計劃,主要是開發一套與Unix(一套作業系統)向上兼容的名為「GNU」(GNU's Not Unix)的完全自由的軟體系統,而前述中的"自由"這個單詞並不是指價格,而是可以自由的使用。您可以為得到GNU軟體付費,也可以不付。無論如何,一旦得到了軟體,您便擁有了使用它的三項指定的自由:
1.複製軟體並將其送給您的朋友和同事的自由。
2.通過對源碼的完全控制而可以隨意改變程序的自由。
3.發布改進的版本從而幫助建設社群的自由。(如果您再發布GNU軟體,您可以為傳遞拷貝過程中的物理行為收取一定的費用,您也可以贈送拷貝。)

## 權限類型
在 Linux 系統中,chmod、chown 和 ls -l 是三個非常常見且重要的命令,它們分別用來管理文件和目錄的權限、擁有者和查看文件的詳細信息。讓我們逐一介紹這些命令:
1. chmod — 改變文件的權限
例子
```
給所有者添加執行權限:
chmod u+x file.txt
去除群組的寫入權限:
chmod g-w file.txt
設置所有人具有讀取權限:
chmod a=r file.txt
```
2. chown — 改變文件的擁有者和群組
chown 用來改變文件或目錄的擁有者(user)和群組(group)。這對於管理多用戶系統中的文件和目錄非常重要。
例子
```
將文件的擁有者設為 alice,群組設為 staff:
chown alice:staff file.txt
將文件的擁有者設為 alice,不改變群組:
chown alice file.txt
將文件的群組設為 staff,不改變擁有者:
chown :staff file.txt
```
3. ls -l — 查看文件詳細信息
ls -l 是用來查看文件或目錄的詳細信息的命令。它會列出文件的權限、擁有者、群組、大小、修改時間等信息。
例子:
```
ls -l file.txt
輸出解釋:
diff
-rwxr-xr-- 1 alice staff 1234 Jan 29 12:34 file.txt
```
## Linux 中的權限分為三種基本類型:
讀取 (r):允許查看文件內容或列出目錄內容。
寫入 (w):允許修改文件內容或添加、刪除目錄中的檔案。
執行 (x):允許執行文件(如果是程式)或進入並操作目錄。
2. 權限等級
Linux 系統中的權限是基於三個不同的權限等級設定的:
所有者 (Owner):文件或目錄的擁有者(通常是創建文件的用戶)。
群組 (Group):文件或目錄所屬的用戶組。該群組內的所有用戶共享對該文件的權限。
其他人 (Others):指非所有者且不屬於該文件群組的所有其他用戶。
這些權限會以 rwx 的形式顯示,分別表示「讀取」、「寫入」和「執行」。例如:
rwxr-xr--:
第一部分 rwx 是 所有者 的權限。
第二部分 r-x 是 群組 的權限。
第三部分 r-- 是 其他人 的權限。
權限的顯示格式
當你使用 ls -l 命令列出文件或目錄時,會看到類似以下的權限顯示:
```
bash
-rwxr-xr-- 1 owner group 1234 Jan 29 12:34 myfile
```
這裡的第一欄顯示文件的權限:
第一個字母 (- 或 d) 表示文件類型:
- 表示普通文件
d 表示目錄
接下來的三個字母 表示所有者的權限(rwx)。
接下來的三個字母 表示群組的權限(r-x)。
最後的三個字母 表示其他人的權限(r--)。
4. 權限數值表示法
Linux 也允許使用數字來表示文件權限,這是通過將每個權限類型對應的數值相加來實現的:
讀取權限 (r) = 4
寫入權限 (w) = 2
執行權限 (x) = 1
每個權限等級的數字會被加總:
所有者權限的數字(Owner)
群組權限的數字(Group)
其他人權限的數字(Others)
例如,rwxr-xr-- 可以轉換為:
所有者:rwx = 4 + 2 + 1 = 7
群組:r-x = 4 + 0 + 1 = 5
其他人:r-- = 4 + 0 + 0 = 4
因此,權限 rwxr-xr-- 就是數值 754。
5. 改變權限
你可以使用 chmod 命令來修改文件或目錄的權限。chmod 允許使用符號模式或數字模式來設置權限。
使用符號模式
```
bash
chmod u+x file.txt # 給所有者 (user) 增加執行權限
chmod g-w file.txt # 去除群組 (group) 的寫入權限
chmod o=r file.txt # 設定其他人 (others) 只有讀取權限
```
使用數字模式
```
bash
chmod 755 file.txt # 設定所有者擁有 rwx 權限,群組和其他人擁有 rx 權限
chmod 644 file.txt # 設定所有者擁有 rw 權限,群組和其他人擁有 r 權限
```
6. 改變擁有者和群組
你也可以使用 chown 命令來更改文件的所有者和群組:
```
bash
chown owner:group file.txt # 設定文件的所有者和群組
chown owner file.txt # 只改變所有者
chown :group file.txt # 只改變群組
```
在 Linux 和類 Unix 系統中,sudo 是一個非常常用的命令,它讓普通用戶能夠以管理員(root 用戶)身份執行命令,從而獲得更高的權限。除了 sudo,還有許多其他相關命令和概念,這些都是用來管理系統的不同層面。讓我們詳細了解一下 sudo 以及其他常見命令和解釋。
## 1. sudo — 以超級用戶身份執行命令
sudo 代表 "superuser do"(超級用戶執行)。它使得普通用戶能夠執行通常需要根(root)權限的命令,而無需直接登錄為 root 用戶
## 2. root 用戶與 sudo 的關係
root 用戶:是 Linux 系統中的超級用戶,擁有對系統的所有權限,可以執行任何操作。直接使用 root 用戶執行命令會讓你獲得最高級別的控制權限。
sudo:不需要直接登錄為 root 用戶,而是通過 sudo 提升當前用戶的權限來執行需要高權限的操作。這樣做的好處是可以限制 root 權限的濫用,並且每次使用 sudo 都會有審計記錄。
```
sudo:用來以 root 或其他用戶的身份執行命令,避免直接登錄為 root,用戶需要輸入當前用戶的密碼。
su:用來切換到指定用戶(通常是 root)並執行命令,切換後需要提供目標用戶的密碼。
chmod:用來修改文件或目錄的權限,讓用戶控制誰可以讀、寫或執行文件。
chown:用來修改文件的擁有者和群組。
ls:用來列出目錄中的文件和子目錄,並可以顯示詳細的文件信息。
ps:用來查看當前系統中運行的進程。
```
## 第一題
搜尋python3開頭
```bash
$ apt-cache search python | grep '^python3'
```
## 第二題
顯示時間 過濾出包含 `datetime` 的行 使用 `cut` 命令,以 `T` 為分隔符,提取第二部分,時間時區信息
再次使用 `cut` 命令,以 `+` 分隔符,提取時間部分,去掉時區信息
最后使用 `cut` 命令,以 `.` 為分隔符,去掉毫秒部分,僅保留 `HH:MM:SS`。
`watch` 命令每隔 5 秒運行一次指定的命令
```bash
curl -s http://worldtimeapi.org/api/timezone/Asia/Taipei.txt | grep '^datetime:' | awk -F'T' '{print $2}' | cut -d'.' -f1
watch -n 5 'curl -s http://worldtimeapi.org/api/timezone/Asia/Taipei.txt | grep datetime | cut -d "T" -f 2 | cut -d "+" -f 1 | cut -d "." -f 1'
擷取 24-31僅保留 `HH:MM:SS` [watch] 是一個可以定期執行指令 -n 1 每隔0.1秒間看
echo $(curl -s http://worldtimeapi.org/api/timezone/Asia/Taipei | cut -d, -f 3|cut -c 24-31 )
watch -n 1 "curl -s http://worldtimeapi.org/api/timezone/Asia/Taipei | cut -d, -f 3|cut -c 24-31"
```
## 第三題
將台積電股票資訊爬下來
網址: https://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=tse_2330.tw&json=1&delay=0&_=1635167108897
回傳的JSON欄位說明:
欄位名稱 描述
z 當前盤中成交價
tv 當前盤中盤成交量
v 累積成交量
b 揭示買價(從高到低,以_分隔資料)
g 揭示買量(配合b,以_分隔資料)
a 揭示賣價(從低到高,以_分隔資料)
f 揭示賣量(配合a,以_分隔資料)
o 開盤價格
h 最高價格
l 最低價格
y 昨日收盤價格
u 漲停價
w 跌停價
tlong 資料更新時間(單位:毫秒)
d 最近交易日期(YYYYMMDD)
t 最近成交時刻(HH:MI:SS)
c 股票代號
n 公司簡稱
nf 公司全名
注意
爬下來的資料請透過管線給jq指令做格式化,比較容易拆解資料。
請抓取nf欄位和z欄位資訊,然後組成結果如下:
台灣積體電路製造股份有限公司 今日價格: 838
```
使用 `jq` 處理 JSON 數據,並使用 `-r` 來輸出原始字符串
使用 `jq` 的字符串插值功能,提取 `nf`(公司全名)和 `o`(開盤價)字段,並格式化輸出。
JSON 中提取 `msgArray` 數组中的每個元素
```bash
```

curl -s 'https://mis.twse.com.tw/stock/api/get StockInfo.jsp?ex_ch=tse_2330.tw&json=1&delay=0&_=1635167108897' | jq -r '.msgArray[] | "\(.nf) 今日價格: \(.o)"'
## 第四題
取得目前目錄下全部的子目錄和檔案佔據的硬碟空間,並以下面的格式顯示
此目錄檔案總大小為: 185M
提示:
可以使用du指令計算
dh檔案顯示 h資料大小 tail -1` 從du -h` 的輸出中提取最後一行 cut -f 1獲取tail -1提取的最後一列 $執行括號中的命令 echo印出
```bash
echo "此目錄檔案總大小為: $(du -h | tail -1 | cut -f 1)"
```

## 第五題
###### get_google_trend.sh
```
從google trends抓取熱門搜尋排行榜資料,並以下面格式輸出到畫面上:
林雅各:1000+
趙天麟:1000+
魔獸:1000+
黃仁勳:5萬+
MBTI:5萬+
內田有紀:1萬+
Popeyes:1萬+
台灣野馬隊:5000+
李西河:5000+
李海魯肉飯:5000+
炎亞綸:2000+
廣達:2000+
長庚大學:2000+
張學友:2000+
東海大學:2000+
中興大學:2000+
雷驤:2000+
T1:2000+
東吳大學:2000+
TAT:2000+
噩盡島:2000+
MSCI 調整:1000+
今永昇太:1000+
Google Trends資料抓取curl指令
```



我想說明
```bash
curl -s 'https://trends.google.com/trends/api/dailytrends?hl=zh-TW&tz=-480&geo=TW&hl=zh-TW&ns=15' -H 'accept: application/json, text/plain, */*' -H 'accept-language: zh-TW,zh;q=0.9,en-US;q=0.8,en;q=0.7' -H 'cookie: __utmc=10102256; __utma=10102256.1988690101.1717122572.1717122582.1717124682.2; __utmz=10102256.1717124682.2.2.utmcsr=trends.google.com|utmccn=(referral)|utmcmd=referral|utmcct=/; __utmt=1; __utmb=10102256.2.9.1717124699155; SEARCH_SAMESITE=CgQIm5sB; AEC=AQTF6HxX-R9ngeztx-zrIwJTfvmFSLN9rTvkfN4O25Q1PskDRAc6PYsKfSk; NID=514=i4H9axvH-OMMwM0VPNqAgrbQxLw9PtToEHwpe9CaoQ_cgNip9k7bhLdpcu1r9SH4xvndMse2zw8OQT63tTwF-CfJLzYUT559XM5FUoTKHbZ8H0VCaudYzYO6ywwUkmUcvvmAGZXKQFV3dWgjGT3Ns8TWjT7OnGIWOsWnyKUFhnzLbWY4e9Ixb4pG2ZvPV8Kq_IjWQAHc1Qro_u6SETkX6hNfUNd8EqBQG47voaopVYFgRc8jlWqPVyVEbpaFEeRXCwgJtisy5ok8-gdUs7sX4sOaFE9sfsr7sSZUMU2Lw3-7pvA1VFA8ZvOuXpge; _gid=GA1.3.377492726.1717122573; 1P_JAR=2024-05-31-03; OTZ=7580345_24_24__24_; _ga=GA1.3.1988690101.1717122572; _ga_VWZPXDNJJB=GS1.1.1717122571.1.1.1717124894.0.0.0' -H 'priority: u=1, i' -H 'referer: https://trends.google.com/trends/trendingsearches/daily?geo=TW&hl=zh-TW' -H 'sec-ch-ua: "Google Chrome";v="125", "Chromium";v="125", "Not.A/Brand";v="24"' -H 'sec-ch-ua-arch: "x86"' -H 'sec-ch-ua-bitness: "64"' -H 'sec-ch-ua-full-version: "125.0.6422.113"' -H 'sec-ch-ua-full-version-list: "Google Chrome";v="125.0.6422.113", "Chromium";v="125.0.6422.113", "Not.A/Brand";v="24.0.0.0"' -H 'sec-ch-ua-mobile: ?0' -H 'sec-ch-ua-model: ""' -H 'sec-ch-ua-platform: "Windows"' -H 'sec-ch-ua-platform-version: "10.0.0"' -H 'sec-ch-ua-wow64: ?0' -H 'sec-fetch-dest: empty' -H 'sec-fetch-mode: cors' -H 'sec-fetch-site: same-origin' -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36' -H 'x-client-data: CIS2yQEIorbJAQipncoBCPbuygEIlqHLAQiFoM0BCN3uzQEIpYrOAQjik84BCOiTzgEI4pfOAQjUmM4BGPXJzQE=' > googletrends.txt
cat googletrends.txt | tail +2 | jq | grep query | grep -v " " | cut -c 25- | tr -d "\"," > 1.txt
cat googletrends.txt | tail +2 | jq | grep formattedTraffic | cut -c 34- | tr -d "\"," > 2.txt
paste -d: 1.txt 2.txt > 3.txt
cat 3.txt
```
> **備註:**
> 小心被Google
## 第六題



```
echo "現在氣溫: $(curl -s -X 'GET' 'https:/ /opendata.cwa.gov.tw/api/v1/rest/datastore/O-A0001-001?Authorization=CWA-AC4D5 FC7-3E97-43F6-AEB0-CBAD45145C74&StationId=C0C700&WeatherElement=AirTemperature ' -H 'accept: application/json' |jq |grep '"AirTemperature":'|cut -c 29-33)" ; echo "目前降雨率: $(curl -s -X 'GET' 'https://opendata.cwa.gov.tw/api/v1/ rest/datastore/O-A0001-001?Authorization=CWA-AC4D5FC7-3E97-43F6-AEB0-CBAD45145 C74&StationId=C0C700&WeatherElement=Now' -H 'accept: application/json' |jq | grep '"Precipitation":'|cut -c 29-33)";echo "目前天氣: $(curl -s -X 'GET' 'h ttps://opendata.cwa.gov.tw/api/v1/rest/datastore/O-A0001-001?Authorization=CWA -AC4D5FC7-3E97-43F6-AEB0-CBAD45145C74&StationId=C0C700&WeatherElement=Weather' -H 'accept: application/json' |jq |grep '"Weather":'|cut -c 22-23)"
```
操作影片 https://www.youtube.com/watch?v=6K_NuTeN5SI&t=141s
## 第七題
提示用户輸入數據 將入數據存到temp.txt檔中
從temp文件中讀取數據 echo顯示您输入的資料是
xxxxx
```
read -p "請输入數據: " user_input
echo "$user_input" > temp.txt
content=$(cat temp.txt)
echo "您输入的資料是: $content"
```
user_input 存入變數 到temp_file=(mktemp)到建立暫存檔案 顯示echo "user_input" > "temp_file暫存檔 導入顯示echo "您输入的資料是 temp_file數據
```
read -p "請输入數據: " user_input; temp_file=$(mktemp); echo "$user_input" > "$temp_file"; echo "您输入的資料是: $(cat "$temp_file")"
```
## 第八題


#生成1到20隨機數
#提示用戶輸入猜測的數字
檢查用户輸入的數字是否為20
```
#!/bin/bash
random_number=$(( RANDOM % 20 + 1 ))
echo "請輸入一個1到20之間的數字: "
read user_guess
if [ "$user_guess" -eq 20 ]; then
echo "答對了"
else
echo "答錯再接再厲"
fi
```
## 第九題




```
#!/bin/bash
read -p "請輸入搜尋站台名稱: " user
remain=$(grep "$user" ubike.csv | cut -d, -f2)
available=$(grep "$user" ubike.csv | cut -d, -f2)
if [ "$remain" -lt 10 ]; then
echo "請同學加快腳步喔."
else
echo "超過10量還很多,慢慢來."
fi
echo "站台: $user"
echo "剩餘數量: $remain"
echo "可借數量: $available"
```

```
#!/bin/bash
# 讀取站台
read -p "請輸入搜尋站台名稱: " user
# 查找指定站台的信息
station_info=$(grep "$user" ubike.csv)
# 檢查是否找到站台
if [ -z "$station_info" ]; then
echo "無此站台"
elif [ "$(echo "$station_info" | wc -l)" -gt 1 ]; then
echo "多個匹配站台,請更具體"
else
# 獲取站台數量可借數量
remain=$(echo "$station_info" | cut -d, -f13)
available=$(echo "$station_info" | cut -d, -f14)
# 顯示站台名稱、剩餘數量和可借數量
echo "站台: $user"
echo "剩餘數量: $remain"
echo "可借數量: $available"
# 檢查剩餘數量是否小於 10,並顯示相應的提示
if [ "$remain" -lt 10 ]; then
echo "請同學加快腳步喔."
else
echo "超過10量還很多,慢慢來."
fi
fi
```


## 第十題

```
!/bin/bash
if [ -z "$1" ]; then
echo '請輸入要查詢帳號'
exit 1
fi
# 用戶信息寫入 who.log
who > who.log
# 使用 csvtool 和 grep 查找用戶
result=$(csvtool -t " " col 1 who.log | uniq | grep "^$1$")
# 檢查 result 變量是否為空
if [ -z "$result" ]; then
echo "$1 不在線上"
else
echo "$1 正在開心聊天"
fi
```

## 第十一題
初始化一個數组來存儲用戶輸入的數字
寫一程式,讓使用者輸入任意個數字,輸入quit可以結束輸入,當結束的時候,把使用者輸入的數字全部顯示出來
```
/bin/bash
numbers=()
echo"======================================================="
echo 'hello'
echo"======================================================="
echo "炸彈密碼"
# 進入一個無限循環來讀取用戶輸入
while true;
do
read -p "請輸入數字(quit 結束): " input
# 檢查用戶是否輸入了 "quit"
if [ "$input" == "quit" ];
then
break
fi
# 將輸入的數字添加到數组中
numbers+=("$input")
done
# 輸出所有輸入的數字
echo "您輸入的密碼是: ${numbers[@]}"
```
## 第十二題
```
#!/bin/bash
for a in *
do
if [ -f "$a" -a -x "$a" ]; then
echo "$a 是執行檔"
fi
done
```
## 第十三題
寫一程式,可以在畫面上輸出指定層數的聖誕樹
例如:
$ tree.sh 5
會顯示
```
*
**
***
****
*****
```

```
for i in $` seq 1 1 $1`
do
for j in `seq 1 1 $i`
do
printf '*'
done
printf '\n'
done
```
聖誕樹
```
height=10
for ((i = 1; i <= height; i++))
do
for ((j = i; j < height; j++))
do
```
## 第十四題
寫一程式,可以顯示九九乘法表如下:
```
2 x 1 = 2 3 x 1 = 3 4 x 1 = 4 5 x 1 = 5
2 x 2 = 4 3 x 2 = 6 4 x 2 = 8 5 x 2 = 10
2 x 3 = 6 3 x 3 = 9 4 x 3 = 12 5 x 3 = 15
2 x 4 = 8 3 x 4 = 12 4 x 4 = 16 5 x 4 = 20
2 x 5 = 10 3 x 5 = 15 4 x 5 = 20 5 x 5 = 25
2 x 6 = 12 3 x 6 = 18 4 x 6 = 24 5 x 6 = 30
2 x 7 = 14 3 x 7 = 21 4 x 7 = 28 5 x 7 = 35
2 x 8 = 16 3 x 8 = 24 4 x 8 = 32 5 x 8 = 40
2 x 9 = 18 3 x 9 = 27 4 x 9 = 36 5 x 9 = 45
6 x 1 = 6 7 x 1 = 7 8 x 1 = 8 9 x 1 = 9
6 x 2 = 12 7 x 2 = 14 8 x 2 = 16 9 x 2 = 18
6 x 3 = 18 7 x 3 = 21 8 x 3 = 24 9 x 3 = 27
6 x 4 = 24 7 x 4 = 28 8 x 4 = 32 9 x 4 = 36
6 x 5 = 30 7 x 5 = 35 8 x 5 = 40 9 x 5 = 45
6 x 6 = 36 7 x 6 = 42 8 x 6 = 48 9 x 6 = 54
6 x 7 = 42 7 x 7 = 49 8 x 7 = 56 9 x 7 = 63
6 x 8 = 48 7 x 8 = 56 8 x 8 = 64 9 x 8 = 72
6 x 9 = 54 7 x 9 = 63 8 x 9 = 72 9 x 9 = 81
```
```
for ((i = 1; i <= 9; i++))
do
for ((j = 1; j <= 9; j++))
do
printf "%d*%d=%2d\t" $i $j $((i * j))
done
echo
done
```


## BeautifulSoup台灣銀行匯率
```
import requests
from bs4 import BeautifulSoup
import csv
import time
# Taiwan Bank exchange rate URL
url = 'https://rate.bot.com.tw/xrt?Lang=zh-TW'
# Step 1: Fetch the HTML content from the website
response = requests.get(url)
# Step 2: Parse the HTML content using BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')
# Step 3: Extract exchange rate data
result = []
# Find all rows in the table body (exchange rates are inside the tbody)
trs = soup.tbody.find_all('tr')
# Iterate over each row in the table
for i in trs:
rate = []
# Currency name (like USD, EUR, etc.)
currency = i.td.div.find_all('div')[1].text.strip()
print(currency) # Print the currency name
rate.append(currency)
# Find the different exchange rates
for data_table in ['本行現金買入', '本行現金賣出', '本行即期買入', '本行即期賣出']:
# Find the exchange rate by searching for the correct data-table attribute
flag = i.find(attrs={'data-table': data_table})
rate_value = flag.text.strip() if flag else 'N/A'
print(f' - {data_table}: {rate_value}') # Print the exchange rate
rate.append(rate_value)
# Add the extracted data to the result list
result.append(rate)
# Step 4: Save the data to a CSV file
# Generate a filename based on the current date and time
filename = time.strftime('%Y%m%d_%H%M%S.csv')
with open(filename, 'w', encoding='utf-8', newline='') as file:
writer = csv.writer(file)
# Write headers to the CSV file
writer.writerow(['幣別', '本行現金買入', '本行現金賣出', '本行即期買入', '本行即期賣出'])
# Write the exchange rate data to the CSV file
writer.writerows(result)
print(f"Exchange rates have been saved to {filename}")
```
## AI生成圖
** openart**


The output image will have the same aspect ratio







## leonardo ai





## git版本控制
參考 https://w3c.hexschool.com/git/b9be5b1e
github
本地端

遠端

## python 控制瀏覽器 關機
```
import subprocess
# 打開檔案總管
subprocess.run('explorer')
# 打開Chrome並前往Yahoo
subprocess.run('C:\Program Files\Google\Chrome\Application\chrome.exe https://www.yahoo.com.tw')
# 關機
subprocess.run('shutdown /s')
```
## Git 指令來新增版本
開新資料夾,git init 建立數據庫
新增一個 ind.txt 檔案
這時,您可以輸入 git status 指令去查看
Git 偵測到你有新增這筆檔案,但尚未是 Git 追蹤的對象。
所以必須先將它加入到 (索引)裡
Changes to be committed的意思是,放在索引的檔案即將會被提交成一個新版本(commit)。
此時可以透過以下指令,來提交一個新版本。
git commit -m "<填寫版本資訊>"
所以這裡我就輸入git commit -m "新增網頁"來提交版本後,系統如果回饋以下訊息,就恭喜你,你透過 Git 建立出第一個版本出來了。
簡易版
開新資料夾,git init 建立數據庫
新增一個 ind.txt 檔案
加入索引:git add .
提交版本:git commit -m "新增網頁"
觀看歷史紀錄:git log,並會看到一個版本紀錄

git remote add <url>:在本地端數據庫,添加遠端數據庫
git push <數據庫簡稱> <分支名稱>:更新遠端數據庫資料
查看遠端倉庫的資訊
指令: git remote -v
功能: 顯示已配置的遠端倉庫。
GitHub 上建立遠端數據庫,再 clone 下來
在 GitHub 建立了一個遠端數據庫
使用 git clone <url> 指令,抓取一份數據庫下來在本地
新增了兩個 commit 在本地數據庫
使用 git push origin master 指令推送到 GitHub 更新
## 簡化加入本地數據庫的方法:
新建本地數據庫(Local Repository 只需要新建一次就好)
```
git init
```
將檔案移入索引中
```
git add .
```
將索引內的檔案提交至本地數據庫
```
git commit -m "message"
```
加入遠端數據庫(GitHub)的方法:
先自行新建好 GitHub 的 Repository,開啟終端機,在該目錄下輸入以下指令
# 這行指令只需要輸入第一次即可
```
git remote add origin <your url>
```
# 分支
```
git branch -M main
```
```
git push -u origin main
```
所以當接下來有新增檔案 或是 修改檔案時,只需要執行以下幾個步驟即可:
```
git add .
git commit -m "message"
git push -u origin main
```
而幾個較常用來查看 Git 的指令:
當檔案還在檔案(File) 與索引(Index)
```
git status
```
當檔案已經加入本地數據庫(Local Repository)
```
git log
```
https://youtu.be/F-IXLMQZAP0