Linux and Workstation
Quick Tutorial
2019 NTUCSIE Foresight Camp
林鶴哲
2019-10-06
Agenda
- Linux 介紹
- Shell 介紹
- 工作站介紹
- Terminal 操作技巧
- 檔案位置表示
- 檔案管理與操作
- 檔案和目錄權限
- 本地相關、上傳/下載
Goal
-
認識概念
- 知道Linux作業系統
- 認識Shell的功能和角色
- 應用概念
- 在工作站上進行正常操作及探索
- 學習 Linux 基礎檔案 / 目錄管
- 希望大家聽完之後能夠馬上會用
依據前瞻營審定課綱1081006號:

Poll
投票 歡迎來玩
- 有接觸過Linux
- 大略翻一下講義發現都會
- 直接讓我上台講比較快
- 快睡著了
- (茫 這是什麼
Topic 1
五分鐘懂Linux
What's Linux
Unix > Linux > Ubuntu
-
UNIX 是一多用戶、多工的作業系統,提供不同的使用者能夠同時在一台主機上進行各種服務項目。(猩猩)
-
Linux 是建構在UNIX上所開發出來的核心。(智人)
- Ubuntu是以Linux為核心所發行的一套作業系統。(白種人)
核心?那是什麼?



Application
Shell
Kernel

Application
Shell
Kernel

kernel:又稱「核心」
- 作業系統的最底層
- 負責硬體溝通、執行底層指令。


shell:又稱「殼」
- 負責將輸入(指令)轉換為kernel看得懂的語言。
application
- 由許多指令包裝而成變成一個應用程式。
/etc/passwd

System programming is waiting for you!
迷之音:很前瞻啊!
Topic 2
三分鐘懂工作站
學...學長...不好意思,請問資工館的工作站在幾樓,有規定開放時間嗎?

工作站介紹 & Why工作站
- 在機房中有21臺伺服器主機,稱之為「工作站」。提供給系上同學使用,這些主機大多使用Linux發行版之一的Debian。
- 優點:
- 連線方便 > 從開機成功到登入不用10秒
- 操作簡單 > 相對於 Google Drive 的功能不多
- 資源爆大 > 高能CPU / 超大記憶體和儲存空間
- 只要在電腦中安裝遠端連線程式,就能隨時隨地的透過網路存取並使用「工作站」。
工作站資訊
- linux[1-15].csie.ntu.edu.tw / linux[1-15].csie.org
- meow[1-2].csie.ntu.edu.tw
- oasis[1-3].csie.ntu.edu.tw
- bsd.csie.ntu.edu.tw
Topic 3
Log in Workstation
Recap

素養
「在變動世界的真實脈絡中,足以應對並求好的態度和知識。」"
-
試著generalize所學,摒棄case by case的答案。
Here's the story
德田大殿神
好久好久的故事,是媽媽告訴我
在好深好深的夜裡,有個德田大殿神...
糊里糊塗踩著無數人,你踏進了這所有椰子樹的學校,來到德田館,卻不知這是一個如同1984裡的世界,你沒有選擇,只能聽信德田大殿神——這個世界的Big Brother,三個字母:WTF (for Write, Test, Forever) 就道盡了一切的苦痛。
你有一條生路可以走,那就是成為大殿神的小殿神,這樣子,未來的日子,會好過一點,至少你知道怎麼用工作站。
小殿神提醒:
活動當中會有各種任務讓大家有充分練習的機會,如果看到「Dian」,就表示你通過了大殿神的小試煉,已經學會如何運用這個技巧/指令!
本殿慣用指令描述法
往後開始出現的「指令」形如下:
- "$": 以 prompt symbol 作為開頭
- option 代表可下的選項(通常調整輸出)
- parameter 是指令的參數
- 底線標注參數,代表需要自行填入,不要直接打上去…
$ command [-option] parameter1 parameter2 ...SSH

SSH
SSH (Secure Shell Portocol) 是一種安全的網路協定,提供我們遠端連線到伺服器的服務。
方法 1: 適用 Win10 / MacOS / Linux
$ ssh [account]@[IP] #通式
$ ssh b08902000@linux1.csie.org
$ ssh b08902000@linux1.csie.ntu.edu.tw方法 2: 適用其他 Windows / 另一些Win10
- 下載Putty (如第一頁投影片)

入殿通道
主線任務
入殿試煉
請在登入工作站後,在畫面中輸入以下指令:
yes | cp -r /home/student/07/b07902028/example . Where are we now?
Get back to the big picture


We're using bash as a shell language to communicate with kernel.
Topic 3.5
SSH-key (extended topic)
嫑密碼?SSH-key!
Topic 4
Linux 路徑表示
搭配 example/Dertian 食用
概念:每個檔案都有自己的位置

路徑開頭可以是什麼
~ home #家目錄,登入後進入的目錄
/ root directory #根目錄,所有目錄的起源
. working directory #當前目錄
.. parent directory #上一層 觀念
~ home
/ root directory
. working directory
.. parent directory-
一個檔案系統,只有一個根目錄 (/)。
-
一個使用者而言,只有一個家目錄。
-
對於一個使用者而言,~ 跟 / 不隨地而變,. 和 ..隨地而變。
-
絕對路徑:以 / 開頭,表示路徑從根目錄開始。
-
相對路徑:以 ./ (當前目錄)開頭,表示從當前目錄開始。
-
「路徑」預設是相對路徑,白話文:`./`可省略不寫。
相關指令
-
pwd -
ls -
cd
$pwd
-
print working directory,輸入你現在所在的目錄。
$pwd因應某些指令太重要了
記憶 == 連結
視覺
聽覺
echo method
口訣:print working directory for pwd
$ls
-
list, 列出本目錄(或是某指定目錄底下的檔案)
常用參數:
-a 列出包括隱藏檔(檔名開頭為一個點)的所有檔案 -l 清單格式列出,可看到檔案的目錄權限、時間戳、檔名 -t 依照最後編輯時間列出
$ ls dir #列出 ./dir 資料夾下的所有檔案
$ ls -a #清單列出當前目錄所有檔案(含隱藏檔)$ls -l

exercise: 找出德田館中披了隱形斗篷的教授們和他們的趣事(time permitting, feel free to ask XD)
$cd
-
change directory,前往指定的目錄。
$ cd ~ #(相當於`cd`,default會回到家目錄)
$ cd /home/student/08 #到/home/student/08這個目錄當中
$ cd .. #到上一層目錄
$ cd / #到根目錄exercise: 迷你殿神,星期一重修計程(R204),星期二上線代(R104),星期三在大一區混(Freshman),星期五上ML(R203),試著 trace 迷你殿神的一週吧!
Topic 5
Terminal 小技巧
搭配 example/terminal_tricks 目錄食用
tab鍵 / 上下鍵
-
按tab可以自動補足指令或目錄或檔案名稱,如果遇到多個可能的就會停在分岔點,連按兩次可以列出所有可能性。 - 按上下鍵可以重複使用已經輸入過的指令。
example: happy guy, bad guy, good guy 精神分裂
wildcard (*)
-
作用於路徑上,可用來一次指定多個檔案或目錄;「*」代表零個或任意多個字元。例如abc.c與abbcc都符合*c,但只有前者符合*.c。 - 注意不要跟後文的正規表達是混淆。
- 差別:wildcard for files, regex for text
example: cat *.c
[ctrl+c] / [ctrl+d]
-
按[ctrl+c]可以終止目前的程式,如果不小心寫到TLE或RE的時候很好用。
- 在標準輸入(stdin)中輸入[ctrl+d]代表EOF,表示文件結尾。
- 註:在 Windows 中的EOF是 [ctrl+z] 。
example: wicked guy 之亂
exit
-
離開當前執行的程式,ssh上工作站時,可以用這個指令來登出。
clear / [ctrl+l]
-
顧名思義就是清空目前畫面,不用一直按Enter,這樣很不
ElitE。
example: wicked guy 之亂
複製 / 貼上 / 刪除
-
複製 [ctrl+shift+C]
-
貼上 [ctrl+shift+V]
-
刪除已經打出來的指令 [ctrl+w] (one word) /
[ctrl+u] (whole line)
$man
-
manual,每當從網路上或是其他人口中得知一個新指令,好慌張,不知道怎麼用,怎麼辦?man絕對是你的好幫手!
-
學會讀懂man也是一門藝術
-
Example: $man date
-
exercise 請印出"2019-10-06 the 279 day of 2019"
緊急任務
資工系廢病
快去pheu...目錄找解藥,不然我們會死掉....
解藥是電電的東西....
緊急任務
資電學院
/example/CSEEAcademy
CSEE和EECS,你選哪個?最好快點做決定,否則你的忠誠度,將受到最嚴格的檢驗…
Topic 6
檔案管理
$touch
- 顧名思義就是點擊 / 戳 / 觸摸一個檔案,不存在就建立,可以用來改變時間戳(time stamp),就是ls -t的那個時間。
$ touch file #新增file,或是更改file的時間戳$cp
- copy,複製檔案。被複製的在前,複製出的在後,並且可以用路徑指定複製出的東西的位置。要複製整個目錄及底下的所有檔案及目錄要加上-r (recursively) 。
$ cp file1 file2 #在當前目錄將file1另存新檔為file2
$ cp file dir/ #將file複製到某個目錄當中
$ cp dir1/ dir2/ #
$ cp -r dir1/ dir2/ #將dir1內的所有東西複製到dir2exercise: 比較看看最後兩個指令
$mv
- move,移動或重新命名一個檔案或目錄
$ mv dir1/ dir2/ :'如果dir2不存在就將dir1重新命名為dir2
否則將整個dir1移動到dir2裡面'
$ mv file dir/ #將檔案file移動到目錄dir裡面
$ mv file1 file2 #將檔案file1重新命名為file2$rm
- remove,永久移除檔案,沒有進到垃圾桶這回事!
-
常用參數:
-r 遞迴地(recursively)移除某個目錄以及其底下所有檔案目錄 -f 強制移除(force),系統不會一一詢問(慎用!)
$ rm file #將file移除
$ rm -f *.c #將當前目錄以.c結尾的檔案都強制移除
$ rm -rf dir/ #將dir目錄下的所有檔案移除
$ rm -rf * #將當前資料夾所有檔案移除
$ sudo rm -rf / #將根目錄整個Bang不見(不要用...)$mkdir
- make directory,建立新的目錄。
$rmdir
- remove directory,移除空目錄,可用rm -r取代掉。
迷你任務
德田清道夫
尋常程式教書匠,學做德田掃地僧。
九宜生 <<退休後,當至機房為掃地僧。>>
我們段位不夠高,當個德田清道夫足矣。
嘗試用「一個指令」把204的垃圾清一清吧
再用另一個指令把AC的code裝到AC目錄裡
Topic 7
檔案權限
概念:決定一個(群)人可以access到檔案的程度
Recall: UNIX是多人、多工的作業系統

- 人:擁有者(user) / 同群組(group) / 其他人(others)
- 權力:讀(read) / 寫(write) / 執行(execute)
$chmod
- change mode,改變檔案或目錄的權限。通常以兩種方式下達指令:
$ chmod [ugoa][+-][rwx] file/dir#通式:將[人]對file/dir[增減] [某權限]
$ chmod +rw file #將全部人對file新增讀寫權
$ chmod u+x file #新增自己對file的執行權
$ chmod go-r file #移除同群組和其他人對file的讀取權- 直接指定:u代表user,g代表group,o代表other,+/-代表要新增/刪除某權限。
$chmod
- change mode,改變檔案或目錄的權限。通常以兩種方式下達指令:
$ chmod 700 dir/ #目錄權限:drwx------
$ chmod 644 file #目錄權限:-rw-r--r---
數字表示法:把rwx想成二進位,其中r = 4,w = 2,x = 1,沒有該權限為0。

Advanced: ACL (access-control list)
Exercise

$ chmod a+w test
$ chmod ug+x test
$ chmod 742 test
Dicuss
- 私人檔案:
- 公開檔案:
- 公開目錄:
- 知道路徑才能access的目錄:
???
700 -rwx------
711 drwx--x--x
644 -rw-r--r--
755 drwxr-xr-x
???
???
???
$find [path] [option] [expression]
很強大的搜尋指令,但時間花用的很大,它支援非常多的搜尋選項,可以依照權限、擁有者、群組、檔案類型、日期與大小等條件來搜尋,需要時可呼叫man find。 常用參數: -name #指定檔名搜尋 -perm mode #搜尋檔案權限為mode的檔案 -exec command #將搜尋出的結果,使用其他指令再處理
$ find ~ –name lost #在~下搜尋lost,預設為當前目錄
$ find –perm 777 –exec chmod 755 {} +
#將權限為777的檔案都設為755Topic 8
本地相關 / 上傳 / 下載
$passwd
- password,變更密碼。
$ sudo apt-get install vim #安裝vim
#apt-get是一個安裝套件的指令
$ sudo 給我錢$sudo
- superdoer,以superuser的權限執行指令,在工作站上不能用,有些跟安全性或系統內部的指令需要有superuser的權限才能進行動作。
$sftp user@host[:dir]
- SSH File Transfer Program,方便連續上傳/下載同目錄內的多個檔案。
$ sftp b08902000@linux1.csie.org
##登入之後:
$ get remote-path [local-path] #從remote-path下載到local-path
#如果是下載目錄要-r
$ put local-path [remote-path] #從local-path 上傳到remote-path
#如果是上傳目錄一樣要-r
$ exit / quit / bye #登出
$ cd / ls #移動遠端路徑/查看遠端資料$scp
-
Secure Copy Protocol,方便一個一個獨立上傳/下載,也可以-r上下載整個目錄。範例中的path都可以省略,省略就等同以家目錄為path,但冒號一定要留著。
$ scp file1 [file2 file3 …] b08902000@linux1.csie.org:dir
#把檔案從本地端上傳到遠端的目錄
$ scp b08902000@linux1.csie.org:~/file1 dir/
#把遠端檔案下載到本地目錄$wget URL
- web get(編者自己掰的),從web上下載檔案下來到工作站當中。
$ wget 140.112.31.208/images/02.png #玩看看!高階任務
政治進入德田大殿
殿神不出門,能知天下事。
把在example/color上的圖片 下載下來,分類到example/color的目錄吧!
你需要:
1. 將圖片下載下來
2. 按照世俗價值觀分類圖檔,上傳到color下對應的目錄
3. 將每張按照所在目錄改名為 xx.jpg,如orange.jpg、blue.jpg。
3. 在color下輸入 ./check.sh,output會告訴你是否通過試煉。
Special Thanks: B07 徐維謙 撰寫 check.sh
故事來到一個段落,你通過了試煉(應該吧),自此,你成為了德田小殿神,至於大殿神嗎,依舊不知道究竟是何方神聖...
後面的講者應該不會那麼吵了...
To be continued...
感謝大家還沒(或已經)睡著
希望對大家來說太簡單!
Let's call it a day! (X
Take 10! (O
To be continued...

Foresight Camp
By maclin726
Foresight Camp
2019 NTUCSIE 前瞻營
- 1,820