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

 CSEEEECS,你選哪個?最好快點做決定,否則你的忠誠度,將受到最嚴格的檢驗…

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內的所有東西複製到dir2

exercise: 比較看看最後兩個指令

$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的檔案都設為755

Topic 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