建北電資2024寒訓
你資道我喜歡你嗎
for Windows users
去 設定>系統>選用功能
點開
\(更多 Windows 功能\)
勾選 \(Windows 子系統 Linux 版\) \(虛擬機器平台\)
然後按下 \(確定\)
重新開機
同時按下
\(Windows鍵\) \(R\)
左下角有小視窗
輸入
\(powershell\)
然後 \(Enter\)
可選的wsl清單
輸入
wsl -l -o
輸入
wsl --install -d Ubuntu
輸入用戶名稱
請用英文或數字
創建密碼 請記好 (輸入時不會顯示)
兩次密碼不同才會出現
for Mac users
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)
brew install <package>
for Linux users
Cloud
Amazon Web Service
Microsoft Azure
Mac
Linux
Windows
FreeBSD
Linux
內建兩中、混亂不堪
cmd
powershell
cmd
powershell
原先存在、兼容性高
新東西、支援更多功能
bash
zsh
用戶多、更穩定、兼容
速度快、自訂性高
指令相似
預設
bash
zsh
用戶多、更穩定、兼容
速度快、自訂性高
指令相似
預設
裝置名稱
user名稱
目前路徑
指令輸入區
電腦中檔案或資料夾的地址
/home/ckeisc/hello_world.cpp
根目錄中的
home中的
ckeisc中的
hello_world.cpp
ckeisc/hello_world.cpp
當前中的
ckeisc中的
hello_world.cpp
根
.
├── 20231022
│ ├── a.cpp
│ └── b.cpp
└── 20240107
├── 1.cpp
├── 2.cpp
├── 3.cpp
├── 4.cpp
└── a.out
~/code/apcs
當前目錄
4.cpp 的相對路徑
20240107/4.cpp
4.cpp 的絕對路徑
~/code/apcs/20240107/4.cpp
/home/ckeisc807/code/apcs
也就是:
(假設用戶名稱是 ckeisc807)
.
├── 20231022
│ ├── a.cpp
│ └── b.cpp
└── 20240107
├── 1.cpp
├── 2.cpp
├── 3.cpp
├── 4.cpp
└── a.out
20231022
移動到:
4.cpp 的相對路徑變為
../20240107/4.cpp
絕對路徑不受影響
顯示當前路徑
(print the name of current/working directory)
After
Before
顯示資料夾內容
ls -a
ls -l
ls -h
ls -R
還可以這樣用!
ls -alhR
cd
cd -
?
$ 變數取值
.
├── 20231022
│ ├── a.cpp
│ └── b.cpp
└── 20240107
├── 1.cpp
├── 2.cpp
├── 3.cpp
├── 4.cpp
└── a.out
.
├── 20231022
│ ├── a.cpp
│ └── b.cpp
└── 20240107
├── 1.cpp
├── 2.cpp
├── 3.cpp
├── 4.cpp
└── a.out
\(root\) 權限:
Linux 中的最高權限,可對系統進行任何操作,但不慎使用恐導致系統出錯
sudo su
關機
(不要再伺服器上用)
重新開機
符號 | 使用者類型 |
---|---|
u | user |
g | group |
o | others |
a | all |
符號 | 使用者類型 |
---|---|
+ | 增加 |
- | 減少 |
= | 設為 |
符號 | 使用者類型 |
---|---|
r | read |
w | write |
x | 執行 |
... | ... |
r (read) | w (write) | x (execute) |
---|---|---|
寫入 | 讀取 | 執行 |
4 | 2 | 1 |
權限數值合 0~7
user | group | all |
---|
三碼分別是三者權限
chmod u+x <file>
將 <file> 設為此 user 可以執行
chmod -r <file>
移除 user 讀 <file> 的權限
chmod 400 <file>
只有 user 可以讀,無其他權限
絕對沒有打錯字
必須先更新
sudo apt update
sudo apt upgrade
需使用 \(root\) 權限
他會問
Do you want to continue? [Y/n]
就輸入 \(Y\) 作確認
sudo apt install <package>
brew install <package>
sudo apt install neofetch
安裝 neofetch
他會問
Do you want to continue? [Y/n]
就輸入 \(Y\) 作確認
那就用 surfshark vpn
sudo apt install <package> -y
sudo apt remove <package>
sudo apt reinstall <package>
但顯然否...
作業系統
開機時間
記憶體大小
Linux Distro 圖標
對吧
那有什麼可用?
怎麼保密的?
ssh-keygen
ssh -i <key_file> <server_username>@<server_ip>
chmod 400 <key_file>
sudo adduser <name>
sudo usermod -aG sudo <name>
su <name>
sudo vim ~/.ssh/authorized_keys
那就來設定 ssh Host
Host <nick_name>
Hostname <server_ip>
Port 22
User <user_name>
identityfile ~/.ssh/id_rsa
以後都用
ssh <nick_name>
就好
scp <local_file> <nick_name>:<server_file/dir>
scp -r <local_dir> <nick_name>:<server_dir>
scp <nick_name>:<server_file> <local_file/dir>
scp -r <nick_name>:<server_file> <local_dir>
working directory
staging area
local repository
remote repository
git add
git commit
git push
git pull
git ch e ckout
git clone
今天要用的
git config --global user.email "<email>"
git config --global user.name "<name>"
ssh-keygen
cat ~/.ssh/id-rsa.pub
git clone <url>
git add .
git commit -m "<commit_message>"
git push
git pull
git chekcout <branch>
working directory
staging area
local repository
remote repository
git add
git commit
git push
git pull
git ch e ckout
git clone
sudo apt install nginx
ssh <server_name>
從 Github 下載 網站專案
git clone <url>
建議用 ssh
將網頁檔案複製到 /var/www/
sudo cp -r <repo_name> /var/www/
進到這個目錄 /etc/nginx/conf.d
我們要開始設定 nginx 了
cd /etc/nginx/conf.d
sudo vim <name.conf>
server{
listen 80;
listen [::]:80;
root /var/www/<reponame>;
server_name <domain>;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
改成網頁檔案路徑
改成網域域名
sudo nginx -t
sudo systemctl restart nginx
http 不會加密
telnet 也不會
沒關係 我們有 certbot
sudo snap install core; sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
cd /etc/nginx/sites-available/
sudo cp default <domain>
sudo ufw status
sudo ufw enable
sudo ufw allow ssh
sudo ufw allow "Nginx Full"
sudo certbot --nginx -d <domain>
sudo systemctl status snap.certbot.renew.service
sudo certbot renew --dry-run
sudo nginx -t
sudo systemctl restart nginx